@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2251 -2
- package/dist/Algebra-CGG4oae3.mjs +433 -0
- package/dist/Algebra-CGG4oae3.mjs.map +1 -0
- package/dist/Algebra-uGsIEOUA.d.mts +446 -0
- package/dist/Ast-CPRZmBvk.mjs +552 -0
- package/dist/Ast-CPRZmBvk.mjs.map +1 -0
- package/dist/Ast-vcw2W-lf.d.mts +827 -0
- package/dist/Bindings-Ck3m7JRC.mjs +249 -0
- package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
- package/dist/Bindings-DiKpBd7f.d.mts +153 -0
- package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
- package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
- package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
- package/dist/ClientFormats-CXomkXLV.mjs +73 -0
- package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
- package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
- package/dist/Csv2Json-DynEcwCh.mjs +194 -0
- package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
- package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
- package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
- package/dist/Dataset-BlmlcI7J.mjs +782 -0
- package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
- package/dist/Dataset-DS3ESOcO.d.mts +426 -0
- package/dist/Dataset.d.mts +2 -0
- package/dist/Dataset.mjs +1 -0
- package/dist/Datatype-CxMpamHC.d.mts +212 -0
- package/dist/Datatype-DQvkNkiH.mjs +1001 -0
- package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
- package/dist/Dialect-8ChFj5EX.d.mts +113 -0
- package/dist/Dialect-CzVH38uo.mjs +165 -0
- package/dist/Dialect-CzVH38uo.mjs.map +1 -0
- package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
- package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
- package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
- package/dist/DublinCore-AnwqxRx6.mjs +137 -0
- package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
- package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
- package/dist/Engine-CYPB3g4h.d.mts +144 -0
- package/dist/Engine-DF8PN7g-.mjs +872 -0
- package/dist/Engine-DF8PN7g-.mjs.map +1 -0
- package/dist/Errors-CMdV1RhU.mjs +37 -0
- package/dist/Errors-CMdV1RhU.mjs.map +1 -0
- package/dist/Errors-u2bDjUeM.d.mts +30 -0
- package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
- package/dist/Evaluator-DOY2-guC.mjs +281 -0
- package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
- package/dist/Exif-CpqniYQd.d.mts +78 -0
- package/dist/Exif-DjkCfEB-.mjs +89 -0
- package/dist/Exif-DjkCfEB-.mjs.map +1 -0
- package/dist/Expression-BIMMvduQ.mjs +230 -0
- package/dist/Expression-BIMMvduQ.mjs.map +1 -0
- package/dist/Expression-W8A9cyX7.d.mts +89 -0
- package/dist/Extract-Bop85jES.mjs +220 -0
- package/dist/Extract-Bop85jES.mjs.map +1 -0
- package/dist/Extract-C_pCvuTC.d.mts +88 -0
- package/dist/Federation-BcNrozc1.d.mts +52 -0
- package/dist/Federation-CHScBkaK.mjs +130 -0
- package/dist/Federation-CHScBkaK.mjs.map +1 -0
- package/dist/Functions-AvjNcId_.mjs +1346 -0
- package/dist/Functions-AvjNcId_.mjs.map +1 -0
- package/dist/Functions-OQJZP-F6.d.mts +111 -0
- package/dist/Generator-C52mmq01.d.mts +50 -0
- package/dist/Generator-D3utCJC7.mjs +205 -0
- package/dist/Generator-D3utCJC7.mjs.map +1 -0
- package/dist/Grammar-CPlSxGH6.mjs +200 -0
- package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
- package/dist/Grammar-CRhnRoCu.d.mts +148 -0
- package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
- package/dist/Grammar-mQ8CgE1M.mjs +258 -0
- package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
- package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
- package/dist/GraphStore-DvbqwKy1.mjs +212 -0
- package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
- package/dist/Iri-BB8Ks-BF.d.mts +84 -0
- package/dist/Iri-Cr92gsQV.mjs +232 -0
- package/dist/Iri-Cr92gsQV.mjs.map +1 -0
- package/dist/Iri.d.mts +2 -0
- package/dist/Iri.mjs +1 -0
- package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
- package/dist/Isomorphism-DInKnWIy.mjs +390 -0
- package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
- package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
- package/dist/Isomorphism.d.mts +2 -0
- package/dist/Isomorphism.mjs +1 -0
- package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
- package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
- package/dist/JsonLd-DobFrQNa.d.mts +242 -0
- package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
- package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
- package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
- package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
- package/dist/LanguageTag.d.mts +2 -0
- package/dist/LanguageTag.mjs +1 -0
- package/dist/Lexical-Cg0JHrf6.mjs +243 -0
- package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
- package/dist/Lexical-D3zySYVS.d.mts +163 -0
- package/dist/Manifest-B6xf6mUc.mjs +148 -0
- package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
- package/dist/Manifest-DQUMRBFr.d.mts +98 -0
- package/dist/Mapping-BgG74x3U.d.mts +63 -0
- package/dist/Mapping-Dc1ZGirk.mjs +259 -0
- package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
- package/dist/Mcp-1DwTTKOK.mjs +48 -0
- package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
- package/dist/Mcp-d-pX9erx.d.mts +25 -0
- package/dist/Message-CK_DGQuu.mjs +95 -0
- package/dist/Message-CK_DGQuu.mjs.map +1 -0
- package/dist/Message-fIvTJSXM.d.mts +49 -0
- package/dist/Metadata-BbffwGDZ.mjs +445 -0
- package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
- package/dist/Metadata-CEt3yc1-.d.mts +901 -0
- package/dist/Metadata-D4HsQNXr.mjs +1273 -0
- package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
- package/dist/Metadata-nzS7QKRj.d.mts +350 -0
- package/dist/Model-DaMmxurZ.d.mts +293 -0
- package/dist/Model-DlPzRYhF.mjs +528 -0
- package/dist/Model-DlPzRYhF.mjs.map +1 -0
- package/dist/N3-BzyV-KIH.mjs +974 -0
- package/dist/N3-BzyV-KIH.mjs.map +1 -0
- package/dist/N3-DSLnonDn.d.mts +100 -0
- package/dist/NQuads-C1VBOJ3-.mjs +117 -0
- package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
- package/dist/NQuads-FjFZikFg.d.mts +76 -0
- package/dist/NTriples-D-kLSEAf.mjs +120 -0
- package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
- package/dist/NTriples-D34OspfW.d.mts +76 -0
- package/dist/Namespace-ClTUO_ya.d.mts +42 -0
- package/dist/Namespace-DHFIsORd.mjs +75 -0
- package/dist/Namespace-DHFIsORd.mjs.map +1 -0
- package/dist/Namespace.d.mts +2 -0
- package/dist/Namespace.mjs +1 -0
- package/dist/Namespaces-Bz85vpjW.mjs +235 -0
- package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
- package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
- package/dist/Optimizer-BWWQRQPY.mjs +168 -0
- package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
- package/dist/Optimizer-DUpUow6k.d.mts +26 -0
- package/dist/Options-BLBGL4HE.mjs +72 -0
- package/dist/Options-BLBGL4HE.mjs.map +1 -0
- package/dist/Options-BommQwP9.d.mts +127 -0
- package/dist/Packet-CA76wVX3.mjs +197 -0
- package/dist/Packet-CA76wVX3.mjs.map +1 -0
- package/dist/Packet-Cy5g6XuW.d.mts +130 -0
- package/dist/Parser-p1Gyr0QN.d.mts +85 -0
- package/dist/Parser-xARsOWXk.mjs +1317 -0
- package/dist/Parser-xARsOWXk.mjs.map +1 -0
- package/dist/Path-B20Yp8KE.mjs +284 -0
- package/dist/Path-B20Yp8KE.mjs.map +1 -0
- package/dist/Path-DRB8e-Zn.d.mts +181 -0
- package/dist/Pdf-B9RZn--8.d.mts +77 -0
- package/dist/Pdf-CKK6dkZn.mjs +89 -0
- package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
- package/dist/PdfA-CUjSuntT.d.mts +109 -0
- package/dist/PdfA-CleOhuL6.mjs +124 -0
- package/dist/PdfA-CleOhuL6.mjs.map +1 -0
- package/dist/Photoshop-CiHo80qV.mjs +233 -0
- package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
- package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
- package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
- package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
- package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
- package/dist/PrefixMap.d.mts +2 -0
- package/dist/PrefixMap.mjs +1 -0
- package/dist/Processor-CMmecFsb.mjs +198 -0
- package/dist/Processor-CMmecFsb.mjs.map +1 -0
- package/dist/Processor-FJPvO0CB.d.mts +435 -0
- package/dist/Protocol-BA7OkNgp.mjs +202 -0
- package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
- package/dist/Protocol-DlSoiIKB.d.mts +108 -0
- package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
- package/dist/Query-D9A6LOpP.mjs +364 -0
- package/dist/Query-D9A6LOpP.mjs.map +1 -0
- package/dist/Query-KqSkTYyG.d.mts +96 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
- package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
- package/dist/RdfJs-D6-49XB5.mjs +86 -0
- package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
- package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
- package/dist/RdfJs.d.mts +2 -0
- package/dist/RdfJs.mjs +1 -0
- package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
- package/dist/RdfJson-BNocgW4f.mjs +548 -0
- package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
- package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
- package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
- package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
- package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
- package/dist/Rdfs-CyY2wVHI.mjs +167 -0
- package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
- package/dist/Rdfs.d.mts +2 -0
- package/dist/Rdfs.mjs +1 -0
- package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
- package/dist/Reasoner-Cw90zrjv.mjs +798 -0
- package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
- package/dist/Reification-BmN4EfnM.d.mts +40 -0
- package/dist/Reification-dpqQvjDE.mjs +82 -0
- package/dist/Reification-dpqQvjDE.mjs.map +1 -0
- package/dist/Reification.d.mts +2 -0
- package/dist/Reification.mjs +1 -0
- package/dist/Report-XHs8htzK.mjs +121 -0
- package/dist/Report-XHs8htzK.mjs.map +1 -0
- package/dist/Report-hcXsc_19.d.mts +115 -0
- package/dist/Resource-B1cI8FyJ.d.mts +218 -0
- package/dist/Resource-sIEeNh15.mjs +374 -0
- package/dist/Resource-sIEeNh15.mjs.map +1 -0
- package/dist/Resource.d.mts +2 -0
- package/dist/Resource.mjs +1 -0
- package/dist/Results-BVNEC-Wt.d.mts +277 -0
- package/dist/Results-peJjGA2V.mjs +621 -0
- package/dist/Results-peJjGA2V.mjs.map +1 -0
- package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
- package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
- package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
- package/dist/SemAct-CDchtk49.d.mts +96 -0
- package/dist/SemAct-CmyT4yI8.mjs +118 -0
- package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
- package/dist/Serialization-DP9H5bYQ.mjs +514 -0
- package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
- package/dist/Serialization-Df8iVauT.d.mts +392 -0
- package/dist/Serialization.d.mts +2 -0
- package/dist/Serialization.mjs +1 -0
- package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
- package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
- package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
- package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
- package/dist/ShExC-Ctf-06CL.d.mts +67 -0
- package/dist/ShExC-DJbB19i3.mjs +1181 -0
- package/dist/ShExC-DJbB19i3.mjs.map +1 -0
- package/dist/ShExError-BeYFD9rv.d.mts +61 -0
- package/dist/ShExError-CVtq2NnM.mjs +64 -0
- package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
- package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
- package/dist/ShExJ-COiPd9Xw.mjs +532 -0
- package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
- package/dist/ShExR-ByR4mCh-.mjs +480 -0
- package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
- package/dist/ShExR-CqONNNBz.d.mts +40 -0
- package/dist/ShapeMap-C422pxKl.d.mts +140 -0
- package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
- package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
- package/dist/Shapes-18GjfyBV.mjs +597 -0
- package/dist/Shapes-18GjfyBV.mjs.map +1 -0
- package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
- package/dist/Sparql-BiYFMSpl.mjs +29 -0
- package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
- package/dist/Sparql-DecpWTPh.d.mts +97 -0
- package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
- package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
- package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
- package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
- package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
- package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
- package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
- package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
- package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
- package/dist/Store-D0jmVfb3.d.mts +166 -0
- package/dist/Store-DH3Ow1GO.mjs +162 -0
- package/dist/Store-DH3Ow1GO.mjs.map +1 -0
- package/dist/Structure-BjMo4Bkc.mjs +334 -0
- package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
- package/dist/Structure-n4CmDiab.d.mts +63 -0
- package/dist/Table-BGgm9nbM.mjs +538 -0
- package/dist/Table-BGgm9nbM.mjs.map +1 -0
- package/dist/Table-C3reiVrb.d.mts +261 -0
- package/dist/Term-B_4ezyXq.d.mts +619 -0
- package/dist/Term-CFLG1qu4.mjs +991 -0
- package/dist/Term-CFLG1qu4.mjs.map +1 -0
- package/dist/Term.d.mts +2 -0
- package/dist/Term.mjs +1 -0
- package/dist/TermCodec-CDZiEztW.mjs +397 -0
- package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
- package/dist/TermCodec-_03bDXr0.d.mts +209 -0
- package/dist/TermCodec.d.mts +2 -0
- package/dist/TermCodec.mjs +1 -0
- package/dist/TermJson-BOPe0yve.d.mts +232 -0
- package/dist/TermJson-FAg3lvjl.mjs +142 -0
- package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
- package/dist/TermJson.d.mts +2 -0
- package/dist/TermJson.mjs +1 -0
- package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
- package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
- package/dist/TermSchema-DBO6MroX.d.mts +6 -0
- package/dist/Testing-B-aPCpmu.mjs +63 -0
- package/dist/Testing-B-aPCpmu.mjs.map +1 -0
- package/dist/Testing-CF6s8P3O.d.mts +53 -0
- package/dist/Tiff-CR-2QeSI.d.mts +148 -0
- package/dist/Tiff-DlsOlZPM.mjs +169 -0
- package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
- package/dist/Tools-7MdRKccr.d.mts +583 -0
- package/dist/Tools-ryxphZbI.mjs +329 -0
- package/dist/Tools-ryxphZbI.mjs.map +1 -0
- package/dist/Translate-B0YKKANS.d.mts +37 -0
- package/dist/Translate-gzWPq0Ia.mjs +308 -0
- package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
- package/dist/Translation-DC9rLm2y.mjs +1535 -0
- package/dist/Translation-DC9rLm2y.mjs.map +1 -0
- package/dist/Translation-K4L9XBqX.d.mts +103 -0
- package/dist/TriG-BkqtqZ6Y.mjs +125 -0
- package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
- package/dist/TriG-xDjdDatp.d.mts +86 -0
- package/dist/Turtle-Bv1_bisW.d.mts +85 -0
- package/dist/Turtle-CZVUOtwl.mjs +133 -0
- package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
- package/dist/ValidationReport-DBdJshW5.mjs +285 -0
- package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
- package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
- package/dist/Validator-227ff9Rn.d.mts +179 -0
- package/dist/Validator-BzXMKDeJ.mjs +1162 -0
- package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
- package/dist/Validator-Dl8cih5V.d.mts +207 -0
- package/dist/Validator-DmUfMbpL.mjs +568 -0
- package/dist/Validator-DmUfMbpL.mjs.map +1 -0
- package/dist/Vocab-DceKywpq.mjs +168 -0
- package/dist/Vocab-DceKywpq.mjs.map +1 -0
- package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
- package/dist/Vocab-Do56UgBX.d.mts +81 -0
- package/dist/Vocab-TfpWG1Ne.mjs +118 -0
- package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
- package/dist/Vocab.d.mts +2 -0
- package/dist/Vocab.mjs +1 -0
- package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
- package/dist/Xml-B7iihYCS.mjs +976 -0
- package/dist/Xml-B7iihYCS.mjs.map +1 -0
- package/dist/Xml-CmfHS7SW.d.mts +267 -0
- package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
- package/dist/Xmp-DCGN9pOD.mjs +307 -0
- package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
- package/dist/XmpBasic-CP38jpR_.mjs +73 -0
- package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
- package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
- package/dist/XmpMM-BfL_TgJF.mjs +73 -0
- package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
- package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
- package/dist/XmpRights-BKPtoI5L.mjs +73 -0
- package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
- package/dist/XmpRights-CaALZQz2.d.mts +63 -0
- package/dist/Xsd-Cdgx5zRB.mjs +405 -0
- package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
- package/dist/Xsd-D2elNhSm.d.mts +187 -0
- package/dist/Xsd.d.mts +2 -0
- package/dist/Xsd.mjs +1 -0
- package/dist/accessors-CEjaojuQ.mjs +28 -0
- package/dist/accessors-CEjaojuQ.mjs.map +1 -0
- package/dist/codec-Lb2T96rv.d.mts +20 -0
- package/dist/codec-QNo7IdJF.mjs +389 -0
- package/dist/codec-QNo7IdJF.mjs.map +1 -0
- package/dist/csvw/Csv2Json.d.mts +2 -0
- package/dist/csvw/Csv2Json.mjs +1 -0
- package/dist/csvw/Csv2Rdf.d.mts +2 -0
- package/dist/csvw/Csv2Rdf.mjs +1 -0
- package/dist/csvw/Datatype.d.mts +2 -0
- package/dist/csvw/Datatype.mjs +1 -0
- package/dist/csvw/Metadata.d.mts +2 -0
- package/dist/csvw/Metadata.mjs +1 -0
- package/dist/csvw/Processor.d.mts +2 -0
- package/dist/csvw/Processor.mjs +1 -0
- package/dist/csvw/Report.d.mts +2 -0
- package/dist/csvw/Report.mjs +1 -0
- package/dist/csvw/Table.d.mts +2 -0
- package/dist/csvw/Table.mjs +1 -0
- package/dist/csvw/index.d.mts +8 -0
- package/dist/csvw/index.mjs +8 -0
- package/dist/index-Cms2TYfC.d.mts +16 -0
- package/dist/index-Ct8xFmRs.d.mts +7 -0
- package/dist/index-D4QFwOjm.d.mts +28 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.mjs +17 -0
- package/dist/jsonld/DocumentLoader.d.mts +2 -0
- package/dist/jsonld/DocumentLoader.mjs +1 -0
- package/dist/jsonld/JsonLd.d.mts +2 -0
- package/dist/jsonld/JsonLd.mjs +1 -0
- package/dist/jsonld/JsonLdError.d.mts +2 -0
- package/dist/jsonld/JsonLdError.mjs +1 -0
- package/dist/jsonld/index.d.mts +4 -0
- package/dist/jsonld/index.mjs +4 -0
- package/dist/lists-D-OpQ0Ir.mjs +77 -0
- package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
- package/dist/loop-D5-gNx9K.mjs +21 -0
- package/dist/loop-D5-gNx9K.mjs.map +1 -0
- package/dist/loop-DZ2hXlr_.mjs +21 -0
- package/dist/loop-DZ2hXlr_.mjs.map +1 -0
- package/dist/n3/Isomorphism.d.mts +2 -0
- package/dist/n3/Isomorphism.mjs +1 -0
- package/dist/n3/Mapping.d.mts +2 -0
- package/dist/n3/Mapping.mjs +1 -0
- package/dist/n3/Model.d.mts +2 -0
- package/dist/n3/Model.mjs +1 -0
- package/dist/n3/N3.d.mts +2 -0
- package/dist/n3/N3.mjs +1 -0
- package/dist/n3/Reasoner.d.mts +2 -0
- package/dist/n3/Reasoner.mjs +2 -0
- package/dist/n3/Vocab.d.mts +2 -0
- package/dist/n3/Vocab.mjs +1 -0
- package/dist/n3/index.d.mts +7 -0
- package/dist/n3/index.mjs +7 -0
- package/dist/ntriples/Grammar.d.mts +2 -0
- package/dist/ntriples/Grammar.mjs +1 -0
- package/dist/ntriples/Lexical.d.mts +2 -0
- package/dist/ntriples/Lexical.mjs +1 -0
- package/dist/ntriples/NQuads.d.mts +2 -0
- package/dist/ntriples/NQuads.mjs +1 -0
- package/dist/ntriples/NTriples.d.mts +2 -0
- package/dist/ntriples/NTriples.mjs +1 -0
- package/dist/ntriples/index.d.mts +5 -0
- package/dist/ntriples/index.mjs +5 -0
- package/dist/rdfjson/RdfJson.d.mts +2 -0
- package/dist/rdfjson/RdfJson.mjs +1 -0
- package/dist/rdfjson/index.d.mts +2 -0
- package/dist/rdfjson/index.mjs +1 -0
- package/dist/rdfxml/RdfXml.d.mts +2 -0
- package/dist/rdfxml/RdfXml.mjs +1 -0
- package/dist/rdfxml/Xml.d.mts +2 -0
- package/dist/rdfxml/Xml.mjs +1 -0
- package/dist/rdfxml/index.d.mts +3 -0
- package/dist/rdfxml/index.mjs +3 -0
- package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
- package/dist/serialize-96KBvKaf.mjs +1463 -0
- package/dist/serialize-96KBvKaf.mjs.map +1 -0
- package/dist/serialize-DsoXdM6n.d.mts +37 -0
- package/dist/shacl/Message.d.mts +2 -0
- package/dist/shacl/Message.mjs +1 -0
- package/dist/shacl/Path.d.mts +2 -0
- package/dist/shacl/Path.mjs +1 -0
- package/dist/shacl/Shapes.d.mts +2 -0
- package/dist/shacl/Shapes.mjs +1 -0
- package/dist/shacl/Sparql.d.mts +2 -0
- package/dist/shacl/Sparql.mjs +1 -0
- package/dist/shacl/ValidationReport.d.mts +2 -0
- package/dist/shacl/ValidationReport.mjs +1 -0
- package/dist/shacl/Validator.d.mts +2 -0
- package/dist/shacl/Validator.mjs +1 -0
- package/dist/shacl/Vocabulary.d.mts +2 -0
- package/dist/shacl/Vocabulary.mjs +1 -0
- package/dist/shacl/index.d.mts +9 -0
- package/dist/shacl/index.mjs +8 -0
- package/dist/shex/SemAct.d.mts +2 -0
- package/dist/shex/SemAct.mjs +1 -0
- package/dist/shex/ShExC.d.mts +2 -0
- package/dist/shex/ShExC.mjs +1 -0
- package/dist/shex/ShExError.d.mts +2 -0
- package/dist/shex/ShExError.mjs +1 -0
- package/dist/shex/ShExJ.d.mts +2 -0
- package/dist/shex/ShExJ.mjs +2 -0
- package/dist/shex/ShExR.d.mts +2 -0
- package/dist/shex/ShExR.mjs +1 -0
- package/dist/shex/ShapeMap.d.mts +2 -0
- package/dist/shex/ShapeMap.mjs +1 -0
- package/dist/shex/Structure.d.mts +2 -0
- package/dist/shex/Structure.mjs +2 -0
- package/dist/shex/Validator.d.mts +2 -0
- package/dist/shex/Validator.mjs +4 -0
- package/dist/shex/index.d.mts +9 -0
- package/dist/shex/index.mjs +9 -0
- package/dist/sparql/Algebra.d.mts +2 -0
- package/dist/sparql/Algebra.mjs +1 -0
- package/dist/sparql/Ast.d.mts +2 -0
- package/dist/sparql/Ast.mjs +1 -0
- package/dist/sparql/Bindings.d.mts +2 -0
- package/dist/sparql/Bindings.mjs +1 -0
- package/dist/sparql/ClientErrors.d.mts +2 -0
- package/dist/sparql/ClientErrors.mjs +1 -0
- package/dist/sparql/ClientFormats.d.mts +2 -0
- package/dist/sparql/ClientFormats.mjs +1 -0
- package/dist/sparql/Engine.d.mts +2 -0
- package/dist/sparql/Engine.mjs +1 -0
- package/dist/sparql/Errors.d.mts +2 -0
- package/dist/sparql/Errors.mjs +1 -0
- package/dist/sparql/Expression.d.mts +2 -0
- package/dist/sparql/Expression.mjs +1 -0
- package/dist/sparql/Federation.d.mts +2 -0
- package/dist/sparql/Federation.mjs +1 -0
- package/dist/sparql/Functions.d.mts +2 -0
- package/dist/sparql/Functions.mjs +1 -0
- package/dist/sparql/Generator.d.mts +2 -0
- package/dist/sparql/Generator.mjs +1 -0
- package/dist/sparql/GraphStore.d.mts +2 -0
- package/dist/sparql/GraphStore.mjs +1 -0
- package/dist/sparql/Optimizer.d.mts +2 -0
- package/dist/sparql/Optimizer.mjs +1 -0
- package/dist/sparql/Options.d.mts +2 -0
- package/dist/sparql/Options.mjs +1 -0
- package/dist/sparql/Parser.d.mts +2 -0
- package/dist/sparql/Parser.mjs +1 -0
- package/dist/sparql/Protocol.d.mts +2 -0
- package/dist/sparql/Protocol.mjs +1 -0
- package/dist/sparql/ProtocolErrors.d.mts +2 -0
- package/dist/sparql/ProtocolErrors.mjs +1 -0
- package/dist/sparql/QueryBuilder.d.mts +2 -0
- package/dist/sparql/QueryBuilder.mjs +1 -0
- package/dist/sparql/Results.d.mts +2 -0
- package/dist/sparql/Results.mjs +1 -0
- package/dist/sparql/ResultsStream.d.mts +2 -0
- package/dist/sparql/ResultsStream.mjs +1 -0
- package/dist/sparql/ServerFormats.d.mts +2 -0
- package/dist/sparql/ServerFormats.mjs +1 -0
- package/dist/sparql/ServiceDescription.d.mts +2 -0
- package/dist/sparql/ServiceDescription.mjs +1 -0
- package/dist/sparql/SparqlClient.d.mts +2 -0
- package/dist/sparql/SparqlClient.mjs +1 -0
- package/dist/sparql/SparqlServer.d.mts +2 -0
- package/dist/sparql/SparqlServer.mjs +1 -0
- package/dist/sparql/Store.d.mts +2 -0
- package/dist/sparql/Store.mjs +1 -0
- package/dist/sparql/TermSchema.d.mts +3 -0
- package/dist/sparql/TermSchema.mjs +2 -0
- package/dist/sparql/Testing.d.mts +2 -0
- package/dist/sparql/Testing.mjs +1 -0
- package/dist/sparql/Translate.d.mts +2 -0
- package/dist/sparql/Translate.mjs +1 -0
- package/dist/sparql/ai/Mcp.d.mts +2 -0
- package/dist/sparql/ai/Mcp.mjs +1 -0
- package/dist/sparql/ai/Tools.d.mts +2 -0
- package/dist/sparql/ai/Tools.mjs +1 -0
- package/dist/sparql/ai/index.d.mts +3 -0
- package/dist/sparql/ai/index.mjs +3 -0
- package/dist/sparql/index.d.mts +30 -0
- package/dist/sparql/index.mjs +29 -0
- package/dist/sparql/shacl/Evaluator.d.mts +2 -0
- package/dist/sparql/shacl/Evaluator.mjs +1 -0
- package/dist/sparql/shacl/Query.d.mts +2 -0
- package/dist/sparql/shacl/Query.mjs +1 -0
- package/dist/sparql/shacl/index.d.mts +3 -0
- package/dist/sparql/shacl/index.mjs +3 -0
- package/dist/sparql/sql/Dialect.d.mts +2 -0
- package/dist/sparql/sql/Dialect.mjs +1 -0
- package/dist/sparql/sql/SqlStore.d.mts +2 -0
- package/dist/sparql/sql/SqlStore.mjs +1 -0
- package/dist/sparql/sql/Translation.d.mts +2 -0
- package/dist/sparql/sql/Translation.mjs +1 -0
- package/dist/sparql/sql/index.d.mts +4 -0
- package/dist/sparql/sql/index.mjs +4 -0
- package/dist/stringMap-D5YIpYtR.mjs +38 -0
- package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
- package/dist/tokens-C6BzeodQ.mjs +24 -0
- package/dist/tokens-C6BzeodQ.mjs.map +1 -0
- package/dist/turtle/Grammar.d.mts +3 -0
- package/dist/turtle/Grammar.mjs +3 -0
- package/dist/turtle/Manifest.d.mts +2 -0
- package/dist/turtle/Manifest.mjs +1 -0
- package/dist/turtle/TriG.d.mts +2 -0
- package/dist/turtle/TriG.mjs +1 -0
- package/dist/turtle/Turtle.d.mts +2 -0
- package/dist/turtle/Turtle.mjs +1 -0
- package/dist/turtle/index.d.mts +5 -0
- package/dist/turtle/index.mjs +5 -0
- package/dist/xmp/DublinCore.d.mts +2 -0
- package/dist/xmp/DublinCore.mjs +1 -0
- package/dist/xmp/Exif.d.mts +2 -0
- package/dist/xmp/Exif.mjs +1 -0
- package/dist/xmp/Extract.d.mts +2 -0
- package/dist/xmp/Extract.mjs +1 -0
- package/dist/xmp/Metadata.d.mts +2 -0
- package/dist/xmp/Metadata.mjs +1 -0
- package/dist/xmp/Namespaces.d.mts +2 -0
- package/dist/xmp/Namespaces.mjs +1 -0
- package/dist/xmp/Packet.d.mts +2 -0
- package/dist/xmp/Packet.mjs +1 -0
- package/dist/xmp/Pdf.d.mts +2 -0
- package/dist/xmp/Pdf.mjs +1 -0
- package/dist/xmp/PdfA.d.mts +2 -0
- package/dist/xmp/PdfA.mjs +1 -0
- package/dist/xmp/Photoshop.d.mts +2 -0
- package/dist/xmp/Photoshop.mjs +1 -0
- package/dist/xmp/Tiff.d.mts +2 -0
- package/dist/xmp/Tiff.mjs +1 -0
- package/dist/xmp/Xmp.d.mts +2 -0
- package/dist/xmp/Xmp.mjs +3 -0
- package/dist/xmp/XmpBasic.d.mts +2 -0
- package/dist/xmp/XmpBasic.mjs +1 -0
- package/dist/xmp/XmpMM.d.mts +2 -0
- package/dist/xmp/XmpMM.mjs +1 -0
- package/dist/xmp/XmpRights.d.mts +2 -0
- package/dist/xmp/XmpRights.mjs +1 -0
- package/dist/xmp/index.d.mts +15 -0
- package/dist/xmp/index.mjs +15 -0
- package/package.json +195 -3
- package/src/Dataset.ts +1085 -0
- package/src/Iri.ts +322 -0
- package/src/Isomorphism.ts +319 -0
- package/src/LanguageTag.ts +98 -0
- package/src/Namespace.ts +100 -0
- package/src/PrefixMap.ts +117 -0
- package/src/RdfJs.ts +146 -0
- package/src/Rdfs.ts +241 -0
- package/src/Reification.ts +103 -0
- package/src/Resource.ts +873 -0
- package/src/Serialization.ts +775 -0
- package/src/Term.ts +1300 -0
- package/src/TermCodec.ts +505 -0
- package/src/TermJson.ts +313 -0
- package/src/Vocab.ts +161 -0
- package/src/Xsd.ts +573 -0
- package/src/csvw/Csv2Json.ts +265 -0
- package/src/csvw/Csv2Rdf.ts +268 -0
- package/src/csvw/Datatype.ts +589 -0
- package/src/csvw/Metadata.ts +1523 -0
- package/src/csvw/Processor.ts +276 -0
- package/src/csvw/Report.ts +135 -0
- package/src/csvw/Table.ts +759 -0
- package/src/csvw/index.ts +22 -0
- package/src/csvw/internal/dateFormat.ts +202 -0
- package/src/csvw/internal/json.ts +104 -0
- package/src/csvw/internal/numberFormat.ts +369 -0
- package/src/csvw/internal/object.ts +23 -0
- package/src/csvw/internal/uriTemplate.ts +130 -0
- package/src/csvw/internal/url.ts +93 -0
- package/src/csvw/internal/vocab.ts +282 -0
- package/src/index.ts +40 -0
- package/src/internal/arbitrary.ts +148 -0
- package/src/internal/loop.ts +24 -0
- package/src/internal/pending.ts +20 -0
- package/src/internal/textDecoder.ts +183 -0
- package/src/jsonld/DocumentLoader.ts +512 -0
- package/src/jsonld/JsonLd.ts +847 -0
- package/src/jsonld/JsonLdError.ts +105 -0
- package/src/jsonld/index.ts +13 -0
- package/src/jsonld/internal/compact.ts +852 -0
- package/src/jsonld/internal/context.ts +781 -0
- package/src/jsonld/internal/expand.ts +614 -0
- package/src/jsonld/internal/flatten.ts +243 -0
- package/src/jsonld/internal/frame.ts +559 -0
- package/src/jsonld/internal/iri.ts +52 -0
- package/src/jsonld/internal/json.ts +19 -0
- package/src/jsonld/internal/linkHeader.ts +60 -0
- package/src/jsonld/internal/rdf.ts +481 -0
- package/src/jsonld/internal/util.ts +367 -0
- package/src/n3/Isomorphism.ts +476 -0
- package/src/n3/Mapping.ts +332 -0
- package/src/n3/Model.ts +696 -0
- package/src/n3/N3.ts +237 -0
- package/src/n3/Reasoner.ts +568 -0
- package/src/n3/Vocab.ts +111 -0
- package/src/n3/index.ts +21 -0
- package/src/n3/internal/builtins.ts +668 -0
- package/src/n3/internal/guards.ts +23 -0
- package/src/n3/internal/lists.ts +106 -0
- package/src/n3/internal/loop.ts +28 -0
- package/src/n3/internal/parser.ts +1032 -0
- package/src/n3/internal/writer.ts +344 -0
- package/src/ntriples/Grammar.ts +317 -0
- package/src/ntriples/Lexical.ts +321 -0
- package/src/ntriples/NQuads.ts +140 -0
- package/src/ntriples/NTriples.ts +143 -0
- package/src/ntriples/index.ts +14 -0
- package/src/ntriples/internal/codec.ts +229 -0
- package/src/ntriples/internal/lineParser.ts +326 -0
- package/src/ntriples/internal/loop.ts +14 -0
- package/src/rdfjson/RdfJson.ts +806 -0
- package/src/rdfjson/index.ts +9 -0
- package/src/rdfjson/internal/json.ts +19 -0
- package/src/rdfxml/RdfXml.ts +1408 -0
- package/src/rdfxml/Xml.ts +419 -0
- package/src/rdfxml/index.ts +11 -0
- package/src/rdfxml/internal/chars.ts +73 -0
- package/src/rdfxml/internal/loop.ts +24 -0
- package/src/rdfxml/internal/parser.ts +1265 -0
- package/src/shacl/Message.ts +102 -0
- package/src/shacl/Path.ts +483 -0
- package/src/shacl/Shapes.ts +913 -0
- package/src/shacl/Sparql.ts +128 -0
- package/src/shacl/ValidationReport.ts +438 -0
- package/src/shacl/Validator.ts +1156 -0
- package/src/shacl/Vocabulary.ts +180 -0
- package/src/shacl/index.ts +22 -0
- package/src/shacl/internal/compare.ts +128 -0
- package/src/shacl/internal/regex.ts +56 -0
- package/src/shex/SemAct.ts +197 -0
- package/src/shex/ShExC.ts +415 -0
- package/src/shex/ShExError.ts +71 -0
- package/src/shex/ShExJ.ts +893 -0
- package/src/shex/ShExR.ts +640 -0
- package/src/shex/ShapeMap.ts +385 -0
- package/src/shex/Structure.ts +467 -0
- package/src/shex/Validator.ts +395 -0
- package/src/shex/index.ts +24 -0
- package/src/shex/internal/engine.ts +682 -0
- package/src/shex/internal/iterate.ts +14 -0
- package/src/shex/internal/json.ts +12 -0
- package/src/shex/internal/lexer.ts +56 -0
- package/src/shex/internal/nodeConstraint.ts +368 -0
- package/src/shex/internal/shexcLexer.ts +387 -0
- package/src/shex/internal/shexcParser.ts +1312 -0
- package/src/shex/internal/tokens.ts +41 -0
- package/src/shex/internal/xpathRegex.ts +290 -0
- package/src/sparql/Algebra.ts +914 -0
- package/src/sparql/Ast.ts +1344 -0
- package/src/sparql/Bindings.ts +272 -0
- package/src/sparql/ClientErrors.ts +156 -0
- package/src/sparql/ClientFormats.ts +70 -0
- package/src/sparql/Engine.ts +699 -0
- package/src/sparql/Errors.ts +30 -0
- package/src/sparql/Expression.ts +360 -0
- package/src/sparql/Federation.ts +187 -0
- package/src/sparql/Functions.ts +689 -0
- package/src/sparql/Generator.ts +426 -0
- package/src/sparql/GraphStore.ts +341 -0
- package/src/sparql/Optimizer.ts +230 -0
- package/src/sparql/Options.ts +191 -0
- package/src/sparql/Parser.ts +173 -0
- package/src/sparql/Protocol.ts +342 -0
- package/src/sparql/ProtocolErrors.ts +113 -0
- package/src/sparql/QueryBuilder.ts +953 -0
- package/src/sparql/Results.ts +844 -0
- package/src/sparql/ResultsStream.ts +771 -0
- package/src/sparql/ServerFormats.ts +75 -0
- package/src/sparql/ServiceDescription.ts +130 -0
- package/src/sparql/SparqlClient.ts +947 -0
- package/src/sparql/SparqlServer.ts +528 -0
- package/src/sparql/Store.ts +311 -0
- package/src/sparql/TermSchema.ts +20 -0
- package/src/sparql/Testing.ts +114 -0
- package/src/sparql/Translate.ts +407 -0
- package/src/sparql/ai/Mcp.ts +43 -0
- package/src/sparql/ai/Tools.ts +481 -0
- package/src/sparql/ai/index.ts +11 -0
- package/src/sparql/index.ts +64 -0
- package/src/sparql/internal/evaluator.ts +947 -0
- package/src/sparql/internal/hash.ts +418 -0
- package/src/sparql/internal/json.ts +12 -0
- package/src/sparql/internal/lexer.ts +488 -0
- package/src/sparql/internal/loop.ts +24 -0
- package/src/sparql/internal/parser.ts +2215 -0
- package/src/sparql/internal/prefetch.ts +46 -0
- package/src/sparql/internal/stringMap.ts +39 -0
- package/src/sparql/internal/textResults.ts +226 -0
- package/src/sparql/internal/values.ts +550 -0
- package/src/sparql/shacl/Evaluator.ts +478 -0
- package/src/sparql/shacl/Query.ts +574 -0
- package/src/sparql/shacl/index.ts +12 -0
- package/src/sparql/sql/Dialect.ts +246 -0
- package/src/sparql/sql/SqlStore.ts +1080 -0
- package/src/sparql/sql/Translation.ts +1898 -0
- package/src/sparql/sql/index.ts +17 -0
- package/src/sparql/sql/internal/encoding.ts +313 -0
- package/src/turtle/Grammar.ts +286 -0
- package/src/turtle/Manifest.ts +215 -0
- package/src/turtle/TriG.ts +158 -0
- package/src/turtle/Turtle.ts +166 -0
- package/src/turtle/index.ts +14 -0
- package/src/turtle/internal/loop.ts +23 -0
- package/src/turtle/internal/parse.ts +112 -0
- package/src/turtle/internal/parser.ts +1303 -0
- package/src/turtle/internal/serialize.ts +79 -0
- package/src/turtle/internal/streamWriter.ts +128 -0
- package/src/turtle/internal/writer.ts +898 -0
- package/src/xmp/DublinCore.ts +147 -0
- package/src/xmp/Exif.ts +109 -0
- package/src/xmp/Extract.ts +351 -0
- package/src/xmp/Metadata.ts +703 -0
- package/src/xmp/Namespaces.ts +228 -0
- package/src/xmp/Packet.ts +297 -0
- package/src/xmp/Pdf.ts +99 -0
- package/src/xmp/PdfA.ts +280 -0
- package/src/xmp/Photoshop.ts +275 -0
- package/src/xmp/Tiff.ts +196 -0
- package/src/xmp/Xmp.ts +430 -0
- package/src/xmp/XmpBasic.ts +90 -0
- package/src/xmp/XmpMM.ts +82 -0
- package/src/xmp/XmpRights.ts +83 -0
- package/src/xmp/index.ts +36 -0
- package/src/xmp/internal/accessors.ts +72 -0
- package/src/xmp/internal/xml.ts +63 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode, K as isTriple, it as variable, q as isVariable, rt as triple } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { a as setOf, r as emptySet } from "./stringMap-D5YIpYtR.mjs";
|
|
4
|
+
import * as Arr from "effect/Array";
|
|
5
|
+
import * as Match from "effect/Match";
|
|
6
|
+
// src/sparql/Algebra.ts
|
|
7
|
+
/**
|
|
8
|
+
* The SPARQL algebra (SPARQL 1.1 §18): the operator tree that queries are
|
|
9
|
+
* translated to and that the engine (or a storage backend) evaluates.
|
|
10
|
+
*
|
|
11
|
+
* Operators are plain immutable objects discriminated by `_tag`. Blank nodes
|
|
12
|
+
* of query patterns are replaced by internal variables (whose names start
|
|
13
|
+
* with `@` and therefore cannot clash with user variables); aggregates are
|
|
14
|
+
* computed by `Group` nodes and referenced through internal variables.
|
|
15
|
+
*
|
|
16
|
+
* Storage backends that evaluate (parts of) the algebra natively — such as a
|
|
17
|
+
* SQL backend translating SPARQL to SQL — pattern-match on these types; see
|
|
18
|
+
* `Store.QueryCapability`.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
*/
|
|
22
|
+
var Algebra_exports = /* @__PURE__ */ __exportAll({
|
|
23
|
+
bgp: () => bgp,
|
|
24
|
+
certainVariables: () => certainVariables,
|
|
25
|
+
containsExists: () => containsExists,
|
|
26
|
+
expressionVariables: () => expressionVariables,
|
|
27
|
+
extend: () => extend,
|
|
28
|
+
filter: () => filter,
|
|
29
|
+
format: () => format,
|
|
30
|
+
formatExpression: () => formatExpression,
|
|
31
|
+
internalVariable: () => internalVariable,
|
|
32
|
+
isInternalVariable: () => isInternalVariable,
|
|
33
|
+
join: () => join,
|
|
34
|
+
leftJoin: () => leftJoin,
|
|
35
|
+
mapChildren: () => mapChildren,
|
|
36
|
+
mapExpressionPatterns: () => mapExpressionPatterns,
|
|
37
|
+
minus: () => minus,
|
|
38
|
+
prebind: () => prebind,
|
|
39
|
+
project: () => project,
|
|
40
|
+
transform: () => transform,
|
|
41
|
+
union: () => union,
|
|
42
|
+
unit: () => unit,
|
|
43
|
+
variables: () => variables
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* The empty BGP: the join identity.
|
|
47
|
+
*
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
* @category constructors
|
|
50
|
+
*/
|
|
51
|
+
const unit = {
|
|
52
|
+
_tag: "Bgp",
|
|
53
|
+
patterns: []
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* @since 0.1.0
|
|
57
|
+
* @category constructors
|
|
58
|
+
*/
|
|
59
|
+
const bgp = (patterns) => ({
|
|
60
|
+
_tag: "Bgp",
|
|
61
|
+
patterns
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* @since 0.1.0
|
|
65
|
+
* @category constructors
|
|
66
|
+
*/
|
|
67
|
+
const join = (left, right) => ({
|
|
68
|
+
_tag: "Join",
|
|
69
|
+
left,
|
|
70
|
+
right
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* @since 0.1.0
|
|
74
|
+
* @category constructors
|
|
75
|
+
*/
|
|
76
|
+
const leftJoin = (left, right, expression) => expression === void 0 ? {
|
|
77
|
+
_tag: "LeftJoin",
|
|
78
|
+
left,
|
|
79
|
+
right
|
|
80
|
+
} : {
|
|
81
|
+
_tag: "LeftJoin",
|
|
82
|
+
left,
|
|
83
|
+
right,
|
|
84
|
+
expression
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
* @category constructors
|
|
89
|
+
*/
|
|
90
|
+
const filter = (expression, input) => ({
|
|
91
|
+
_tag: "Filter",
|
|
92
|
+
expression,
|
|
93
|
+
input
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
* @category constructors
|
|
98
|
+
*/
|
|
99
|
+
const union = (left, right) => ({
|
|
100
|
+
_tag: "Union",
|
|
101
|
+
left,
|
|
102
|
+
right
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* @since 0.1.0
|
|
106
|
+
* @category constructors
|
|
107
|
+
*/
|
|
108
|
+
const minus = (left, right) => ({
|
|
109
|
+
_tag: "Minus",
|
|
110
|
+
left,
|
|
111
|
+
right
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* @since 0.1.0
|
|
115
|
+
* @category constructors
|
|
116
|
+
*/
|
|
117
|
+
const extend = (input, variable, expression) => ({
|
|
118
|
+
_tag: "Extend",
|
|
119
|
+
input,
|
|
120
|
+
variable,
|
|
121
|
+
expression
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* @since 0.1.0
|
|
125
|
+
* @category constructors
|
|
126
|
+
*/
|
|
127
|
+
const project = (input, variables) => ({
|
|
128
|
+
_tag: "Project",
|
|
129
|
+
input,
|
|
130
|
+
variables
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* Whether a variable name is internal (introduced by translation for blank
|
|
134
|
+
* nodes, property path sequences, group keys and aggregates).
|
|
135
|
+
*
|
|
136
|
+
* @since 0.1.0
|
|
137
|
+
* @category utils
|
|
138
|
+
*/
|
|
139
|
+
const isInternalVariable = (name) => name.startsWith("@");
|
|
140
|
+
/**
|
|
141
|
+
* The public, native `ReadonlySet` of a variable set: the helpers below
|
|
142
|
+
* return `ReadonlySet` by contract, and only `new Set` makes one.
|
|
143
|
+
*/
|
|
144
|
+
const toReadonlySet = (vars) => new Set(vars.keys());
|
|
145
|
+
const termVariables = (t, out) => {
|
|
146
|
+
if (isVariable(t)) out.set(t.value, true);
|
|
147
|
+
else if (isTriple(t)) {
|
|
148
|
+
termVariables(t.subject, out);
|
|
149
|
+
termVariables(t.predicate, out);
|
|
150
|
+
termVariables(t.object, out);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The variables that may be bound by solutions of an operator ("in-scope"
|
|
155
|
+
* variables, including internal ones).
|
|
156
|
+
*
|
|
157
|
+
* @since 0.1.0
|
|
158
|
+
* @category utils
|
|
159
|
+
*/
|
|
160
|
+
const variables = (op) => toReadonlySet(variableSet(op));
|
|
161
|
+
const variableSet = (op) => {
|
|
162
|
+
const out = emptySet();
|
|
163
|
+
collectVariables(op, out);
|
|
164
|
+
return out;
|
|
165
|
+
};
|
|
166
|
+
const collectVariables = (op, out) => {
|
|
167
|
+
Match.value(op).pipe(Match.tag("Bgp", (o) => o.patterns.forEach((p) => {
|
|
168
|
+
termVariables(p.subject, out);
|
|
169
|
+
termVariables(p.predicate, out);
|
|
170
|
+
termVariables(p.object, out);
|
|
171
|
+
})), Match.tag("Path", (o) => {
|
|
172
|
+
termVariables(o.subject, out);
|
|
173
|
+
termVariables(o.object, out);
|
|
174
|
+
}), Match.tag("Join", "LeftJoin", "Union", (o) => {
|
|
175
|
+
collectVariables(o.left, out);
|
|
176
|
+
collectVariables(o.right, out);
|
|
177
|
+
}), Match.tag("Minus", (o) => collectVariables(o.left, out)), Match.tag("Filter", "OrderBy", "Distinct", "Reduced", "Slice", (o) => collectVariables(o.input, out)), Match.tag("Graph", "Service", (o) => {
|
|
178
|
+
termVariables(o.name, out);
|
|
179
|
+
collectVariables(o.input, out);
|
|
180
|
+
}), Match.tag("Extend", (o) => {
|
|
181
|
+
collectVariables(o.input, out);
|
|
182
|
+
out.set(o.variable.value, true);
|
|
183
|
+
}), Match.tag("Group", (o) => {
|
|
184
|
+
o.keys.forEach((k) => out.set(k.variable.value, true));
|
|
185
|
+
o.aggregates.forEach((a) => out.set(a.variable.value, true));
|
|
186
|
+
}), Match.tag("Project", "Values", (o) => o.variables.forEach((v) => out.set(v.value, true))), Match.exhaustive);
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* The variables that are bound in every solution of an operator (as far as
|
|
190
|
+
* can be determined statically).
|
|
191
|
+
*
|
|
192
|
+
* @since 0.1.0
|
|
193
|
+
* @category utils
|
|
194
|
+
*/
|
|
195
|
+
const certainVariables = (op) => toReadonlySet(certainSet(op));
|
|
196
|
+
const certainSet = (op) => {
|
|
197
|
+
return Match.value(op).pipe(Match.tag("Bgp", "Path", (o) => variableSet(o)), Match.tag("Join", (o) => {
|
|
198
|
+
const out = certainSet(o.left);
|
|
199
|
+
certainSet(o.right).forEach((_, v) => out.set(v, true));
|
|
200
|
+
return out;
|
|
201
|
+
}), Match.tag("LeftJoin", "Minus", (o) => certainSet(o.left)), Match.tag("Union", (o) => {
|
|
202
|
+
const right = certainSet(o.right);
|
|
203
|
+
return setOf(Array.from(certainSet(o.left).keys()).filter((v) => right.has(v)));
|
|
204
|
+
}), Match.tag("Filter", "OrderBy", "Distinct", "Reduced", "Slice", "Extend", (o) => certainSet(o.input)), Match.tag("Graph", "Service", (o) => {
|
|
205
|
+
const out = certainSet(o.input);
|
|
206
|
+
if (isVariable(o.name)) out.set(o.name.value, true);
|
|
207
|
+
return out;
|
|
208
|
+
}), Match.tag("Group", () => emptySet()), Match.tag("Project", (o) => {
|
|
209
|
+
const inner = certainSet(o.input);
|
|
210
|
+
return setOf(o.variables.map((v) => v.value).filter((v) => inner.has(v)));
|
|
211
|
+
}), Match.tag("Values", (o) => setOf(o.variables.map((v) => v.value).filter((v) => o.bindings.every((b) => b.map.has(v))))), Match.exhaustive);
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* The variables mentioned by an expression (not looking into `EXISTS`).
|
|
215
|
+
*
|
|
216
|
+
* @since 0.1.0
|
|
217
|
+
* @category utils
|
|
218
|
+
*/
|
|
219
|
+
const expressionVariables = (expression) => {
|
|
220
|
+
const out = emptySet();
|
|
221
|
+
const go = (e) => {
|
|
222
|
+
Match.value(e).pipe(Match.tag("Variable", "Triple", (t) => termVariables(t, out)), Match.tag("Operation", "FunctionCall", (call) => call.args.forEach(go)), Match.orElse(() => void 0));
|
|
223
|
+
};
|
|
224
|
+
go(expression);
|
|
225
|
+
return toReadonlySet(out);
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Whether an expression contains `EXISTS` / `NOT EXISTS`.
|
|
229
|
+
*
|
|
230
|
+
* @since 0.1.0
|
|
231
|
+
* @category utils
|
|
232
|
+
*/
|
|
233
|
+
const containsExists = (expression) => {
|
|
234
|
+
return Match.value(expression).pipe(Match.tag("Exists", () => true), Match.tag("Operation", "FunctionCall", (call) => call.args.some(containsExists)), Match.orElse(() => false));
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* Rewrites an operator tree bottom-up: `f` is applied to every node after
|
|
238
|
+
* its children have been rewritten.
|
|
239
|
+
*
|
|
240
|
+
* @since 0.1.0
|
|
241
|
+
* @category utils
|
|
242
|
+
*/
|
|
243
|
+
const transform = (op, f) => {
|
|
244
|
+
const go = (o) => f(mapChildren(o, go));
|
|
245
|
+
return go(op);
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* Applies `f` to the direct children of an operator.
|
|
249
|
+
*
|
|
250
|
+
* @since 0.1.0
|
|
251
|
+
* @category utils
|
|
252
|
+
*/
|
|
253
|
+
const mapChildren = (op, f) => {
|
|
254
|
+
return Match.value(op).pipe(Match.tag("Bgp", "Path", "Values", (o) => o), Match.tag("Join", "Union", "Minus", (o) => ({
|
|
255
|
+
...o,
|
|
256
|
+
left: f(o.left),
|
|
257
|
+
right: f(o.right)
|
|
258
|
+
})), Match.tag("LeftJoin", (o) => ({
|
|
259
|
+
...o,
|
|
260
|
+
left: f(o.left),
|
|
261
|
+
right: f(o.right)
|
|
262
|
+
})), Match.tag("Filter", "Graph", "Extend", "Group", "OrderBy", "Project", "Distinct", "Reduced", "Slice", "Service", (o) => ({
|
|
263
|
+
...o,
|
|
264
|
+
input: f(o.input)
|
|
265
|
+
})), Match.exhaustive);
|
|
266
|
+
};
|
|
267
|
+
const termText = (t) => isTriple(t) ? `<<( ${termText(t.subject)} ${termText(t.predicate)} ${termText(t.object)} )>>` : t.toString();
|
|
268
|
+
const pathText = (p) => {
|
|
269
|
+
return Match.value(p).pipe(Match.tag("PathLink", (l) => termText(l.iri)), Match.tag("PathInverse", (i) => `(inv ${pathText(i.path)})`), Match.tag("PathSequence", (s) => `(seq ${s.paths.map(pathText).join(" ")})`), Match.tag("PathAlternative", (a) => `(alt ${a.paths.map(pathText).join(" ")})`), Match.tag("PathZeroOrMore", (z) => `(path* ${pathText(z.path)})`), Match.tag("PathOneOrMore", (o) => `(path+ ${pathText(o.path)})`), Match.tag("PathZeroOrOne", (z) => `(path? ${pathText(z.path)})`), Match.tag("PathNegated", (n) => `(notoneof ${[...n.iris.map(termText), ...n.inverse.map((i) => `^${termText(i)}`)].join(" ")})`), Match.exhaustive);
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* Formats an expression as an S-expression (for debugging and logging).
|
|
273
|
+
*
|
|
274
|
+
* @since 0.1.0
|
|
275
|
+
* @category formatting
|
|
276
|
+
*/
|
|
277
|
+
const formatExpression = (e) => {
|
|
278
|
+
return Match.value(e).pipe(Match.tag("Operation", (o) => `(${o.operator.toLowerCase()} ${o.args.map(formatExpression).join(" ")})`), Match.tag("FunctionCall", (c) => `(${termText(c.function)} ${c.args.map(formatExpression).join(" ")})`), Match.tag("Exists", (x) => `(${x.negated ? "notexists" : "exists"} ${format(x.input)})`), Match.orElse((t) => termText(t)));
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Formats an operator tree as an S-expression in the style of the SPARQL
|
|
282
|
+
* Algebra notation (for debugging and logging).
|
|
283
|
+
*
|
|
284
|
+
* @since 0.1.0
|
|
285
|
+
* @category formatting
|
|
286
|
+
*/
|
|
287
|
+
const format = (op, indent = "") => {
|
|
288
|
+
const next = `${indent} `;
|
|
289
|
+
const sub = (o) => `\n${next}${format(o, next)}`;
|
|
290
|
+
return Match.value(op).pipe(Match.tag("Bgp", (o) => `(bgp${o.patterns.map((p) => ` (triple ${termText(p.subject)} ${termText(p.predicate)} ${termText(p.object)})`).join("")})`), Match.tag("Path", (o) => `(path ${termText(o.subject)} ${pathText(o.path)} ${termText(o.object)})`), Match.tag("Join", (o) => `(join${sub(o.left)}${sub(o.right)})`), Match.tag("LeftJoin", (o) => `(leftjoin${sub(o.left)}${sub(o.right)}${o.expression !== void 0 ? `\n${next}${formatExpression(o.expression)}` : ""})`), Match.tag("Filter", (o) => `(filter ${formatExpression(o.expression)}${sub(o.input)})`), Match.tag("Union", (o) => `(union${sub(o.left)}${sub(o.right)})`), Match.tag("Graph", (o) => `(graph ${termText(o.name)}${sub(o.input)})`), Match.tag("Extend", (o) => `(extend ((${termText(o.variable)} ${formatExpression(o.expression)}))${sub(o.input)})`), Match.tag("Minus", (o) => `(minus${sub(o.left)}${sub(o.right)})`), Match.tag("Group", (o) => `(group (${o.keys.map((k) => `(${termText(k.variable)} ${formatExpression(k.expression)})`).join(" ")}) (${o.aggregates.map((a) => `(${termText(a.variable)} (${a.aggregate.name.toLowerCase()}${a.aggregate.distinct ? " distinct" : ""} ${a.aggregate.expression === "*" ? "*" : formatExpression(a.aggregate.expression)}))`).join(" ")})${sub(o.input)})`), Match.tag("OrderBy", (o) => `(order (${o.conditions.map((c) => c.descending ? `(desc ${formatExpression(c.expression)})` : formatExpression(c.expression)).join(" ")})${sub(o.input)})`), Match.tag("Project", (o) => `(project (${o.variables.map(termText).join(" ")})${sub(o.input)})`), Match.tag("Distinct", (o) => `(distinct${sub(o.input)})`), Match.tag("Reduced", (o) => `(reduced${sub(o.input)})`), Match.tag("Slice", (o) => `(slice ${o.offset} ${o.limit ?? "_"}${sub(o.input)})`), Match.tag("Values", (o) => `(table (vars ${o.variables.map(termText).join(" ")}) ${o.bindings.length} rows)`), Match.tag("Service", (o) => `(service ${o.silent ? "silent " : ""}${termText(o.name)}${sub(o.input)})`), Match.exhaustive);
|
|
291
|
+
};
|
|
292
|
+
/**
|
|
293
|
+
* Creates an internal variable.
|
|
294
|
+
*
|
|
295
|
+
* @since 0.1.0
|
|
296
|
+
* @category constructors
|
|
297
|
+
*/
|
|
298
|
+
const internalVariable = (name) => variable(`@${name}`);
|
|
299
|
+
/**
|
|
300
|
+
* Applies `f` to every graph pattern nested in an expression (the patterns
|
|
301
|
+
* of `EXISTS` / `NOT EXISTS`).
|
|
302
|
+
*
|
|
303
|
+
* @since 0.1.0
|
|
304
|
+
* @category utils
|
|
305
|
+
*/
|
|
306
|
+
const mapExpressionPatterns = (expression, f) => {
|
|
307
|
+
return Match.value(expression).pipe(Match.tag("Exists", (x) => ({
|
|
308
|
+
...x,
|
|
309
|
+
input: f(x.input)
|
|
310
|
+
})), Match.tag("Operation", (o) => ({
|
|
311
|
+
...o,
|
|
312
|
+
args: o.args.map((a) => mapExpressionPatterns(a, f))
|
|
313
|
+
})), Match.tag("FunctionCall", (c) => ({
|
|
314
|
+
...c,
|
|
315
|
+
args: c.args.map((a) => mapExpressionPatterns(a, f))
|
|
316
|
+
})), Match.orElse((e) => e));
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Pre-binds variables in an algebra expression, following the "values
|
|
320
|
+
* insertion" definition of SHACL-SPARQL (Appendix "Pre-binding of
|
|
321
|
+
* Variables", aligned with the SPARQL `EXISTS` errata): every basic graph
|
|
322
|
+
* pattern, property path and `GRAPH ?var` pattern `Y` — including those
|
|
323
|
+
* nested in `EXISTS` — is replaced by `Join(Table(μ), Y)`, where `Table(μ)`
|
|
324
|
+
* is a one-row `VALUES` table holding the pre-bound solution `μ`.
|
|
325
|
+
*
|
|
326
|
+
* The pre-bound values are also substituted into the replaced patterns,
|
|
327
|
+
* which does not change the result (the join restores the bindings) but lets
|
|
328
|
+
* the optimizer and the store use them as constants.
|
|
329
|
+
*
|
|
330
|
+
* Unlike a trailing `VALUES` clause, pre-bound values are visible to every
|
|
331
|
+
* `FILTER` and `BIND`, including those of groups that never match the
|
|
332
|
+
* variable: `SELECT $this WHERE { FILTER ($this = ex:a) }` has one solution
|
|
333
|
+
* when `this` is pre-bound to `ex:a`. Queries using `MINUS`, `VALUES` or
|
|
334
|
+
* `SERVICE`, rebinding a pre-bound variable with `AS`, or with sub-queries
|
|
335
|
+
* that do not project the pre-bound variables, have no well-defined meaning
|
|
336
|
+
* under pre-binding.
|
|
337
|
+
*
|
|
338
|
+
* @since 0.1.0
|
|
339
|
+
* @category utils
|
|
340
|
+
*/
|
|
341
|
+
const prebind = (op, bindings) => {
|
|
342
|
+
if (bindings.map.size === 0) return op;
|
|
343
|
+
const table = {
|
|
344
|
+
_tag: "Values",
|
|
345
|
+
variables: Array.from(bindings.map.keys(), (v) => variable(v)),
|
|
346
|
+
bindings: [bindings]
|
|
347
|
+
};
|
|
348
|
+
const term = (t) => {
|
|
349
|
+
if (isVariable(t)) return bindings.map.get(t.value) ?? t;
|
|
350
|
+
if (isTriple(t)) {
|
|
351
|
+
const s = term(t.subject);
|
|
352
|
+
const p = term(t.predicate);
|
|
353
|
+
const o = term(t.object);
|
|
354
|
+
return s === t.subject && p === t.predicate && o === t.object ? t : triple(s, p, o);
|
|
355
|
+
}
|
|
356
|
+
return t;
|
|
357
|
+
};
|
|
358
|
+
const predicate = (p) => {
|
|
359
|
+
if (!isVariable(p)) return p;
|
|
360
|
+
const v = bindings.map.get(p.value);
|
|
361
|
+
return isNamedNode(v) ? v : p;
|
|
362
|
+
};
|
|
363
|
+
const expr = (e) => mapExpressionPatterns(e, go);
|
|
364
|
+
const go = (o) => {
|
|
365
|
+
return Match.value(o).pipe(Match.tag("Bgp", (b) => Arr.isReadonlyArrayEmpty(b.patterns) ? table : join(table, bgp(b.patterns.map((p) => ({
|
|
366
|
+
_tag: "TriplePattern",
|
|
367
|
+
subject: term(p.subject),
|
|
368
|
+
predicate: predicate(p.predicate),
|
|
369
|
+
object: term(p.object)
|
|
370
|
+
}))))), Match.tag("Path", (p) => join(table, {
|
|
371
|
+
...p,
|
|
372
|
+
subject: term(p.subject),
|
|
373
|
+
object: term(p.object)
|
|
374
|
+
})), Match.tag("Graph", (g) => {
|
|
375
|
+
const input = go(g.input);
|
|
376
|
+
const value = isVariable(g.name) ? bindings.map.get(g.name.value) : void 0;
|
|
377
|
+
if (value === void 0) return {
|
|
378
|
+
...g,
|
|
379
|
+
input
|
|
380
|
+
};
|
|
381
|
+
return join(table, isNamedNode(value) ? {
|
|
382
|
+
...g,
|
|
383
|
+
name: value,
|
|
384
|
+
input
|
|
385
|
+
} : {
|
|
386
|
+
...g,
|
|
387
|
+
input
|
|
388
|
+
});
|
|
389
|
+
}), Match.tag("Filter", (x) => ({
|
|
390
|
+
...x,
|
|
391
|
+
expression: expr(x.expression),
|
|
392
|
+
input: go(x.input)
|
|
393
|
+
})), Match.tag("LeftJoin", (l) => l.expression === void 0 ? {
|
|
394
|
+
...l,
|
|
395
|
+
left: go(l.left),
|
|
396
|
+
right: go(l.right)
|
|
397
|
+
} : {
|
|
398
|
+
...l,
|
|
399
|
+
left: go(l.left),
|
|
400
|
+
right: go(l.right),
|
|
401
|
+
expression: expr(l.expression)
|
|
402
|
+
}), Match.tag("Extend", (x) => ({
|
|
403
|
+
...x,
|
|
404
|
+
expression: expr(x.expression),
|
|
405
|
+
input: go(x.input)
|
|
406
|
+
})), Match.tag("OrderBy", (x) => ({
|
|
407
|
+
...x,
|
|
408
|
+
input: go(x.input),
|
|
409
|
+
conditions: x.conditions.map((c) => ({
|
|
410
|
+
...c,
|
|
411
|
+
expression: expr(c.expression)
|
|
412
|
+
}))
|
|
413
|
+
})), Match.tag("Group", (x) => ({
|
|
414
|
+
...x,
|
|
415
|
+
input: go(x.input),
|
|
416
|
+
keys: x.keys.map((k) => ({
|
|
417
|
+
...k,
|
|
418
|
+
expression: expr(k.expression)
|
|
419
|
+
})),
|
|
420
|
+
aggregates: x.aggregates.map((a) => ({
|
|
421
|
+
...a,
|
|
422
|
+
aggregate: a.aggregate.expression === "*" ? a.aggregate : {
|
|
423
|
+
...a.aggregate,
|
|
424
|
+
expression: expr(a.aggregate.expression)
|
|
425
|
+
}
|
|
426
|
+
}))
|
|
427
|
+
})), Match.orElse((x) => mapChildren(x, go)));
|
|
428
|
+
};
|
|
429
|
+
return go(op);
|
|
430
|
+
};
|
|
431
|
+
export { variables as S, prebind as _, expressionVariables as a, union as b, format as c, isInternalVariable as d, join as f, minus as g, mapExpressionPatterns as h, containsExists as i, formatExpression as l, mapChildren as m, bgp as n, extend as o, leftJoin as p, certainVariables as r, filter as s, Algebra_exports as t, internalVariable as u, project as v, unit as x, transform as y };
|
|
432
|
+
|
|
433
|
+
//# sourceMappingURL=Algebra-CGG4oae3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Algebra-CGG4oae3.mjs","names":["Term.isVariable","Term.isTriple","StringMap.emptySet","StringMap.setOf","Term.variable","Term.triple","Term.isNamedNode"],"sources":["../src/sparql/Algebra.ts"],"sourcesContent":["/**\n * The SPARQL algebra (SPARQL 1.1 §18): the operator tree that queries are\n * translated to and that the engine (or a storage backend) evaluates.\n *\n * Operators are plain immutable objects discriminated by `_tag`. Blank nodes\n * of query patterns are replaced by internal variables (whose names start\n * with `@` and therefore cannot clash with user variables); aggregates are\n * computed by `Group` nodes and referenced through internal variables.\n *\n * Storage backends that evaluate (parts of) the algebra natively — such as a\n * SQL backend translating SPARQL to SQL — pattern-match on these types; see\n * `Store.QueryCapability`.\n *\n * @since 0.1.0\n */\nimport * as Term from '../Term.ts';\nimport type * as Ast from './Ast.ts';\nimport type { Bindings } from './Bindings.ts';\nimport * as Arr from 'effect/Array';\nimport * as Match from 'effect/Match';\nimport * as StringMap from './internal/stringMap.ts';\n\n// -----------------------------------------------------------------------------\n// Expressions\n// -----------------------------------------------------------------------------\n\n/**\n * An algebra expression: like `Ast.Expression`, but `EXISTS` patterns are\n * translated to algebra and aggregates have been replaced by variables.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Expression =\n | Term.Variable\n | Term.NamedNode\n | Term.Literal\n | Term.BlankNode\n | Term.Triple<any, any, any>\n | OperationExpression\n | FunctionCallExpression\n | ExistsExpression;\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface OperationExpression {\n readonly _tag: 'Operation';\n readonly operator: Ast.Operator;\n readonly args: ReadonlyArray<Expression>;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface FunctionCallExpression {\n readonly _tag: 'FunctionCall';\n readonly function: Term.NamedNode;\n readonly args: ReadonlyArray<Expression>;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface ExistsExpression {\n readonly _tag: 'Exists';\n readonly negated: boolean;\n readonly input: Operation;\n}\n\n/**\n * An aggregate computed by a `Group` operator.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Aggregate {\n readonly name: Ast.AggregateName;\n readonly distinct: boolean;\n readonly expression: Expression | '*';\n readonly separator?: string | undefined;\n}\n\n// -----------------------------------------------------------------------------\n// Operators\n// -----------------------------------------------------------------------------\n\n/**\n * An algebra operator.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Operation =\n | Bgp\n | Path\n | Join\n | LeftJoin\n | Filter\n | Union\n | Graph\n | Extend\n | Minus\n | Group\n | OrderBy\n | Project\n | Distinct\n | Reduced\n | Slice\n | Values\n | Service;\n\n/**\n * A basic graph pattern. The empty BGP is the join identity (one empty\n * solution).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Bgp {\n readonly _tag: 'Bgp';\n readonly patterns: ReadonlyArray<Ast.TriplePattern>;\n}\n\n/**\n * A property path pattern that could not be expanded to triple patterns.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Path {\n readonly _tag: 'Path';\n readonly subject: Ast.TermPattern;\n readonly path: Ast.Path;\n readonly object: Ast.TermPattern;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Join {\n readonly _tag: 'Join';\n readonly left: Operation;\n readonly right: Operation;\n}\n\n/**\n * `OPTIONAL`, with the filter of the optional group as `expression`.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface LeftJoin {\n readonly _tag: 'LeftJoin';\n readonly left: Operation;\n readonly right: Operation;\n readonly expression?: Expression | undefined;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Filter {\n readonly _tag: 'Filter';\n readonly expression: Expression;\n readonly input: Operation;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Union {\n readonly _tag: 'Union';\n readonly left: Operation;\n readonly right: Operation;\n}\n\n/**\n * Evaluates `input` against a named graph (`GRAPH`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Graph {\n readonly _tag: 'Graph';\n readonly name: Term.NamedNode | Term.Variable;\n readonly input: Operation;\n}\n\n/**\n * Binds `variable` to the value of `expression` (`BIND` and select\n * expressions).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Extend {\n readonly _tag: 'Extend';\n readonly input: Operation;\n readonly variable: Term.Variable;\n readonly expression: Expression;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Minus {\n readonly _tag: 'Minus';\n readonly left: Operation;\n readonly right: Operation;\n}\n\n/**\n * A group key: the grouping expression and the variable it is bound to.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface GroupKey {\n readonly expression: Expression;\n readonly variable: Term.Variable;\n}\n\n/**\n * Grouping and aggregation (`Group` + `AggregateJoin`). Each output solution\n * binds the key variables and the aggregate variables of one group. With no\n * keys, all solutions form one group (which exists even if there are no\n * solutions).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Group {\n readonly _tag: 'Group';\n readonly input: Operation;\n readonly keys: ReadonlyArray<GroupKey>;\n readonly aggregates: ReadonlyArray<{\n readonly variable: Term.Variable;\n readonly aggregate: Aggregate;\n }>;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface OrderCondition {\n readonly expression: Expression;\n readonly descending: boolean;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface OrderBy {\n readonly _tag: 'OrderBy';\n readonly input: Operation;\n readonly conditions: ReadonlyArray<OrderCondition>;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Project {\n readonly _tag: 'Project';\n readonly input: Operation;\n readonly variables: ReadonlyArray<Term.Variable>;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Distinct {\n readonly _tag: 'Distinct';\n readonly input: Operation;\n}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Reduced {\n readonly _tag: 'Reduced';\n readonly input: Operation;\n}\n\n/**\n * `OFFSET` / `LIMIT`.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Slice {\n readonly _tag: 'Slice';\n readonly input: Operation;\n readonly offset: number;\n readonly limit?: number | undefined;\n}\n\n/**\n * Inline data (`VALUES`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Values {\n readonly _tag: 'Values';\n readonly variables: ReadonlyArray<Term.Variable>;\n readonly bindings: ReadonlyArray<Bindings>;\n}\n\n/**\n * A federated `SERVICE` pattern. `pattern` keeps the original syntax so that\n * the pattern can be sent to the remote endpoint.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Service {\n readonly _tag: 'Service';\n readonly name: Term.NamedNode | Term.Variable;\n readonly silent: boolean;\n readonly input: Operation;\n readonly pattern: Ast.GroupPattern;\n readonly prefixes: Readonly<Record<string, string>>;\n}\n\n// -----------------------------------------------------------------------------\n// Queries\n// -----------------------------------------------------------------------------\n\n/**\n * A translated query: the algebra of the WHERE clause plus solution\n * modifiers, the query form and the dataset clause.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Query =\n | {\n readonly _tag: 'Select';\n readonly input: Operation;\n readonly variables: ReadonlyArray<Term.Variable>;\n readonly dataset?: Ast.DatasetClause | undefined;\n }\n | {\n readonly _tag: 'Construct';\n readonly input: Operation;\n readonly template: ReadonlyArray<Ast.TriplePattern>;\n readonly dataset?: Ast.DatasetClause | undefined;\n }\n | {\n readonly _tag: 'Ask';\n readonly input: Operation;\n readonly dataset?: Ast.DatasetClause | undefined;\n }\n | {\n readonly _tag: 'Describe';\n readonly input: Operation;\n readonly terms: ReadonlyArray<Term.NamedNode | Term.Variable>;\n readonly dataset?: Ast.DatasetClause | undefined;\n };\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * The empty BGP: the join identity.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const unit: Bgp = { _tag: 'Bgp', patterns: [] };\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const bgp = (patterns: ReadonlyArray<Ast.TriplePattern>): Bgp => ({ _tag: 'Bgp', patterns });\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const join = (left: Operation, right: Operation): Join => ({ _tag: 'Join', left, right });\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const leftJoin = (left: Operation, right: Operation, expression?: Expression): LeftJoin =>\n expression === undefined\n ? { _tag: 'LeftJoin', left, right }\n : { _tag: 'LeftJoin', left, right, expression };\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const filter = (expression: Expression, input: Operation): Filter => ({\n _tag: 'Filter',\n expression,\n input,\n});\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const union = (left: Operation, right: Operation): Union => ({ _tag: 'Union', left, right });\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const minus = (left: Operation, right: Operation): Minus => ({ _tag: 'Minus', left, right });\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const extend = (\n input: Operation,\n variable: Term.Variable,\n expression: Expression,\n): Extend => ({\n _tag: 'Extend',\n input,\n variable,\n expression,\n});\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const project = (input: Operation, variables: ReadonlyArray<Term.Variable>): Project => ({\n _tag: 'Project',\n input,\n variables,\n});\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * Whether a variable name is internal (introduced by translation for blank\n * nodes, property path sequences, group keys and aggregates).\n *\n * @since 0.1.0\n * @category utils\n */\nexport const isInternalVariable = (name: string): boolean => name.startsWith('@');\n\n/** A string set of the type the variable helpers below return. */\ntype VariableSet = Map<string, true>;\n\n/**\n * The public, native `ReadonlySet` of a variable set: the helpers below\n * return `ReadonlySet` by contract, and only `new Set` makes one.\n */\nconst toReadonlySet = (vars: VariableSet): ReadonlySet<string> => new Set(vars.keys());\n\nconst termVariables = (t: Term.Term | Ast.TermPattern, out: VariableSet): void => {\n if (Term.isVariable(t)) out.set(t.value, true);\n else if (Term.isTriple(t)) {\n termVariables(t.subject, out);\n termVariables(t.predicate, out);\n termVariables(t.object, out);\n }\n};\n\n/**\n * The variables that may be bound by solutions of an operator (\"in-scope\"\n * variables, including internal ones).\n *\n * @since 0.1.0\n * @category utils\n */\nexport const variables = (op: Operation): ReadonlySet<string> => toReadonlySet(variableSet(op));\n\nconst variableSet = (op: Operation): VariableSet => {\n const out = StringMap.emptySet();\n collectVariables(op, out);\n return out;\n};\n\nconst collectVariables = (op: Operation, out: VariableSet): void => {\n Match.value(op).pipe(\n Match.tag('Bgp', (o) =>\n o.patterns.forEach((p) => {\n termVariables(p.subject, out);\n termVariables(p.predicate, out);\n termVariables(p.object, out);\n }),\n ),\n Match.tag('Path', (o) => {\n termVariables(o.subject, out);\n termVariables(o.object, out);\n }),\n Match.tag('Join', 'LeftJoin', 'Union', (o) => {\n collectVariables(o.left, out);\n collectVariables(o.right, out);\n }),\n Match.tag('Minus', (o) => collectVariables(o.left, out)),\n Match.tag('Filter', 'OrderBy', 'Distinct', 'Reduced', 'Slice', (o) =>\n collectVariables(o.input, out),\n ),\n Match.tag('Graph', 'Service', (o) => {\n termVariables(o.name, out);\n collectVariables(o.input, out);\n }),\n Match.tag('Extend', (o) => {\n collectVariables(o.input, out);\n out.set(o.variable.value, true);\n }),\n Match.tag('Group', (o) => {\n o.keys.forEach((k) => out.set(k.variable.value, true));\n o.aggregates.forEach((a) => out.set(a.variable.value, true));\n }),\n Match.tag('Project', 'Values', (o) => o.variables.forEach((v) => out.set(v.value, true))),\n Match.exhaustive,\n );\n};\n\n/**\n * The variables that are bound in every solution of an operator (as far as\n * can be determined statically).\n *\n * @since 0.1.0\n * @category utils\n */\nexport const certainVariables = (op: Operation): ReadonlySet<string> =>\n toReadonlySet(certainSet(op));\n\nconst certainSet = (op: Operation): VariableSet => {\n return Match.value(op).pipe(\n Match.tag('Bgp', 'Path', (o): VariableSet => variableSet(o)),\n Match.tag('Join', (o) => {\n const out = certainSet(o.left);\n certainSet(o.right).forEach((_, v) => out.set(v, true));\n return out;\n }),\n Match.tag('LeftJoin', 'Minus', (o) => certainSet(o.left)),\n Match.tag('Union', (o) => {\n const right = certainSet(o.right);\n return StringMap.setOf(Array.from(certainSet(o.left).keys()).filter((v) => right.has(v)));\n }),\n Match.tag('Filter', 'OrderBy', 'Distinct', 'Reduced', 'Slice', 'Extend', (o) =>\n certainSet(o.input),\n ),\n Match.tag('Graph', 'Service', (o) => {\n const out = certainSet(o.input);\n if (Term.isVariable(o.name)) out.set(o.name.value, true);\n return out;\n }),\n Match.tag('Group', () => StringMap.emptySet()),\n Match.tag('Project', (o) => {\n const inner = certainSet(o.input);\n return StringMap.setOf(o.variables.map((v) => v.value).filter((v) => inner.has(v)));\n }),\n Match.tag('Values', (o) =>\n StringMap.setOf(\n o.variables.map((v) => v.value).filter((v) => o.bindings.every((b) => b.map.has(v))),\n ),\n ),\n Match.exhaustive,\n );\n};\n\n/**\n * The variables mentioned by an expression (not looking into `EXISTS`).\n *\n * @since 0.1.0\n * @category utils\n */\nexport const expressionVariables = (expression: Expression): ReadonlySet<string> => {\n const out = StringMap.emptySet();\n const go = (e: Expression): void => {\n Match.value(e).pipe(\n Match.tag('Variable', 'Triple', (t) => termVariables(t, out)),\n Match.tag('Operation', 'FunctionCall', (call) => call.args.forEach(go)),\n Match.orElse(() => undefined),\n );\n };\n go(expression);\n return toReadonlySet(out);\n};\n\n/**\n * Whether an expression contains `EXISTS` / `NOT EXISTS`.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const containsExists = (expression: Expression): boolean => {\n return Match.value(expression).pipe(\n Match.tag('Exists', () => true),\n Match.tag('Operation', 'FunctionCall', (call) => call.args.some(containsExists)),\n Match.orElse(() => false),\n );\n};\n\n/**\n * Rewrites an operator tree bottom-up: `f` is applied to every node after\n * its children have been rewritten.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const transform = (op: Operation, f: (op: Operation) => Operation): Operation => {\n const go = (o: Operation): Operation => f(mapChildren(o, go));\n return go(op);\n};\n\n/**\n * Applies `f` to the direct children of an operator.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const mapChildren = (op: Operation, f: (op: Operation) => Operation): Operation => {\n return Match.value(op).pipe(\n Match.tag('Bgp', 'Path', 'Values', (o): Operation => o),\n Match.tag('Join', 'Union', 'Minus', (o) => ({ ...o, left: f(o.left), right: f(o.right) })),\n Match.tag('LeftJoin', (o) => ({ ...o, left: f(o.left), right: f(o.right) })),\n Match.tag(\n 'Filter',\n 'Graph',\n 'Extend',\n 'Group',\n 'OrderBy',\n 'Project',\n 'Distinct',\n 'Reduced',\n 'Slice',\n 'Service',\n // SAFETY: every operator listed here has an `input`, and replacing it keeps the\n // operator's own tag.\n (o) => ({ ...o, input: f(o.input) }),\n ),\n Match.exhaustive,\n );\n};\n\nconst termText = (t: Term.Term | Ast.TermPattern): string =>\n Term.isTriple(t)\n ? `<<( ${termText(t.subject)} ${termText(t.predicate)} ${termText(t.object)} )>>`\n : t.toString();\n\nconst pathText = (p: Ast.Path): string => {\n return Match.value(p).pipe(\n Match.tag('PathLink', (l) => termText(l.iri)),\n Match.tag('PathInverse', (i) => `(inv ${pathText(i.path)})`),\n Match.tag('PathSequence', (s) => `(seq ${s.paths.map(pathText).join(' ')})`),\n Match.tag('PathAlternative', (a) => `(alt ${a.paths.map(pathText).join(' ')})`),\n Match.tag('PathZeroOrMore', (z) => `(path* ${pathText(z.path)})`),\n Match.tag('PathOneOrMore', (o) => `(path+ ${pathText(o.path)})`),\n Match.tag('PathZeroOrOne', (z) => `(path? ${pathText(z.path)})`),\n Match.tag(\n 'PathNegated',\n (n) =>\n `(notoneof ${[...n.iris.map(termText), ...n.inverse.map((i) => `^${termText(i)}`)].join(' ')})`,\n ),\n Match.exhaustive,\n );\n};\n\n/**\n * Formats an expression as an S-expression (for debugging and logging).\n *\n * @since 0.1.0\n * @category formatting\n */\nexport const formatExpression = (e: Expression): string => {\n return Match.value(e).pipe(\n Match.tag(\n 'Operation',\n (o) => `(${o.operator.toLowerCase()} ${o.args.map(formatExpression).join(' ')})`,\n ),\n Match.tag(\n 'FunctionCall',\n (c) => `(${termText(c.function)} ${c.args.map(formatExpression).join(' ')})`,\n ),\n Match.tag('Exists', (x) => `(${x.negated ? 'notexists' : 'exists'} ${format(x.input)})`),\n Match.orElse((t) => termText(t)),\n );\n};\n\n/**\n * Formats an operator tree as an S-expression in the style of the SPARQL\n * Algebra notation (for debugging and logging).\n *\n * @since 0.1.0\n * @category formatting\n */\nexport const format = (op: Operation, indent = ''): string => {\n const next = `${indent} `;\n const sub = (o: Operation) => `\\n${next}${format(o, next)}`;\n return Match.value(op).pipe(\n Match.tag(\n 'Bgp',\n (o) =>\n `(bgp${o.patterns.map((p) => ` (triple ${termText(p.subject)} ${termText(p.predicate)} ${termText(p.object)})`).join('')})`,\n ),\n Match.tag(\n 'Path',\n (o) => `(path ${termText(o.subject)} ${pathText(o.path)} ${termText(o.object)})`,\n ),\n Match.tag('Join', (o) => `(join${sub(o.left)}${sub(o.right)})`),\n Match.tag(\n 'LeftJoin',\n (o) =>\n `(leftjoin${sub(o.left)}${sub(o.right)}${o.expression !== undefined ? `\\n${next}${formatExpression(o.expression)}` : ''})`,\n ),\n Match.tag('Filter', (o) => `(filter ${formatExpression(o.expression)}${sub(o.input)})`),\n Match.tag('Union', (o) => `(union${sub(o.left)}${sub(o.right)})`),\n Match.tag('Graph', (o) => `(graph ${termText(o.name)}${sub(o.input)})`),\n Match.tag(\n 'Extend',\n (o) =>\n `(extend ((${termText(o.variable)} ${formatExpression(o.expression)}))${sub(o.input)})`,\n ),\n Match.tag('Minus', (o) => `(minus${sub(o.left)}${sub(o.right)})`),\n Match.tag(\n 'Group',\n (o) =>\n `(group (${o.keys.map((k) => `(${termText(k.variable)} ${formatExpression(k.expression)})`).join(' ')}) (${o.aggregates\n .map(\n (a) =>\n `(${termText(a.variable)} (${a.aggregate.name.toLowerCase()}${a.aggregate.distinct ? ' distinct' : ''} ${a.aggregate.expression === '*' ? '*' : formatExpression(a.aggregate.expression)}))`,\n )\n .join(' ')})${sub(o.input)})`,\n ),\n Match.tag(\n 'OrderBy',\n (o) =>\n `(order (${o.conditions.map((c) => (c.descending ? `(desc ${formatExpression(c.expression)})` : formatExpression(c.expression))).join(' ')})${sub(o.input)})`,\n ),\n Match.tag(\n 'Project',\n (o) => `(project (${o.variables.map(termText).join(' ')})${sub(o.input)})`,\n ),\n Match.tag('Distinct', (o) => `(distinct${sub(o.input)})`),\n Match.tag('Reduced', (o) => `(reduced${sub(o.input)})`),\n Match.tag('Slice', (o) => `(slice ${o.offset} ${o.limit ?? '_'}${sub(o.input)})`),\n Match.tag(\n 'Values',\n (o) => `(table (vars ${o.variables.map(termText).join(' ')}) ${o.bindings.length} rows)`,\n ),\n Match.tag(\n 'Service',\n (o) => `(service ${o.silent ? 'silent ' : ''}${termText(o.name)}${sub(o.input)})`,\n ),\n Match.exhaustive,\n );\n};\n\n/**\n * Creates an internal variable.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const internalVariable = (name: string): Term.Variable => Term.variable(`@${name}`);\n\n// -----------------------------------------------------------------------------\n// Pre-binding\n// -----------------------------------------------------------------------------\n\n/**\n * Applies `f` to every graph pattern nested in an expression (the patterns\n * of `EXISTS` / `NOT EXISTS`).\n *\n * @since 0.1.0\n * @category utils\n */\nexport const mapExpressionPatterns = (\n expression: Expression,\n f: (op: Operation) => Operation,\n): Expression => {\n return Match.value(expression).pipe(\n Match.tag('Exists', (x): Expression => ({ ...x, input: f(x.input) })),\n Match.tag('Operation', (o) => ({\n ...o,\n args: o.args.map((a) => mapExpressionPatterns(a, f)),\n })),\n Match.tag('FunctionCall', (c) => ({\n ...c,\n args: c.args.map((a) => mapExpressionPatterns(a, f)),\n })),\n Match.orElse((e) => e),\n );\n};\n\n/**\n * Pre-binds variables in an algebra expression, following the \"values\n * insertion\" definition of SHACL-SPARQL (Appendix \"Pre-binding of\n * Variables\", aligned with the SPARQL `EXISTS` errata): every basic graph\n * pattern, property path and `GRAPH ?var` pattern `Y` — including those\n * nested in `EXISTS` — is replaced by `Join(Table(μ), Y)`, where `Table(μ)`\n * is a one-row `VALUES` table holding the pre-bound solution `μ`.\n *\n * The pre-bound values are also substituted into the replaced patterns,\n * which does not change the result (the join restores the bindings) but lets\n * the optimizer and the store use them as constants.\n *\n * Unlike a trailing `VALUES` clause, pre-bound values are visible to every\n * `FILTER` and `BIND`, including those of groups that never match the\n * variable: `SELECT $this WHERE { FILTER ($this = ex:a) }` has one solution\n * when `this` is pre-bound to `ex:a`. Queries using `MINUS`, `VALUES` or\n * `SERVICE`, rebinding a pre-bound variable with `AS`, or with sub-queries\n * that do not project the pre-bound variables, have no well-defined meaning\n * under pre-binding.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const prebind = (op: Operation, bindings: Bindings): Operation => {\n if (bindings.map.size === 0) return op;\n const table: Values = {\n _tag: 'Values',\n variables: Array.from(bindings.map.keys(), (v) => Term.variable(v)),\n bindings: [bindings],\n };\n const term = (t: Ast.TermPattern): Ast.TermPattern => {\n if (Term.isVariable(t)) return bindings.map.get(t.value) ?? t;\n if (Term.isTriple(t)) {\n const s = term(t.subject);\n const p = term(t.predicate);\n const o = term(t.object);\n // Substituting ground terms into a triple pattern keeps each position's kind.\n return s === t.subject && p === t.predicate && o === t.object\n ? t\n : Term.triple<any, any, any>(s, p, o);\n }\n return t;\n };\n const predicate = (p: Ast.VarOrIri): Ast.VarOrIri => {\n if (!Term.isVariable(p)) return p;\n const v = bindings.map.get(p.value);\n return Term.isNamedNode(v) ? v : p;\n };\n const expr = (e: Expression): Expression => mapExpressionPatterns(e, go);\n const go = (o: Operation): Operation => {\n return Match.value(o).pipe(\n Match.tag('Bgp', (b): Operation =>\n Arr.isReadonlyArrayEmpty(b.patterns)\n ? table\n : join(\n table,\n bgp(\n b.patterns.map((p): Ast.TriplePattern => ({\n _tag: 'TriplePattern',\n subject: term(p.subject),\n predicate: predicate(p.predicate),\n object: term(p.object),\n })),\n ),\n ),\n ),\n Match.tag('Path', (p) =>\n join(table, { ...p, subject: term(p.subject), object: term(p.object) }),\n ),\n Match.tag('Graph', (g) => {\n const input = go(g.input);\n const value = Term.isVariable(g.name) ? bindings.map.get(g.name.value) : undefined;\n if (value === undefined) return { ...g, input };\n return join(\n table,\n Term.isNamedNode(value) ? { ...g, name: value, input } : { ...g, input },\n );\n }),\n Match.tag('Filter', (x) => ({ ...x, expression: expr(x.expression), input: go(x.input) })),\n Match.tag('LeftJoin', (l) =>\n l.expression === undefined\n ? { ...l, left: go(l.left), right: go(l.right) }\n : { ...l, left: go(l.left), right: go(l.right), expression: expr(l.expression) },\n ),\n Match.tag('Extend', (x) => ({ ...x, expression: expr(x.expression), input: go(x.input) })),\n Match.tag('OrderBy', (x) => ({\n ...x,\n input: go(x.input),\n conditions: x.conditions.map((c) => ({ ...c, expression: expr(c.expression) })),\n })),\n Match.tag('Group', (x) => ({\n ...x,\n input: go(x.input),\n keys: x.keys.map((k) => ({ ...k, expression: expr(k.expression) })),\n aggregates: x.aggregates.map((a) => ({\n ...a,\n aggregate:\n a.aggregate.expression === '*'\n ? a.aggregate\n : { ...a.aggregate, expression: expr(a.aggregate.expression) },\n })),\n })),\n Match.orElse((x) => mapChildren(x, go)),\n );\n };\n return go(op);\n};\n"],"mappings":"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"}
|