@thomasfosterau/effect-rdf 0.0.0 → 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 +2250 -1
- 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 +187 -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,1344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The abstract syntax tree of SPARQL 1.1 (and SPARQL 1.2) queries and
|
|
3
|
+
* updates.
|
|
4
|
+
*
|
|
5
|
+
* The AST stays close to the surface syntax (group graph patterns, solution
|
|
6
|
+
* modifiers, update operations) while using the core `Term` model for all
|
|
7
|
+
* IRIs, literals, blank nodes, variables and triple terms. Abbreviated
|
|
8
|
+
* syntax (prefixed names, `a`, blank node property lists, collections,
|
|
9
|
+
* reifiers and annotations) is expanded by the parser, so every IRI in the
|
|
10
|
+
* tree is absolute.
|
|
11
|
+
*
|
|
12
|
+
* All nodes are plain immutable objects discriminated by `_tag`; the
|
|
13
|
+
* constructors in this module are the recommended way to build them.
|
|
14
|
+
*
|
|
15
|
+
* @since 0.1.0
|
|
16
|
+
*/
|
|
17
|
+
import * as Term from '../Term.ts';
|
|
18
|
+
import * as Predicate from 'effect/Predicate';
|
|
19
|
+
import * as Match from 'effect/Match';
|
|
20
|
+
import * as StringMap from './internal/stringMap.ts';
|
|
21
|
+
|
|
22
|
+
// -----------------------------------------------------------------------------
|
|
23
|
+
// Terms
|
|
24
|
+
// -----------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A term that may appear in a triple pattern: an IRI, literal, blank node,
|
|
28
|
+
* variable or triple term (whose components may themselves be variables).
|
|
29
|
+
*
|
|
30
|
+
* @since 0.1.0
|
|
31
|
+
* @category models
|
|
32
|
+
*/
|
|
33
|
+
export type TermPattern =
|
|
34
|
+
| Term.NamedNode
|
|
35
|
+
| Term.BlankNode
|
|
36
|
+
| Term.Literal
|
|
37
|
+
| Term.Variable
|
|
38
|
+
| Term.Triple<any, any, any>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* An IRI or a variable.
|
|
42
|
+
*
|
|
43
|
+
* @since 0.1.0
|
|
44
|
+
* @category models
|
|
45
|
+
*/
|
|
46
|
+
export type VarOrIri = Term.NamedNode | Term.Variable;
|
|
47
|
+
|
|
48
|
+
// -----------------------------------------------------------------------------
|
|
49
|
+
// Property paths
|
|
50
|
+
// -----------------------------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* A property path expression (SPARQL 1.1 §9).
|
|
54
|
+
*
|
|
55
|
+
* A path consisting of a single IRI is represented as `PathLink`; triple
|
|
56
|
+
* patterns whose predicate is a plain IRI use `TriplePattern` instead.
|
|
57
|
+
*
|
|
58
|
+
* @since 0.1.0
|
|
59
|
+
* @category models
|
|
60
|
+
*/
|
|
61
|
+
export type Path =
|
|
62
|
+
| PathLink
|
|
63
|
+
| PathInverse
|
|
64
|
+
| PathSequence
|
|
65
|
+
| PathAlternative
|
|
66
|
+
| PathZeroOrMore
|
|
67
|
+
| PathOneOrMore
|
|
68
|
+
| PathZeroOrOne
|
|
69
|
+
| PathNegated;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @since 0.1.0
|
|
73
|
+
* @category models
|
|
74
|
+
*/
|
|
75
|
+
export interface PathLink {
|
|
76
|
+
readonly _tag: 'PathLink';
|
|
77
|
+
readonly iri: Term.NamedNode;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* `^path`
|
|
82
|
+
*
|
|
83
|
+
* @since 0.1.0
|
|
84
|
+
* @category models
|
|
85
|
+
*/
|
|
86
|
+
export interface PathInverse {
|
|
87
|
+
readonly _tag: 'PathInverse';
|
|
88
|
+
readonly path: Path;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* `path1 / path2 / …`
|
|
93
|
+
*
|
|
94
|
+
* @since 0.1.0
|
|
95
|
+
* @category models
|
|
96
|
+
*/
|
|
97
|
+
export interface PathSequence {
|
|
98
|
+
readonly _tag: 'PathSequence';
|
|
99
|
+
readonly paths: ReadonlyArray<Path>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* `path1 | path2 | …`
|
|
104
|
+
*
|
|
105
|
+
* @since 0.1.0
|
|
106
|
+
* @category models
|
|
107
|
+
*/
|
|
108
|
+
export interface PathAlternative {
|
|
109
|
+
readonly _tag: 'PathAlternative';
|
|
110
|
+
readonly paths: ReadonlyArray<Path>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* `path*`
|
|
115
|
+
*
|
|
116
|
+
* @since 0.1.0
|
|
117
|
+
* @category models
|
|
118
|
+
*/
|
|
119
|
+
export interface PathZeroOrMore {
|
|
120
|
+
readonly _tag: 'PathZeroOrMore';
|
|
121
|
+
readonly path: Path;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* `path+`
|
|
126
|
+
*
|
|
127
|
+
* @since 0.1.0
|
|
128
|
+
* @category models
|
|
129
|
+
*/
|
|
130
|
+
export interface PathOneOrMore {
|
|
131
|
+
readonly _tag: 'PathOneOrMore';
|
|
132
|
+
readonly path: Path;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* `path?`
|
|
137
|
+
*
|
|
138
|
+
* @since 0.1.0
|
|
139
|
+
* @category models
|
|
140
|
+
*/
|
|
141
|
+
export interface PathZeroOrOne {
|
|
142
|
+
readonly _tag: 'PathZeroOrOne';
|
|
143
|
+
readonly path: Path;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* A negated property set `!(iri1 | ^iri2 | …)`. `iris` are the forward
|
|
148
|
+
* IRIs and `inverse` the IRIs written with `^`.
|
|
149
|
+
*
|
|
150
|
+
* @since 0.1.0
|
|
151
|
+
* @category models
|
|
152
|
+
*/
|
|
153
|
+
export interface PathNegated {
|
|
154
|
+
readonly _tag: 'PathNegated';
|
|
155
|
+
readonly iris: ReadonlyArray<Term.NamedNode>;
|
|
156
|
+
readonly inverse: ReadonlyArray<Term.NamedNode>;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @since 0.1.0
|
|
161
|
+
* @category guards
|
|
162
|
+
*/
|
|
163
|
+
export const isPath = (u: unknown): u is Path =>
|
|
164
|
+
Predicate.hasProperty(u, '_tag') && Predicate.isString(u._tag) && u._tag.startsWith('Path');
|
|
165
|
+
|
|
166
|
+
// -----------------------------------------------------------------------------
|
|
167
|
+
// Triple and quad patterns
|
|
168
|
+
// -----------------------------------------------------------------------------
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* A triple pattern whose predicate is an IRI or a variable.
|
|
172
|
+
*
|
|
173
|
+
* @since 0.1.0
|
|
174
|
+
* @category models
|
|
175
|
+
*/
|
|
176
|
+
export interface TriplePattern {
|
|
177
|
+
readonly _tag: 'TriplePattern';
|
|
178
|
+
readonly subject: TermPattern;
|
|
179
|
+
readonly predicate: VarOrIri;
|
|
180
|
+
readonly object: TermPattern;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* A triple pattern whose predicate is a (non-trivial) property path.
|
|
185
|
+
*
|
|
186
|
+
* @since 0.1.0
|
|
187
|
+
* @category models
|
|
188
|
+
*/
|
|
189
|
+
export interface PathPattern {
|
|
190
|
+
readonly _tag: 'PathPattern';
|
|
191
|
+
readonly subject: TermPattern;
|
|
192
|
+
readonly path: Path;
|
|
193
|
+
readonly object: TermPattern;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* A triple pattern within a graph: used by update templates (`INSERT`,
|
|
198
|
+
* `DELETE`, `DELETE WHERE`). `graph` is the default graph for triples
|
|
199
|
+
* outside of a `GRAPH` block.
|
|
200
|
+
*
|
|
201
|
+
* @since 0.1.0
|
|
202
|
+
* @category models
|
|
203
|
+
*/
|
|
204
|
+
export interface QuadPattern {
|
|
205
|
+
readonly _tag: 'QuadPattern';
|
|
206
|
+
readonly subject: TermPattern;
|
|
207
|
+
readonly predicate: VarOrIri;
|
|
208
|
+
readonly object: TermPattern;
|
|
209
|
+
readonly graph: Term.NamedNode | Term.Variable | Term.DefaultGraph;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// -----------------------------------------------------------------------------
|
|
213
|
+
// Expressions
|
|
214
|
+
// -----------------------------------------------------------------------------
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* The built-in operators and functions of SPARQL 1.1 and 1.2, in their
|
|
218
|
+
* canonical (upper case) spelling. Unary plus and minus are `UPLUS` and
|
|
219
|
+
* `UMINUS`; `IN` and `NOT IN` take the tested expression as their first
|
|
220
|
+
* argument.
|
|
221
|
+
*
|
|
222
|
+
* @since 0.1.0
|
|
223
|
+
* @category models
|
|
224
|
+
*/
|
|
225
|
+
export type Operator =
|
|
226
|
+
| '||'
|
|
227
|
+
| '&&'
|
|
228
|
+
| '!'
|
|
229
|
+
| '='
|
|
230
|
+
| '!='
|
|
231
|
+
| '<'
|
|
232
|
+
| '>'
|
|
233
|
+
| '<='
|
|
234
|
+
| '>='
|
|
235
|
+
| '+'
|
|
236
|
+
| '-'
|
|
237
|
+
| '*'
|
|
238
|
+
| '/'
|
|
239
|
+
| 'UPLUS'
|
|
240
|
+
| 'UMINUS'
|
|
241
|
+
| 'IN'
|
|
242
|
+
| 'NOT IN'
|
|
243
|
+
| BuiltInName;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Names of the built-in function calls (`BuiltInCall` in the grammar,
|
|
247
|
+
* excluding aggregates and `EXISTS`).
|
|
248
|
+
*
|
|
249
|
+
* @since 0.1.0
|
|
250
|
+
* @category models
|
|
251
|
+
*/
|
|
252
|
+
export type BuiltInName =
|
|
253
|
+
| 'STR'
|
|
254
|
+
| 'LANG'
|
|
255
|
+
| 'LANGMATCHES'
|
|
256
|
+
| 'LANGDIR'
|
|
257
|
+
| 'DATATYPE'
|
|
258
|
+
| 'BOUND'
|
|
259
|
+
| 'IRI'
|
|
260
|
+
| 'URI'
|
|
261
|
+
| 'BNODE'
|
|
262
|
+
| 'RAND'
|
|
263
|
+
| 'ABS'
|
|
264
|
+
| 'CEIL'
|
|
265
|
+
| 'FLOOR'
|
|
266
|
+
| 'ROUND'
|
|
267
|
+
| 'CONCAT'
|
|
268
|
+
| 'SUBSTR'
|
|
269
|
+
| 'STRLEN'
|
|
270
|
+
| 'REPLACE'
|
|
271
|
+
| 'UCASE'
|
|
272
|
+
| 'LCASE'
|
|
273
|
+
| 'ENCODE_FOR_URI'
|
|
274
|
+
| 'CONTAINS'
|
|
275
|
+
| 'STRSTARTS'
|
|
276
|
+
| 'STRENDS'
|
|
277
|
+
| 'STRBEFORE'
|
|
278
|
+
| 'STRAFTER'
|
|
279
|
+
| 'YEAR'
|
|
280
|
+
| 'MONTH'
|
|
281
|
+
| 'DAY'
|
|
282
|
+
| 'HOURS'
|
|
283
|
+
| 'MINUTES'
|
|
284
|
+
| 'SECONDS'
|
|
285
|
+
| 'TIMEZONE'
|
|
286
|
+
| 'TZ'
|
|
287
|
+
| 'NOW'
|
|
288
|
+
| 'UUID'
|
|
289
|
+
| 'STRUUID'
|
|
290
|
+
| 'MD5'
|
|
291
|
+
| 'SHA1'
|
|
292
|
+
| 'SHA256'
|
|
293
|
+
| 'SHA384'
|
|
294
|
+
| 'SHA512'
|
|
295
|
+
| 'COALESCE'
|
|
296
|
+
| 'IF'
|
|
297
|
+
| 'STRLANG'
|
|
298
|
+
| 'STRLANGDIR'
|
|
299
|
+
| 'STRDT'
|
|
300
|
+
| 'SAMETERM'
|
|
301
|
+
| 'ISIRI'
|
|
302
|
+
| 'ISURI'
|
|
303
|
+
| 'ISBLANK'
|
|
304
|
+
| 'ISLITERAL'
|
|
305
|
+
| 'ISNUMERIC'
|
|
306
|
+
| 'HASLANG'
|
|
307
|
+
| 'HASLANGDIR'
|
|
308
|
+
| 'REGEX'
|
|
309
|
+
| 'ISTRIPLE'
|
|
310
|
+
| 'TRIPLE'
|
|
311
|
+
| 'SUBJECT'
|
|
312
|
+
| 'PREDICATE'
|
|
313
|
+
| 'OBJECT';
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Arity of each built-in function: `[min, max]` (`max` = `Infinity` for
|
|
317
|
+
* variadic functions).
|
|
318
|
+
*
|
|
319
|
+
* @since 0.1.0
|
|
320
|
+
* @category models
|
|
321
|
+
*/
|
|
322
|
+
export const builtInArity: Readonly<Record<BuiltInName, readonly [number, number]>> = {
|
|
323
|
+
STR: [1, 1],
|
|
324
|
+
LANG: [1, 1],
|
|
325
|
+
LANGMATCHES: [2, 2],
|
|
326
|
+
LANGDIR: [1, 1],
|
|
327
|
+
DATATYPE: [1, 1],
|
|
328
|
+
BOUND: [1, 1],
|
|
329
|
+
IRI: [1, 1],
|
|
330
|
+
URI: [1, 1],
|
|
331
|
+
BNODE: [0, 1],
|
|
332
|
+
RAND: [0, 0],
|
|
333
|
+
ABS: [1, 1],
|
|
334
|
+
CEIL: [1, 1],
|
|
335
|
+
FLOOR: [1, 1],
|
|
336
|
+
ROUND: [1, 1],
|
|
337
|
+
CONCAT: [0, Infinity],
|
|
338
|
+
SUBSTR: [2, 3],
|
|
339
|
+
STRLEN: [1, 1],
|
|
340
|
+
REPLACE: [3, 4],
|
|
341
|
+
UCASE: [1, 1],
|
|
342
|
+
LCASE: [1, 1],
|
|
343
|
+
ENCODE_FOR_URI: [1, 1],
|
|
344
|
+
CONTAINS: [2, 2],
|
|
345
|
+
STRSTARTS: [2, 2],
|
|
346
|
+
STRENDS: [2, 2],
|
|
347
|
+
STRBEFORE: [2, 2],
|
|
348
|
+
STRAFTER: [2, 2],
|
|
349
|
+
YEAR: [1, 1],
|
|
350
|
+
MONTH: [1, 1],
|
|
351
|
+
DAY: [1, 1],
|
|
352
|
+
HOURS: [1, 1],
|
|
353
|
+
MINUTES: [1, 1],
|
|
354
|
+
SECONDS: [1, 1],
|
|
355
|
+
TIMEZONE: [1, 1],
|
|
356
|
+
TZ: [1, 1],
|
|
357
|
+
NOW: [0, 0],
|
|
358
|
+
UUID: [0, 0],
|
|
359
|
+
STRUUID: [0, 0],
|
|
360
|
+
MD5: [1, 1],
|
|
361
|
+
SHA1: [1, 1],
|
|
362
|
+
SHA256: [1, 1],
|
|
363
|
+
SHA384: [1, 1],
|
|
364
|
+
SHA512: [1, 1],
|
|
365
|
+
COALESCE: [0, Infinity],
|
|
366
|
+
IF: [3, 3],
|
|
367
|
+
STRLANG: [2, 2],
|
|
368
|
+
STRLANGDIR: [3, 3],
|
|
369
|
+
STRDT: [2, 2],
|
|
370
|
+
SAMETERM: [2, 2],
|
|
371
|
+
ISIRI: [1, 1],
|
|
372
|
+
ISURI: [1, 1],
|
|
373
|
+
ISBLANK: [1, 1],
|
|
374
|
+
ISLITERAL: [1, 1],
|
|
375
|
+
ISNUMERIC: [1, 1],
|
|
376
|
+
HASLANG: [1, 1],
|
|
377
|
+
HASLANGDIR: [1, 1],
|
|
378
|
+
REGEX: [2, 3],
|
|
379
|
+
ISTRIPLE: [1, 1],
|
|
380
|
+
TRIPLE: [3, 3],
|
|
381
|
+
SUBJECT: [1, 1],
|
|
382
|
+
PREDICATE: [1, 1],
|
|
383
|
+
OBJECT: [1, 1],
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Whether a (case-insensitive) name is a built-in function.
|
|
388
|
+
*
|
|
389
|
+
* @since 0.1.0
|
|
390
|
+
* @category guards
|
|
391
|
+
*/
|
|
392
|
+
export const isBuiltInName = (name: string): name is BuiltInName =>
|
|
393
|
+
Object.prototype.hasOwnProperty.call(builtInArity, name.toUpperCase());
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* A SPARQL expression. Variables and constant terms are expressions as-is.
|
|
397
|
+
*
|
|
398
|
+
* @since 0.1.0
|
|
399
|
+
* @category models
|
|
400
|
+
*/
|
|
401
|
+
export type Expression =
|
|
402
|
+
| Term.Variable
|
|
403
|
+
| Term.NamedNode
|
|
404
|
+
| Term.Literal
|
|
405
|
+
| Term.BlankNode
|
|
406
|
+
| Term.Triple<any, any, any>
|
|
407
|
+
| OperationExpression
|
|
408
|
+
| FunctionCallExpression
|
|
409
|
+
| AggregateExpression
|
|
410
|
+
| ExistsExpression;
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* An operator or built-in function application.
|
|
414
|
+
*
|
|
415
|
+
* @since 0.1.0
|
|
416
|
+
* @category models
|
|
417
|
+
*/
|
|
418
|
+
export interface OperationExpression {
|
|
419
|
+
readonly _tag: 'Operation';
|
|
420
|
+
readonly operator: Operator;
|
|
421
|
+
readonly args: ReadonlyArray<Expression>;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* A call to an extension function (or a cast such as `xsd:integer(?x)`)
|
|
426
|
+
* identified by IRI.
|
|
427
|
+
*
|
|
428
|
+
* @since 0.1.0
|
|
429
|
+
* @category models
|
|
430
|
+
*/
|
|
431
|
+
export interface FunctionCallExpression {
|
|
432
|
+
readonly _tag: 'FunctionCall';
|
|
433
|
+
readonly function: Term.NamedNode;
|
|
434
|
+
readonly args: ReadonlyArray<Expression>;
|
|
435
|
+
/** `DISTINCT` was given (only meaningful for custom aggregates). */
|
|
436
|
+
readonly distinct: boolean;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* @since 0.1.0
|
|
441
|
+
* @category models
|
|
442
|
+
*/
|
|
443
|
+
export type AggregateName = 'COUNT' | 'SUM' | 'MIN' | 'MAX' | 'AVG' | 'SAMPLE' | 'GROUP_CONCAT';
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* An aggregate. `expression` is `'*'` for `COUNT(*)`.
|
|
447
|
+
*
|
|
448
|
+
* @since 0.1.0
|
|
449
|
+
* @category models
|
|
450
|
+
*/
|
|
451
|
+
export interface AggregateExpression {
|
|
452
|
+
readonly _tag: 'Aggregate';
|
|
453
|
+
readonly name: AggregateName;
|
|
454
|
+
readonly distinct: boolean;
|
|
455
|
+
readonly expression: Expression | '*';
|
|
456
|
+
/** The `SEPARATOR` of `GROUP_CONCAT` (defaults to a single space). */
|
|
457
|
+
readonly separator?: string | undefined;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* `EXISTS { … }` / `NOT EXISTS { … }`.
|
|
462
|
+
*
|
|
463
|
+
* @since 0.1.0
|
|
464
|
+
* @category models
|
|
465
|
+
*/
|
|
466
|
+
export interface ExistsExpression {
|
|
467
|
+
readonly _tag: 'Exists';
|
|
468
|
+
readonly negated: boolean;
|
|
469
|
+
readonly pattern: GroupPattern;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
// -----------------------------------------------------------------------------
|
|
473
|
+
// Graph patterns
|
|
474
|
+
// -----------------------------------------------------------------------------
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* An element of a group graph pattern.
|
|
478
|
+
*
|
|
479
|
+
* @since 0.1.0
|
|
480
|
+
* @category models
|
|
481
|
+
*/
|
|
482
|
+
export type Pattern =
|
|
483
|
+
| BgpPattern
|
|
484
|
+
| GroupPattern
|
|
485
|
+
| OptionalPattern
|
|
486
|
+
| UnionPattern
|
|
487
|
+
| MinusPattern
|
|
488
|
+
| GraphPattern
|
|
489
|
+
| ServicePattern
|
|
490
|
+
| FilterPattern
|
|
491
|
+
| BindPattern
|
|
492
|
+
| ValuesPattern
|
|
493
|
+
| SubSelectPattern;
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* A block of triple patterns (`TriplesBlock`).
|
|
497
|
+
*
|
|
498
|
+
* @since 0.1.0
|
|
499
|
+
* @category models
|
|
500
|
+
*/
|
|
501
|
+
export interface BgpPattern {
|
|
502
|
+
readonly _tag: 'Bgp';
|
|
503
|
+
readonly triples: ReadonlyArray<TriplePattern | PathPattern>;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* A group graph pattern `{ … }`.
|
|
508
|
+
*
|
|
509
|
+
* @since 0.1.0
|
|
510
|
+
* @category models
|
|
511
|
+
*/
|
|
512
|
+
export interface GroupPattern {
|
|
513
|
+
readonly _tag: 'Group';
|
|
514
|
+
readonly patterns: ReadonlyArray<Pattern>;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* @since 0.1.0
|
|
519
|
+
* @category models
|
|
520
|
+
*/
|
|
521
|
+
export interface OptionalPattern {
|
|
522
|
+
readonly _tag: 'Optional';
|
|
523
|
+
readonly pattern: GroupPattern;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* `{ … } UNION { … } UNION …`
|
|
528
|
+
*
|
|
529
|
+
* @since 0.1.0
|
|
530
|
+
* @category models
|
|
531
|
+
*/
|
|
532
|
+
export interface UnionPattern {
|
|
533
|
+
readonly _tag: 'Union';
|
|
534
|
+
readonly patterns: ReadonlyArray<GroupPattern>;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* @since 0.1.0
|
|
539
|
+
* @category models
|
|
540
|
+
*/
|
|
541
|
+
export interface MinusPattern {
|
|
542
|
+
readonly _tag: 'Minus';
|
|
543
|
+
readonly pattern: GroupPattern;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* `GRAPH ?g { … }`
|
|
548
|
+
*
|
|
549
|
+
* @since 0.1.0
|
|
550
|
+
* @category models
|
|
551
|
+
*/
|
|
552
|
+
export interface GraphPattern {
|
|
553
|
+
readonly _tag: 'Graph';
|
|
554
|
+
readonly name: VarOrIri;
|
|
555
|
+
readonly pattern: GroupPattern;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* `SERVICE [SILENT] <endpoint> { … }`
|
|
560
|
+
*
|
|
561
|
+
* @since 0.1.0
|
|
562
|
+
* @category models
|
|
563
|
+
*/
|
|
564
|
+
export interface ServicePattern {
|
|
565
|
+
readonly _tag: 'Service';
|
|
566
|
+
readonly name: VarOrIri;
|
|
567
|
+
readonly silent: boolean;
|
|
568
|
+
readonly pattern: GroupPattern;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* @since 0.1.0
|
|
573
|
+
* @category models
|
|
574
|
+
*/
|
|
575
|
+
export interface FilterPattern {
|
|
576
|
+
readonly _tag: 'Filter';
|
|
577
|
+
readonly expression: Expression;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/**
|
|
581
|
+
* `BIND (expr AS ?var)`
|
|
582
|
+
*
|
|
583
|
+
* @since 0.1.0
|
|
584
|
+
* @category models
|
|
585
|
+
*/
|
|
586
|
+
export interface BindPattern {
|
|
587
|
+
readonly _tag: 'Bind';
|
|
588
|
+
readonly expression: Expression;
|
|
589
|
+
readonly variable: Term.Variable;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Inline data. Each row has one entry per variable; `undefined` is `UNDEF`.
|
|
594
|
+
*
|
|
595
|
+
* @since 0.1.0
|
|
596
|
+
* @category models
|
|
597
|
+
*/
|
|
598
|
+
export interface ValuesPattern {
|
|
599
|
+
readonly _tag: 'Values';
|
|
600
|
+
readonly variables: ReadonlyArray<Term.Variable>;
|
|
601
|
+
readonly rows: ReadonlyArray<ReadonlyArray<Term.GroundTerm | undefined>>;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* A nested `SELECT` query.
|
|
606
|
+
*
|
|
607
|
+
* @since 0.1.0
|
|
608
|
+
* @category models
|
|
609
|
+
*/
|
|
610
|
+
export interface SubSelectPattern {
|
|
611
|
+
readonly _tag: 'SubSelect';
|
|
612
|
+
readonly query: SelectQuery;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// -----------------------------------------------------------------------------
|
|
616
|
+
// Queries
|
|
617
|
+
// -----------------------------------------------------------------------------
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* The prologue of a query or update: the declared base IRI, prefixes and
|
|
621
|
+
* version. Declarations are kept for pretty printing only; the parser has
|
|
622
|
+
* already expanded all IRIs.
|
|
623
|
+
*
|
|
624
|
+
* @since 0.1.0
|
|
625
|
+
* @category models
|
|
626
|
+
*/
|
|
627
|
+
export interface Prologue {
|
|
628
|
+
readonly base?: string | undefined;
|
|
629
|
+
readonly prefixes: Readonly<Record<string, string>>;
|
|
630
|
+
readonly version?: string | undefined;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* `FROM` and `FROM NAMED` (or `USING` / `USING NAMED`) clauses.
|
|
635
|
+
*
|
|
636
|
+
* @since 0.1.0
|
|
637
|
+
* @category models
|
|
638
|
+
*/
|
|
639
|
+
export interface DatasetClause {
|
|
640
|
+
readonly default: ReadonlyArray<Term.NamedNode>;
|
|
641
|
+
readonly named: ReadonlyArray<Term.NamedNode>;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* A `GROUP BY` condition, optionally bound to a variable with `AS`.
|
|
646
|
+
*
|
|
647
|
+
* @since 0.1.0
|
|
648
|
+
* @category models
|
|
649
|
+
*/
|
|
650
|
+
export interface GroupCondition {
|
|
651
|
+
readonly expression: Expression;
|
|
652
|
+
readonly variable?: Term.Variable | undefined;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* An `ORDER BY` condition.
|
|
657
|
+
*
|
|
658
|
+
* @since 0.1.0
|
|
659
|
+
* @category models
|
|
660
|
+
*/
|
|
661
|
+
export interface OrderCondition {
|
|
662
|
+
readonly expression: Expression;
|
|
663
|
+
readonly descending: boolean;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* A projected `(expression AS ?variable)`.
|
|
668
|
+
*
|
|
669
|
+
* @since 0.1.0
|
|
670
|
+
* @category models
|
|
671
|
+
*/
|
|
672
|
+
export interface Projection {
|
|
673
|
+
readonly _tag: 'Projection';
|
|
674
|
+
readonly expression: Expression;
|
|
675
|
+
readonly variable: Term.Variable;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Fields shared by all query forms.
|
|
680
|
+
*
|
|
681
|
+
* @since 0.1.0
|
|
682
|
+
* @category models
|
|
683
|
+
*/
|
|
684
|
+
export interface QueryBase {
|
|
685
|
+
readonly prologue: Prologue;
|
|
686
|
+
readonly dataset?: DatasetClause | undefined;
|
|
687
|
+
readonly where: GroupPattern;
|
|
688
|
+
readonly groupBy: ReadonlyArray<GroupCondition>;
|
|
689
|
+
readonly having: ReadonlyArray<Expression>;
|
|
690
|
+
readonly orderBy: ReadonlyArray<OrderCondition>;
|
|
691
|
+
readonly limit?: number | undefined;
|
|
692
|
+
readonly offset?: number | undefined;
|
|
693
|
+
/** A trailing `VALUES` clause. */
|
|
694
|
+
readonly values?: ValuesPattern | undefined;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* @since 0.1.0
|
|
699
|
+
* @category models
|
|
700
|
+
*/
|
|
701
|
+
export interface SelectQuery extends QueryBase {
|
|
702
|
+
readonly _tag: 'Select';
|
|
703
|
+
readonly distinct: boolean;
|
|
704
|
+
readonly reduced: boolean;
|
|
705
|
+
readonly projection: '*' | ReadonlyArray<Term.Variable | Projection>;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* @since 0.1.0
|
|
710
|
+
* @category models
|
|
711
|
+
*/
|
|
712
|
+
export interface ConstructQuery extends QueryBase {
|
|
713
|
+
readonly _tag: 'Construct';
|
|
714
|
+
readonly template: ReadonlyArray<TriplePattern>;
|
|
715
|
+
/** Whether the short form `CONSTRUCT WHERE { … }` was used. */
|
|
716
|
+
readonly short?: boolean | undefined;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* @since 0.1.0
|
|
721
|
+
* @category models
|
|
722
|
+
*/
|
|
723
|
+
export interface AskQuery extends QueryBase {
|
|
724
|
+
readonly _tag: 'Ask';
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* @since 0.1.0
|
|
729
|
+
* @category models
|
|
730
|
+
*/
|
|
731
|
+
export interface DescribeQuery extends QueryBase {
|
|
732
|
+
readonly _tag: 'Describe';
|
|
733
|
+
readonly terms: '*' | ReadonlyArray<VarOrIri>;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Any query.
|
|
738
|
+
*
|
|
739
|
+
* @since 0.1.0
|
|
740
|
+
* @category models
|
|
741
|
+
*/
|
|
742
|
+
export type Query = SelectQuery | ConstructQuery | AskQuery | DescribeQuery;
|
|
743
|
+
|
|
744
|
+
// -----------------------------------------------------------------------------
|
|
745
|
+
// Updates
|
|
746
|
+
// -----------------------------------------------------------------------------
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* The target of `CLEAR` / `DROP`.
|
|
750
|
+
*
|
|
751
|
+
* @since 0.1.0
|
|
752
|
+
* @category models
|
|
753
|
+
*/
|
|
754
|
+
export type GraphTarget =
|
|
755
|
+
| Term.NamedNode
|
|
756
|
+
| { readonly _tag: 'Default' }
|
|
757
|
+
| { readonly _tag: 'Named' }
|
|
758
|
+
| { readonly _tag: 'All' };
|
|
759
|
+
|
|
760
|
+
/**
|
|
761
|
+
* A graph or the default graph (`ADD`, `MOVE`, `COPY`).
|
|
762
|
+
*
|
|
763
|
+
* @since 0.1.0
|
|
764
|
+
* @category models
|
|
765
|
+
*/
|
|
766
|
+
export type GraphOrDefault = Term.NamedNode | Term.DefaultGraph;
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* @since 0.1.0
|
|
770
|
+
* @category models
|
|
771
|
+
*/
|
|
772
|
+
export interface InsertDataOperation {
|
|
773
|
+
readonly _tag: 'InsertData';
|
|
774
|
+
readonly quads: ReadonlyArray<Term.Quad>;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* @since 0.1.0
|
|
779
|
+
* @category models
|
|
780
|
+
*/
|
|
781
|
+
export interface DeleteDataOperation {
|
|
782
|
+
readonly _tag: 'DeleteData';
|
|
783
|
+
readonly quads: ReadonlyArray<Term.Quad>;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/**
|
|
787
|
+
* @since 0.1.0
|
|
788
|
+
* @category models
|
|
789
|
+
*/
|
|
790
|
+
export interface DeleteWhereOperation {
|
|
791
|
+
readonly _tag: 'DeleteWhere';
|
|
792
|
+
readonly patterns: ReadonlyArray<QuadPattern>;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* `[WITH <g>] DELETE { … } INSERT { … } [USING …] WHERE { … }`
|
|
797
|
+
*
|
|
798
|
+
* @since 0.1.0
|
|
799
|
+
* @category models
|
|
800
|
+
*/
|
|
801
|
+
export interface ModifyOperation {
|
|
802
|
+
readonly _tag: 'Modify';
|
|
803
|
+
readonly with?: Term.NamedNode | undefined;
|
|
804
|
+
readonly delete: ReadonlyArray<QuadPattern>;
|
|
805
|
+
readonly insert: ReadonlyArray<QuadPattern>;
|
|
806
|
+
readonly using?: DatasetClause | undefined;
|
|
807
|
+
readonly where: GroupPattern;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* @since 0.1.0
|
|
812
|
+
* @category models
|
|
813
|
+
*/
|
|
814
|
+
export interface LoadOperation {
|
|
815
|
+
readonly _tag: 'Load';
|
|
816
|
+
readonly silent: boolean;
|
|
817
|
+
readonly source: Term.NamedNode;
|
|
818
|
+
readonly destination?: Term.NamedNode | undefined;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* @since 0.1.0
|
|
823
|
+
* @category models
|
|
824
|
+
*/
|
|
825
|
+
export interface ClearOperation {
|
|
826
|
+
readonly _tag: 'Clear';
|
|
827
|
+
readonly silent: boolean;
|
|
828
|
+
readonly target: GraphTarget;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* @since 0.1.0
|
|
833
|
+
* @category models
|
|
834
|
+
*/
|
|
835
|
+
export interface DropOperation {
|
|
836
|
+
readonly _tag: 'Drop';
|
|
837
|
+
readonly silent: boolean;
|
|
838
|
+
readonly target: GraphTarget;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* @since 0.1.0
|
|
843
|
+
* @category models
|
|
844
|
+
*/
|
|
845
|
+
export interface CreateOperation {
|
|
846
|
+
readonly _tag: 'Create';
|
|
847
|
+
readonly silent: boolean;
|
|
848
|
+
readonly graph: Term.NamedNode;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* `ADD`, `MOVE` and `COPY`.
|
|
853
|
+
*
|
|
854
|
+
* @since 0.1.0
|
|
855
|
+
* @category models
|
|
856
|
+
*/
|
|
857
|
+
export interface TransferOperation {
|
|
858
|
+
readonly _tag: 'Add' | 'Move' | 'Copy';
|
|
859
|
+
readonly silent: boolean;
|
|
860
|
+
readonly source: GraphOrDefault;
|
|
861
|
+
readonly destination: GraphOrDefault;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
/**
|
|
865
|
+
* A single update operation.
|
|
866
|
+
*
|
|
867
|
+
* @since 0.1.0
|
|
868
|
+
* @category models
|
|
869
|
+
*/
|
|
870
|
+
export type UpdateOperation =
|
|
871
|
+
| InsertDataOperation
|
|
872
|
+
| DeleteDataOperation
|
|
873
|
+
| DeleteWhereOperation
|
|
874
|
+
| ModifyOperation
|
|
875
|
+
| LoadOperation
|
|
876
|
+
| ClearOperation
|
|
877
|
+
| DropOperation
|
|
878
|
+
| CreateOperation
|
|
879
|
+
| TransferOperation;
|
|
880
|
+
|
|
881
|
+
/**
|
|
882
|
+
* An update request: a sequence of operations.
|
|
883
|
+
*
|
|
884
|
+
* @since 0.1.0
|
|
885
|
+
* @category models
|
|
886
|
+
*/
|
|
887
|
+
export interface Update {
|
|
888
|
+
readonly _tag: 'Update';
|
|
889
|
+
readonly prologue: Prologue;
|
|
890
|
+
readonly operations: ReadonlyArray<UpdateOperation>;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// -----------------------------------------------------------------------------
|
|
894
|
+
// Guards
|
|
895
|
+
// -----------------------------------------------------------------------------
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* @since 0.1.0
|
|
899
|
+
* @category guards
|
|
900
|
+
*/
|
|
901
|
+
export const isQuery = (u: unknown): u is Query =>
|
|
902
|
+
Predicate.isTagged(u, 'Select') ||
|
|
903
|
+
Predicate.isTagged(u, 'Construct') ||
|
|
904
|
+
Predicate.isTagged(u, 'Ask') ||
|
|
905
|
+
Predicate.isTagged(u, 'Describe');
|
|
906
|
+
|
|
907
|
+
/**
|
|
908
|
+
* @since 0.1.0
|
|
909
|
+
* @category guards
|
|
910
|
+
*/
|
|
911
|
+
export const isUpdate = (u: unknown): u is Update => Predicate.isTagged(u, 'Update');
|
|
912
|
+
|
|
913
|
+
// -----------------------------------------------------------------------------
|
|
914
|
+
// Constructors
|
|
915
|
+
// -----------------------------------------------------------------------------
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* @since 0.1.0
|
|
919
|
+
* @category constructors
|
|
920
|
+
*/
|
|
921
|
+
export const emptyPrologue: Prologue = { prefixes: {} };
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* @since 0.1.0
|
|
925
|
+
* @category constructors
|
|
926
|
+
*/
|
|
927
|
+
export const triplePattern = (
|
|
928
|
+
subject: TermPattern,
|
|
929
|
+
predicate: VarOrIri,
|
|
930
|
+
object: TermPattern,
|
|
931
|
+
): TriplePattern => ({ _tag: 'TriplePattern', subject, predicate, object });
|
|
932
|
+
|
|
933
|
+
/**
|
|
934
|
+
* @since 0.1.0
|
|
935
|
+
* @category constructors
|
|
936
|
+
*/
|
|
937
|
+
export const pathPattern = (
|
|
938
|
+
subject: TermPattern,
|
|
939
|
+
path: Path,
|
|
940
|
+
object: TermPattern,
|
|
941
|
+
): PathPattern => ({
|
|
942
|
+
_tag: 'PathPattern',
|
|
943
|
+
subject,
|
|
944
|
+
path,
|
|
945
|
+
object,
|
|
946
|
+
});
|
|
947
|
+
|
|
948
|
+
/**
|
|
949
|
+
* @since 0.1.0
|
|
950
|
+
* @category constructors
|
|
951
|
+
*/
|
|
952
|
+
export const quadPattern = (
|
|
953
|
+
subject: TermPattern,
|
|
954
|
+
predicate: VarOrIri,
|
|
955
|
+
object: TermPattern,
|
|
956
|
+
graph: Term.NamedNode | Term.Variable | Term.DefaultGraph = Term.defaultGraph,
|
|
957
|
+
): QuadPattern => ({ _tag: 'QuadPattern', subject, predicate, object, graph });
|
|
958
|
+
|
|
959
|
+
/**
|
|
960
|
+
* @since 0.1.0
|
|
961
|
+
* @category constructors
|
|
962
|
+
*/
|
|
963
|
+
export const link = (iri: Term.NamedNode): PathLink => ({ _tag: 'PathLink', iri });
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* @since 0.1.0
|
|
967
|
+
* @category constructors
|
|
968
|
+
*/
|
|
969
|
+
export const inverse = (path: Path): PathInverse => ({ _tag: 'PathInverse', path });
|
|
970
|
+
|
|
971
|
+
/**
|
|
972
|
+
* @since 0.1.0
|
|
973
|
+
* @category constructors
|
|
974
|
+
*/
|
|
975
|
+
export const sequence = (...paths: ReadonlyArray<Path>): PathSequence => ({
|
|
976
|
+
_tag: 'PathSequence',
|
|
977
|
+
paths,
|
|
978
|
+
});
|
|
979
|
+
|
|
980
|
+
/**
|
|
981
|
+
* @since 0.1.0
|
|
982
|
+
* @category constructors
|
|
983
|
+
*/
|
|
984
|
+
export const alternative = (...paths: ReadonlyArray<Path>): PathAlternative => ({
|
|
985
|
+
_tag: 'PathAlternative',
|
|
986
|
+
paths,
|
|
987
|
+
});
|
|
988
|
+
|
|
989
|
+
/**
|
|
990
|
+
* @since 0.1.0
|
|
991
|
+
* @category constructors
|
|
992
|
+
*/
|
|
993
|
+
export const zeroOrMore = (path: Path): PathZeroOrMore => ({ _tag: 'PathZeroOrMore', path });
|
|
994
|
+
|
|
995
|
+
/**
|
|
996
|
+
* @since 0.1.0
|
|
997
|
+
* @category constructors
|
|
998
|
+
*/
|
|
999
|
+
export const oneOrMore = (path: Path): PathOneOrMore => ({ _tag: 'PathOneOrMore', path });
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* @since 0.1.0
|
|
1003
|
+
* @category constructors
|
|
1004
|
+
*/
|
|
1005
|
+
export const zeroOrOne = (path: Path): PathZeroOrOne => ({ _tag: 'PathZeroOrOne', path });
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* @since 0.1.0
|
|
1009
|
+
* @category constructors
|
|
1010
|
+
*/
|
|
1011
|
+
export const negated = (
|
|
1012
|
+
iris: ReadonlyArray<Term.NamedNode>,
|
|
1013
|
+
inverse: ReadonlyArray<Term.NamedNode> = [],
|
|
1014
|
+
): PathNegated => ({ _tag: 'PathNegated', iris, inverse });
|
|
1015
|
+
|
|
1016
|
+
/**
|
|
1017
|
+
* @since 0.1.0
|
|
1018
|
+
* @category constructors
|
|
1019
|
+
*/
|
|
1020
|
+
export const operation = (
|
|
1021
|
+
operator: Operator,
|
|
1022
|
+
...args: ReadonlyArray<Expression>
|
|
1023
|
+
): OperationExpression => ({ _tag: 'Operation', operator, args });
|
|
1024
|
+
|
|
1025
|
+
/**
|
|
1026
|
+
* @since 0.1.0
|
|
1027
|
+
* @category constructors
|
|
1028
|
+
*/
|
|
1029
|
+
export const functionCall = (
|
|
1030
|
+
fn: Term.NamedNode,
|
|
1031
|
+
args: ReadonlyArray<Expression>,
|
|
1032
|
+
distinct = false,
|
|
1033
|
+
): FunctionCallExpression => ({ _tag: 'FunctionCall', function: fn, args, distinct });
|
|
1034
|
+
|
|
1035
|
+
/**
|
|
1036
|
+
* @since 0.1.0
|
|
1037
|
+
* @category constructors
|
|
1038
|
+
*/
|
|
1039
|
+
export const aggregate = (
|
|
1040
|
+
name: AggregateName,
|
|
1041
|
+
expression: Expression | '*',
|
|
1042
|
+
options?: { readonly distinct?: boolean; readonly separator?: string },
|
|
1043
|
+
): AggregateExpression => {
|
|
1044
|
+
const plain: AggregateExpression = {
|
|
1045
|
+
_tag: 'Aggregate',
|
|
1046
|
+
name,
|
|
1047
|
+
expression,
|
|
1048
|
+
distinct: options?.distinct ?? false,
|
|
1049
|
+
};
|
|
1050
|
+
return options?.separator === undefined ? plain : { ...plain, separator: options.separator };
|
|
1051
|
+
};
|
|
1052
|
+
|
|
1053
|
+
/**
|
|
1054
|
+
* @since 0.1.0
|
|
1055
|
+
* @category constructors
|
|
1056
|
+
*/
|
|
1057
|
+
export const exists = (pattern: GroupPattern, negated = false): ExistsExpression => ({
|
|
1058
|
+
_tag: 'Exists',
|
|
1059
|
+
negated,
|
|
1060
|
+
pattern,
|
|
1061
|
+
});
|
|
1062
|
+
|
|
1063
|
+
/**
|
|
1064
|
+
* @since 0.1.0
|
|
1065
|
+
* @category constructors
|
|
1066
|
+
*/
|
|
1067
|
+
export const bgp = (triples: ReadonlyArray<TriplePattern | PathPattern>): BgpPattern => ({
|
|
1068
|
+
_tag: 'Bgp',
|
|
1069
|
+
triples,
|
|
1070
|
+
});
|
|
1071
|
+
|
|
1072
|
+
/**
|
|
1073
|
+
* @since 0.1.0
|
|
1074
|
+
* @category constructors
|
|
1075
|
+
*/
|
|
1076
|
+
export const group = (patterns: ReadonlyArray<Pattern>): GroupPattern => ({
|
|
1077
|
+
_tag: 'Group',
|
|
1078
|
+
patterns,
|
|
1079
|
+
});
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* @since 0.1.0
|
|
1083
|
+
* @category constructors
|
|
1084
|
+
*/
|
|
1085
|
+
export const optional = (pattern: GroupPattern): OptionalPattern => ({ _tag: 'Optional', pattern });
|
|
1086
|
+
|
|
1087
|
+
/**
|
|
1088
|
+
* @since 0.1.0
|
|
1089
|
+
* @category constructors
|
|
1090
|
+
*/
|
|
1091
|
+
export const union = (patterns: ReadonlyArray<GroupPattern>): UnionPattern => ({
|
|
1092
|
+
_tag: 'Union',
|
|
1093
|
+
patterns,
|
|
1094
|
+
});
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* @since 0.1.0
|
|
1098
|
+
* @category constructors
|
|
1099
|
+
*/
|
|
1100
|
+
export const minus = (pattern: GroupPattern): MinusPattern => ({ _tag: 'Minus', pattern });
|
|
1101
|
+
|
|
1102
|
+
/**
|
|
1103
|
+
* @since 0.1.0
|
|
1104
|
+
* @category constructors
|
|
1105
|
+
*/
|
|
1106
|
+
export const graph = (name: VarOrIri, pattern: GroupPattern): GraphPattern => ({
|
|
1107
|
+
_tag: 'Graph',
|
|
1108
|
+
name,
|
|
1109
|
+
pattern,
|
|
1110
|
+
});
|
|
1111
|
+
|
|
1112
|
+
/**
|
|
1113
|
+
* @since 0.1.0
|
|
1114
|
+
* @category constructors
|
|
1115
|
+
*/
|
|
1116
|
+
export const service = (name: VarOrIri, pattern: GroupPattern, silent = false): ServicePattern => ({
|
|
1117
|
+
_tag: 'Service',
|
|
1118
|
+
name,
|
|
1119
|
+
pattern,
|
|
1120
|
+
silent,
|
|
1121
|
+
});
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* @since 0.1.0
|
|
1125
|
+
* @category constructors
|
|
1126
|
+
*/
|
|
1127
|
+
export const filter = (expression: Expression): FilterPattern => ({ _tag: 'Filter', expression });
|
|
1128
|
+
|
|
1129
|
+
/**
|
|
1130
|
+
* @since 0.1.0
|
|
1131
|
+
* @category constructors
|
|
1132
|
+
*/
|
|
1133
|
+
export const bind = (expression: Expression, variable: Term.Variable): BindPattern => ({
|
|
1134
|
+
_tag: 'Bind',
|
|
1135
|
+
expression,
|
|
1136
|
+
variable,
|
|
1137
|
+
});
|
|
1138
|
+
|
|
1139
|
+
/**
|
|
1140
|
+
* @since 0.1.0
|
|
1141
|
+
* @category constructors
|
|
1142
|
+
*/
|
|
1143
|
+
export const values = (
|
|
1144
|
+
variables: ReadonlyArray<Term.Variable>,
|
|
1145
|
+
rows: ReadonlyArray<ReadonlyArray<Term.GroundTerm | undefined>>,
|
|
1146
|
+
): ValuesPattern => ({ _tag: 'Values', variables, rows });
|
|
1147
|
+
|
|
1148
|
+
/**
|
|
1149
|
+
* @since 0.1.0
|
|
1150
|
+
* @category constructors
|
|
1151
|
+
*/
|
|
1152
|
+
export const subSelect = (query: SelectQuery): SubSelectPattern => ({ _tag: 'SubSelect', query });
|
|
1153
|
+
|
|
1154
|
+
/**
|
|
1155
|
+
* A projected `(expression AS ?variable)`.
|
|
1156
|
+
*
|
|
1157
|
+
* @since 0.1.0
|
|
1158
|
+
* @category constructors
|
|
1159
|
+
*/
|
|
1160
|
+
export const projection = (expression: Expression, variable: Term.Variable): Projection => ({
|
|
1161
|
+
_tag: 'Projection',
|
|
1162
|
+
expression,
|
|
1163
|
+
variable,
|
|
1164
|
+
});
|
|
1165
|
+
|
|
1166
|
+
const queryDefaults = {
|
|
1167
|
+
prologue: emptyPrologue,
|
|
1168
|
+
groupBy: [],
|
|
1169
|
+
having: [],
|
|
1170
|
+
orderBy: [],
|
|
1171
|
+
} as const;
|
|
1172
|
+
|
|
1173
|
+
/**
|
|
1174
|
+
* Creates a `SELECT` query; omitted fields take their defaults.
|
|
1175
|
+
*
|
|
1176
|
+
* @since 0.1.0
|
|
1177
|
+
* @category constructors
|
|
1178
|
+
*/
|
|
1179
|
+
export const select = (
|
|
1180
|
+
fields: Partial<Omit<SelectQuery, '_tag'>> & Pick<SelectQuery, 'where'>,
|
|
1181
|
+
): SelectQuery => ({
|
|
1182
|
+
_tag: 'Select',
|
|
1183
|
+
...queryDefaults,
|
|
1184
|
+
distinct: false,
|
|
1185
|
+
reduced: false,
|
|
1186
|
+
projection: '*',
|
|
1187
|
+
...fields,
|
|
1188
|
+
});
|
|
1189
|
+
|
|
1190
|
+
/**
|
|
1191
|
+
* Creates a `CONSTRUCT` query.
|
|
1192
|
+
*
|
|
1193
|
+
* @since 0.1.0
|
|
1194
|
+
* @category constructors
|
|
1195
|
+
*/
|
|
1196
|
+
export const construct = (
|
|
1197
|
+
fields: Partial<Omit<ConstructQuery, '_tag'>> & Pick<ConstructQuery, 'where' | 'template'>,
|
|
1198
|
+
): ConstructQuery => ({ _tag: 'Construct', ...queryDefaults, ...fields });
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* Creates an `ASK` query.
|
|
1202
|
+
*
|
|
1203
|
+
* @since 0.1.0
|
|
1204
|
+
* @category constructors
|
|
1205
|
+
*/
|
|
1206
|
+
export const ask = (
|
|
1207
|
+
fields: Partial<Omit<AskQuery, '_tag'>> & Pick<AskQuery, 'where'>,
|
|
1208
|
+
): AskQuery => ({ _tag: 'Ask', ...queryDefaults, ...fields });
|
|
1209
|
+
|
|
1210
|
+
/**
|
|
1211
|
+
* Creates a `DESCRIBE` query.
|
|
1212
|
+
*
|
|
1213
|
+
* @since 0.1.0
|
|
1214
|
+
* @category constructors
|
|
1215
|
+
*/
|
|
1216
|
+
export const describe = (
|
|
1217
|
+
fields: Partial<Omit<DescribeQuery, '_tag'>> & Pick<DescribeQuery, 'terms'>,
|
|
1218
|
+
): DescribeQuery => ({ _tag: 'Describe', ...queryDefaults, where: group([]), ...fields });
|
|
1219
|
+
|
|
1220
|
+
/**
|
|
1221
|
+
* Creates an update request.
|
|
1222
|
+
*
|
|
1223
|
+
* @since 0.1.0
|
|
1224
|
+
* @category constructors
|
|
1225
|
+
*/
|
|
1226
|
+
export const update = (
|
|
1227
|
+
operations: ReadonlyArray<UpdateOperation>,
|
|
1228
|
+
prologue: Prologue = emptyPrologue,
|
|
1229
|
+
): Update => ({ _tag: 'Update', prologue, operations });
|
|
1230
|
+
|
|
1231
|
+
// -----------------------------------------------------------------------------
|
|
1232
|
+
// Utilities
|
|
1233
|
+
// -----------------------------------------------------------------------------
|
|
1234
|
+
|
|
1235
|
+
/** Variable names in order of first appearance, as a string set. */
|
|
1236
|
+
type Names = Map<string, true>;
|
|
1237
|
+
|
|
1238
|
+
const addTermVariables = (term: TermPattern | Term.Term, out: Names): void => {
|
|
1239
|
+
if (Term.isVariable(term)) out.set(term.value, true);
|
|
1240
|
+
else if (Term.isTriple(term)) {
|
|
1241
|
+
addTermVariables(term.subject, out);
|
|
1242
|
+
addTermVariables(term.predicate, out);
|
|
1243
|
+
addTermVariables(term.object, out);
|
|
1244
|
+
}
|
|
1245
|
+
};
|
|
1246
|
+
|
|
1247
|
+
/**
|
|
1248
|
+
* The variables that are in-scope after a graph pattern (SPARQL 1.1 §18.2.1),
|
|
1249
|
+
* in order of first appearance. Blank nodes are not included.
|
|
1250
|
+
*
|
|
1251
|
+
* @since 0.1.0
|
|
1252
|
+
* @category utils
|
|
1253
|
+
*/
|
|
1254
|
+
export const inScopeVariables = (pattern: Pattern): ReadonlyArray<string> => {
|
|
1255
|
+
const out: Names = StringMap.emptySet();
|
|
1256
|
+
collectInScope(pattern, out);
|
|
1257
|
+
return Array.from(out.keys());
|
|
1258
|
+
};
|
|
1259
|
+
|
|
1260
|
+
const collectInScope = (pattern: Pattern, out: Names): void => {
|
|
1261
|
+
Match.value(pattern).pipe(
|
|
1262
|
+
Match.tag('Bgp', (b) =>
|
|
1263
|
+
b.triples.forEach((t) => {
|
|
1264
|
+
addTermVariables(t.subject, out);
|
|
1265
|
+
if (Predicate.isTagged(t, 'TriplePattern')) addTermVariables(t.predicate, out);
|
|
1266
|
+
addTermVariables(t.object, out);
|
|
1267
|
+
}),
|
|
1268
|
+
),
|
|
1269
|
+
Match.tag('Group', 'Union', (g) => g.patterns.forEach((p) => collectInScope(p, out))),
|
|
1270
|
+
Match.tag('Optional', (o) => collectInScope(o.pattern, out)),
|
|
1271
|
+
Match.tag('Minus', 'Filter', () => undefined),
|
|
1272
|
+
Match.tag('Graph', 'Service', (g) => {
|
|
1273
|
+
addTermVariables(g.name, out);
|
|
1274
|
+
collectInScope(g.pattern, out);
|
|
1275
|
+
}),
|
|
1276
|
+
Match.tag('Bind', (b) => {
|
|
1277
|
+
out.set(b.variable.value, true);
|
|
1278
|
+
}),
|
|
1279
|
+
Match.tag('Values', (v) => v.variables.forEach((x) => out.set(x.value, true))),
|
|
1280
|
+
Match.tag('SubSelect', (s) => projectedVariables(s.query).forEach((v) => out.set(v, true))),
|
|
1281
|
+
Match.exhaustive,
|
|
1282
|
+
);
|
|
1283
|
+
};
|
|
1284
|
+
|
|
1285
|
+
/**
|
|
1286
|
+
* The variables projected by a `SELECT` query (for `SELECT *`, the
|
|
1287
|
+
* in-scope variables of its pattern and trailing `VALUES`).
|
|
1288
|
+
*
|
|
1289
|
+
* @since 0.1.0
|
|
1290
|
+
* @category utils
|
|
1291
|
+
*/
|
|
1292
|
+
export const projectedVariables = (query: SelectQuery): ReadonlyArray<string> => {
|
|
1293
|
+
if (query.projection === '*') {
|
|
1294
|
+
const out: Names = StringMap.emptySet();
|
|
1295
|
+
collectInScope(query.where, out);
|
|
1296
|
+
query.values?.variables.forEach((v) => out.set(v.value, true));
|
|
1297
|
+
return Array.from(out.keys());
|
|
1298
|
+
}
|
|
1299
|
+
return query.projection.map((p) => (Term.isVariable(p) ? p.value : p.variable.value));
|
|
1300
|
+
};
|
|
1301
|
+
|
|
1302
|
+
/**
|
|
1303
|
+
* All variables mentioned anywhere in an expression (including inside
|
|
1304
|
+
* `EXISTS` patterns when `deep` is set).
|
|
1305
|
+
*
|
|
1306
|
+
* @since 0.1.0
|
|
1307
|
+
* @category utils
|
|
1308
|
+
*/
|
|
1309
|
+
export const expressionVariables = (
|
|
1310
|
+
expression: Expression,
|
|
1311
|
+
deep = false,
|
|
1312
|
+
): ReadonlyArray<string> => {
|
|
1313
|
+
const out: Names = StringMap.emptySet();
|
|
1314
|
+
const go = (e: Expression): void => {
|
|
1315
|
+
Match.value(e).pipe(
|
|
1316
|
+
Match.tag('Variable', 'Triple', (t) => addTermVariables(t, out)),
|
|
1317
|
+
Match.tag('Operation', 'FunctionCall', (call) => call.args.forEach(go)),
|
|
1318
|
+
Match.tag('Aggregate', (a) => {
|
|
1319
|
+
if (a.expression !== '*') go(a.expression);
|
|
1320
|
+
}),
|
|
1321
|
+
Match.tag('Exists', (x) => {
|
|
1322
|
+
if (deep) collectInScope(x.pattern, out);
|
|
1323
|
+
}),
|
|
1324
|
+
Match.orElse(() => undefined),
|
|
1325
|
+
);
|
|
1326
|
+
};
|
|
1327
|
+
go(expression);
|
|
1328
|
+
return Array.from(out.keys());
|
|
1329
|
+
};
|
|
1330
|
+
|
|
1331
|
+
/**
|
|
1332
|
+
* Whether an expression contains an aggregate (outside of nested `EXISTS`
|
|
1333
|
+
* patterns).
|
|
1334
|
+
*
|
|
1335
|
+
* @since 0.1.0
|
|
1336
|
+
* @category utils
|
|
1337
|
+
*/
|
|
1338
|
+
export const containsAggregate = (expression: Expression): boolean => {
|
|
1339
|
+
return Match.value(expression).pipe(
|
|
1340
|
+
Match.tag('Aggregate', () => true),
|
|
1341
|
+
Match.tag('Operation', 'FunctionCall', (call) => call.args.some(containsAggregate)),
|
|
1342
|
+
Match.orElse(() => false),
|
|
1343
|
+
);
|
|
1344
|
+
};
|