@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,528 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode$1, C as VariableSchema, N as isBlankNode$1, S as Variable, Z as namedNode, c as NamedNode, l as NamedNodeSchema, n as BlankNodeSchema, o as Literal, q as isVariable$1, s as LiteralSchema, t as BlankNode, y as Triple, z as isLiteral$1 } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { i as empty } from "./PrefixMap-BHFPDLO-.mjs";
|
|
4
|
+
import * as Arr from "effect/Array";
|
|
5
|
+
import * as Equal from "effect/Equal";
|
|
6
|
+
import * as Hash from "effect/Hash";
|
|
7
|
+
import { NodeInspectSymbol } from "effect/Inspectable";
|
|
8
|
+
import * as Iterable from "effect/Iterable";
|
|
9
|
+
import * as MutableHashMap from "effect/MutableHashMap";
|
|
10
|
+
import { pipeArguments } from "effect/Pipeable";
|
|
11
|
+
import { hasProperty } from "effect/Predicate";
|
|
12
|
+
import * as Schema from "effect/Schema";
|
|
13
|
+
import * as SchemaTransformation from "effect/SchemaTransformation";
|
|
14
|
+
import * as Order from "effect/Order";
|
|
15
|
+
// src/n3/internal/guards.ts
|
|
16
|
+
/**
|
|
17
|
+
* Class refinements of the core terms, for the walks that test every term
|
|
18
|
+
* they visit (`Term.isVariable` and its siblings check the `TypeId` through
|
|
19
|
+
* a `dual` call first; a class check is one instruction).
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
/** @internal */
|
|
24
|
+
const isNamedNode = (u) => u instanceof NamedNode;
|
|
25
|
+
/** @internal */
|
|
26
|
+
const isBlankNode = (u) => u instanceof BlankNode;
|
|
27
|
+
/** @internal */
|
|
28
|
+
const isLiteral = (u) => u instanceof Literal;
|
|
29
|
+
/** @internal */
|
|
30
|
+
const isVariable = (u) => u instanceof Variable;
|
|
31
|
+
/** @internal */
|
|
32
|
+
const isTriple = (u) => u instanceof Triple;
|
|
33
|
+
// src/n3/internal/loop.ts
|
|
34
|
+
/**
|
|
35
|
+
* A loop as a function, for the scans that step until a condition holds
|
|
36
|
+
* (probing a hash table, walking a list, backtracking a search).
|
|
37
|
+
*
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
const BLOCK = 1024;
|
|
41
|
+
/** `0 … BLOCK - 1`: the steps of one block run as an array scan, which engines optimise well. */
|
|
42
|
+
const offsets = Array.from({ length: BLOCK }, (_, i) => i);
|
|
43
|
+
/** The first step of each block after the first: `BLOCK, 2 * BLOCK, …`. */
|
|
44
|
+
const blocks = Iterable.makeBy((b) => (b + 1) * BLOCK);
|
|
45
|
+
/**
|
|
46
|
+
* Calls `step` with 0, 1, 2, … until it returns `false`. It never recurses,
|
|
47
|
+
* so a loop of any length takes no stack.
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
const loop = (step) => {
|
|
52
|
+
if (offsets.every(step)) Iterable.some(blocks, (base) => offsets.some((i) => !step(base + i)));
|
|
53
|
+
};
|
|
54
|
+
// src/n3/Model.ts
|
|
55
|
+
/**
|
|
56
|
+
* The Notation3 data model.
|
|
57
|
+
*
|
|
58
|
+
* N3 extends RDF with quoted graphs (formulas), first-class lists
|
|
59
|
+
* (collections), universally quantified variables and literals or other
|
|
60
|
+
* non-IRI terms in any position of a statement. Core RDF `Quad`s only allow
|
|
61
|
+
* ground terms, so this module defines an N3-specific model on top of the
|
|
62
|
+
* core term classes:
|
|
63
|
+
*
|
|
64
|
+
* - `N3Term` = core `NamedNode` | `BlankNode` | `Literal` | `Variable`, plus
|
|
65
|
+
* the N3-only `Collection` (an N3 list) and `Formula` (a graph term).
|
|
66
|
+
* - `Statement` — a triple of arbitrary `N3Term`s.
|
|
67
|
+
* - `Formula` — an unordered set of statements. Formulas are values: two
|
|
68
|
+
* formulas with the same statements are equal (`Equal.equals`), which
|
|
69
|
+
* matches the N3 semantics of graph terms.
|
|
70
|
+
* - `Document` — a parsed N3 document: its top-level formula together with
|
|
71
|
+
* the prefixes and base IRI it declared.
|
|
72
|
+
*
|
|
73
|
+
* Quick variables (`?x`) are represented by core `Term.Variable`s. Blank
|
|
74
|
+
* nodes keep their core representation; a blank node is implicitly
|
|
75
|
+
* existentially quantified in the innermost formula that contains all of its
|
|
76
|
+
* occurrences.
|
|
77
|
+
*
|
|
78
|
+
* Like core terms, `Collection`, `Formula` and `Statement` implement `Equal`
|
|
79
|
+
* and `Hash` through a canonical `key`.
|
|
80
|
+
*
|
|
81
|
+
* @since 0.1.0
|
|
82
|
+
*/
|
|
83
|
+
var Model_exports = /* @__PURE__ */ __exportAll({
|
|
84
|
+
Collection: () => Collection,
|
|
85
|
+
CollectionSchema: () => CollectionSchema,
|
|
86
|
+
Formula: () => Formula,
|
|
87
|
+
FormulaSchema: () => FormulaSchema,
|
|
88
|
+
N3TermSchema: () => N3TermSchema,
|
|
89
|
+
Statement: () => Statement,
|
|
90
|
+
StatementSchema: () => StatementSchema,
|
|
91
|
+
TypeId: () => TypeId,
|
|
92
|
+
addStatements: () => addStatements,
|
|
93
|
+
blankNodes: () => blankNodes,
|
|
94
|
+
collection: () => collection,
|
|
95
|
+
document: () => document,
|
|
96
|
+
emptyFormula: () => emptyFormula,
|
|
97
|
+
formula: () => formula,
|
|
98
|
+
hasStatement: () => hasStatement,
|
|
99
|
+
isCollection: () => isCollection,
|
|
100
|
+
isFormula: () => isFormula,
|
|
101
|
+
isGround: () => isGround,
|
|
102
|
+
isN3Term: () => isN3Term,
|
|
103
|
+
isStatement: () => isStatement,
|
|
104
|
+
mapTerms: () => mapTerms,
|
|
105
|
+
statement: () => statement,
|
|
106
|
+
substitute: () => substitute,
|
|
107
|
+
variables: () => variables
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* @since 0.1.0
|
|
111
|
+
* @category symbols
|
|
112
|
+
*/
|
|
113
|
+
const TypeId = Symbol.for("@thomasfosterau/effect-rdf/n3/Model");
|
|
114
|
+
var N3Base = class {
|
|
115
|
+
[TypeId] = TypeId;
|
|
116
|
+
/** The key once computed (no key is empty: the shortest are `()` and `{}`). */
|
|
117
|
+
#key = "";
|
|
118
|
+
/** The hash once computed (0 until then; a hash of 0 is merely computed again). */
|
|
119
|
+
#hash = 0;
|
|
120
|
+
/** A canonical, N3-like serialisation used for equality and hashing. */
|
|
121
|
+
get key() {
|
|
122
|
+
if (this.#key === "") this.#key = this.computeKey();
|
|
123
|
+
return this.#key;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Statements, collections and formulas override this to combine their
|
|
127
|
+
* parts' hashes, so that a formula deduplicating its statements builds no
|
|
128
|
+
* key; whatever the override, equal keys give equal hashes.
|
|
129
|
+
*/
|
|
130
|
+
computeHash() {
|
|
131
|
+
return Hash.string(this.key);
|
|
132
|
+
}
|
|
133
|
+
/** RDF/JS-style alias of `_tag`. */
|
|
134
|
+
get termType() {
|
|
135
|
+
return this._tag;
|
|
136
|
+
}
|
|
137
|
+
equals(that) {
|
|
138
|
+
return isN3Base(that) && that.key === this.key;
|
|
139
|
+
}
|
|
140
|
+
[Equal.symbol](that) {
|
|
141
|
+
return this.equals(that);
|
|
142
|
+
}
|
|
143
|
+
[Hash.symbol]() {
|
|
144
|
+
if (this.#hash === 0) this.#hash = this.computeHash();
|
|
145
|
+
return this.#hash;
|
|
146
|
+
}
|
|
147
|
+
pipe() {
|
|
148
|
+
return pipeArguments(this, arguments);
|
|
149
|
+
}
|
|
150
|
+
toString() {
|
|
151
|
+
return this.key;
|
|
152
|
+
}
|
|
153
|
+
toJSON() {
|
|
154
|
+
return {
|
|
155
|
+
_tag: this._tag,
|
|
156
|
+
value: this.key
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
[NodeInspectSymbol]() {
|
|
160
|
+
return `${this._tag}(${this.key})`;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
/** Whether a value is an N3 collection, statement or formula (it carries the `TypeId`). */
|
|
164
|
+
const isN3Base = (u) => hasProperty(u, TypeId);
|
|
165
|
+
/**
|
|
166
|
+
* An N3 list (collection): an ordered, first-class sequence of terms,
|
|
167
|
+
* written `( a b c )`. The empty collection corresponds to `rdf:nil`.
|
|
168
|
+
*
|
|
169
|
+
* @since 0.1.0
|
|
170
|
+
* @category models
|
|
171
|
+
*/
|
|
172
|
+
var Collection = class extends N3Base {
|
|
173
|
+
_tag = "Collection";
|
|
174
|
+
items;
|
|
175
|
+
constructor(items) {
|
|
176
|
+
super();
|
|
177
|
+
this.items = items;
|
|
178
|
+
}
|
|
179
|
+
computeHash() {
|
|
180
|
+
return this.items.reduce((h, item) => Hash.combine(h, item[Hash.symbol]()), Hash.string("()"));
|
|
181
|
+
}
|
|
182
|
+
computeKey() {
|
|
183
|
+
return Arr.isReadonlyArrayEmpty(this.items) ? "()" : `( ${this.items.map((t) => t.key).join(" ")} )`;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* An N3 statement: a triple whose subject, predicate and object may be any
|
|
188
|
+
* `N3Term`.
|
|
189
|
+
*
|
|
190
|
+
* @since 0.1.0
|
|
191
|
+
* @category models
|
|
192
|
+
*/
|
|
193
|
+
var Statement = class extends N3Base {
|
|
194
|
+
_tag = "Statement";
|
|
195
|
+
subject;
|
|
196
|
+
predicate;
|
|
197
|
+
object;
|
|
198
|
+
constructor(subject, predicate, object) {
|
|
199
|
+
super();
|
|
200
|
+
this.subject = subject;
|
|
201
|
+
this.predicate = predicate;
|
|
202
|
+
this.object = object;
|
|
203
|
+
}
|
|
204
|
+
computeHash() {
|
|
205
|
+
return Hash.combine(Hash.combine(this.subject[Hash.symbol](), this.predicate[Hash.symbol]()), this.object[Hash.symbol]());
|
|
206
|
+
}
|
|
207
|
+
computeKey() {
|
|
208
|
+
return `${this.subject.key} ${this.predicate.key} ${this.object.key}`;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Whether two terms are equal (have the same key), compared by their parts
|
|
213
|
+
* where that avoids building keys: identical or differently hashed terms are
|
|
214
|
+
* decided at once, and statements, collections and formulas are compared
|
|
215
|
+
* part by part. Only leaf terms (IRIs, literals, blank nodes, variables) are
|
|
216
|
+
* compared by key.
|
|
217
|
+
*/
|
|
218
|
+
const sameTerm = (a, b) => {
|
|
219
|
+
if (a === b) return true;
|
|
220
|
+
if (a[Hash.symbol]() !== b[Hash.symbol]()) return false;
|
|
221
|
+
if (a instanceof Formula) return b instanceof Formula && sameFormula(a, b);
|
|
222
|
+
if (a instanceof Collection) return b instanceof Collection && a.items.length === b.items.length && a.items.every((item, i) => sameTerm(item, b.items[i] ?? item));
|
|
223
|
+
if (b instanceof Formula || b instanceof Collection) return false;
|
|
224
|
+
return a.key === b.key;
|
|
225
|
+
};
|
|
226
|
+
/** Whether two statements are equal: their terms are (`sameTerm`). */
|
|
227
|
+
const sameStatement = (a, b) => sameTerm(a.subject, b.subject) && sameTerm(a.predicate, b.predicate) && sameTerm(a.object, b.object);
|
|
228
|
+
/** Whether two formulas have the same statements (searched for small ones, by key otherwise). */
|
|
229
|
+
const sameFormula = (a, b) => {
|
|
230
|
+
const as = a.statements;
|
|
231
|
+
const bs = b.statements;
|
|
232
|
+
if (as.length !== bs.length) return false;
|
|
233
|
+
if (as.length > 8) return a.key === b.key;
|
|
234
|
+
return as.every((s) => bs.some((t) => sameStatement(s, t)));
|
|
235
|
+
};
|
|
236
|
+
/** A placeholder for the probe's statement before the first is placed. */
|
|
237
|
+
const emptyStatement = new Statement(namedNode(""), namedNode(""), namedNode(""));
|
|
238
|
+
/**
|
|
239
|
+
* The statements without duplicates, keeping the first of each: by their
|
|
240
|
+
* structural hashes, comparing keys only when two hashes are equal, so that
|
|
241
|
+
* no key is built for statements that differ.
|
|
242
|
+
*/
|
|
243
|
+
const deduplicate = (all) => {
|
|
244
|
+
const n = all.length;
|
|
245
|
+
if (n < 2) return all;
|
|
246
|
+
const mask = 2 ** Math.ceil(Math.log2(n * 2)) - 1;
|
|
247
|
+
const hashes = new Int32Array(mask + 1);
|
|
248
|
+
const slots = new Int32Array(mask + 1);
|
|
249
|
+
const unique = [];
|
|
250
|
+
let current = emptyStatement;
|
|
251
|
+
let hash = 0;
|
|
252
|
+
let i = 0;
|
|
253
|
+
let duplicate = false;
|
|
254
|
+
const probe = () => {
|
|
255
|
+
const slot = slots[i] ?? 0;
|
|
256
|
+
if (slot === 0) return false;
|
|
257
|
+
if (hashes[i] === hash && sameStatement(current, all[slot - 1] ?? current)) {
|
|
258
|
+
duplicate = true;
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
i = i + 1 & mask;
|
|
262
|
+
return true;
|
|
263
|
+
};
|
|
264
|
+
all.forEach((s, k) => {
|
|
265
|
+
current = s;
|
|
266
|
+
hash = s[Hash.symbol]() | 0;
|
|
267
|
+
i = hash & mask;
|
|
268
|
+
duplicate = false;
|
|
269
|
+
loop(probe);
|
|
270
|
+
if (duplicate) return;
|
|
271
|
+
hashes[i] = hash;
|
|
272
|
+
slots[i] = k + 1;
|
|
273
|
+
unique.push(s);
|
|
274
|
+
});
|
|
275
|
+
return unique.length === n ? all : unique;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* An N3 formula (graph term): an unordered set of statements, written
|
|
279
|
+
* `{ ... }`. Duplicate statements are removed (when the statements are first
|
|
280
|
+
* read), and equality is set equality of the statements (blank node labels are compared
|
|
281
|
+
* literally; use `Isomorphism.isomorphic` for a blank-node-aware comparison).
|
|
282
|
+
*
|
|
283
|
+
* @since 0.1.0
|
|
284
|
+
* @category models
|
|
285
|
+
*/
|
|
286
|
+
var Formula = class extends N3Base {
|
|
287
|
+
_tag = "Formula";
|
|
288
|
+
/** The statements as given (copied), then without duplicates once first read. */
|
|
289
|
+
#statements;
|
|
290
|
+
#deduplicated = false;
|
|
291
|
+
constructor(statements) {
|
|
292
|
+
super();
|
|
293
|
+
this.#statements = Array.from(statements);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* The statements, without duplicates, in the order first given. They are
|
|
297
|
+
* deduplicated the first time they are read, not when the formula is
|
|
298
|
+
* made, so a formula that is never read (a parse whose result is only
|
|
299
|
+
* checked for errors, a formula a rule discards) costs nothing to dedupe.
|
|
300
|
+
*/
|
|
301
|
+
get statements() {
|
|
302
|
+
if (!this.#deduplicated) {
|
|
303
|
+
this.#statements = deduplicate(this.#statements);
|
|
304
|
+
this.#deduplicated = true;
|
|
305
|
+
}
|
|
306
|
+
return this.#statements;
|
|
307
|
+
}
|
|
308
|
+
/** The sum of the statements' hashes: the same for the same set, whatever the order. */
|
|
309
|
+
computeHash() {
|
|
310
|
+
return Hash.optimize(this.statements.reduce((h, st) => h + st[Hash.symbol]() | 0, 31613));
|
|
311
|
+
}
|
|
312
|
+
/** The number of statements in the formula. */
|
|
313
|
+
get size() {
|
|
314
|
+
return this.#statements.length < 2 ? this.#statements.length : this.statements.length;
|
|
315
|
+
}
|
|
316
|
+
computeKey() {
|
|
317
|
+
if (Arr.isReadonlyArrayEmpty(this.statements)) return "{}";
|
|
318
|
+
return `{ ${Arr.sort(this.statements.map((s) => s.key), Order.String).join(" . ")} }`;
|
|
319
|
+
}
|
|
320
|
+
[Symbol.iterator]() {
|
|
321
|
+
return this.statements[Symbol.iterator]();
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* @since 0.1.0
|
|
326
|
+
* @category constructors
|
|
327
|
+
*/
|
|
328
|
+
const statement = (subject, predicate, object) => new Statement(subject, predicate, object);
|
|
329
|
+
/**
|
|
330
|
+
* @since 0.1.0
|
|
331
|
+
* @category constructors
|
|
332
|
+
*/
|
|
333
|
+
const formula = (statements = []) => new Formula(statements);
|
|
334
|
+
/**
|
|
335
|
+
* The empty formula `{}`.
|
|
336
|
+
*
|
|
337
|
+
* @since 0.1.0
|
|
338
|
+
* @category constructors
|
|
339
|
+
*/
|
|
340
|
+
const emptyFormula = new Formula([]);
|
|
341
|
+
/**
|
|
342
|
+
* @since 0.1.0
|
|
343
|
+
* @category constructors
|
|
344
|
+
*/
|
|
345
|
+
const collection = (items = []) => new Collection(Array.from(items));
|
|
346
|
+
/**
|
|
347
|
+
* Creates a document from a formula.
|
|
348
|
+
*
|
|
349
|
+
* @since 0.1.0
|
|
350
|
+
* @category constructors
|
|
351
|
+
*/
|
|
352
|
+
const document = (formula, options) => ({
|
|
353
|
+
formula,
|
|
354
|
+
prefixes: options?.prefixes ?? empty,
|
|
355
|
+
baseIri: options?.baseIri
|
|
356
|
+
});
|
|
357
|
+
/**
|
|
358
|
+
* @since 0.1.0
|
|
359
|
+
* @category guards
|
|
360
|
+
*/
|
|
361
|
+
const isFormula = (u) => u instanceof Formula;
|
|
362
|
+
/**
|
|
363
|
+
* @since 0.1.0
|
|
364
|
+
* @category guards
|
|
365
|
+
*/
|
|
366
|
+
const isCollection = (u) => u instanceof Collection;
|
|
367
|
+
/**
|
|
368
|
+
* @since 0.1.0
|
|
369
|
+
* @category guards
|
|
370
|
+
*/
|
|
371
|
+
const isStatement = (u) => u instanceof Statement;
|
|
372
|
+
/**
|
|
373
|
+
* Whether a value is an `N3Term` (a core IRI, blank node, literal or
|
|
374
|
+
* variable, or an N3 collection or formula).
|
|
375
|
+
*
|
|
376
|
+
* @since 0.1.0
|
|
377
|
+
* @category guards
|
|
378
|
+
*/
|
|
379
|
+
const isN3Term = (u) => isFormula(u) || isCollection(u) || isNamedNode$1(u) || isBlankNode$1(u) || isLiteral$1(u) || isVariable$1(u);
|
|
380
|
+
/**
|
|
381
|
+
* Whether a term, statement or formula is free of variables (recursively).
|
|
382
|
+
*
|
|
383
|
+
* @since 0.1.0
|
|
384
|
+
* @category predicates
|
|
385
|
+
*/
|
|
386
|
+
const isGround = (self) => groundness(self);
|
|
387
|
+
const groundness = (self) => self instanceof Statement ? groundness(self.subject) && groundness(self.predicate) && groundness(self.object) : self instanceof Formula ? self.statements.every(groundness) : self instanceof Collection ? self.items.every(groundness) : !isVariable(self);
|
|
388
|
+
/** Adds the atoms of `self` that pass `test` to `out`, by key, in order of first occurrence. */
|
|
389
|
+
const collect = (self, test, out) => {
|
|
390
|
+
if (self instanceof Statement) {
|
|
391
|
+
collect(self.subject, test, out);
|
|
392
|
+
collect(self.predicate, test, out);
|
|
393
|
+
collect(self.object, test, out);
|
|
394
|
+
} else if (self instanceof Formula) self.statements.forEach((s) => collect(s, test, out));
|
|
395
|
+
else if (self instanceof Collection) self.items.forEach((i) => collect(i, test, out));
|
|
396
|
+
else if (test(self)) MutableHashMap.set(out, self.key, self);
|
|
397
|
+
};
|
|
398
|
+
/**
|
|
399
|
+
* All distinct variables occurring in a term, statement or formula
|
|
400
|
+
* (including inside nested formulas and collections), in order of first
|
|
401
|
+
* occurrence.
|
|
402
|
+
*
|
|
403
|
+
* @since 0.1.0
|
|
404
|
+
* @category getters
|
|
405
|
+
*/
|
|
406
|
+
const variables = (self) => {
|
|
407
|
+
const out = MutableHashMap.empty();
|
|
408
|
+
collect(self, isVariable, out);
|
|
409
|
+
return Arr.fromIterable(MutableHashMap.values(out));
|
|
410
|
+
};
|
|
411
|
+
/**
|
|
412
|
+
* All distinct blank nodes occurring in a term, statement or formula
|
|
413
|
+
* (including inside nested formulas and collections).
|
|
414
|
+
*
|
|
415
|
+
* @since 0.1.0
|
|
416
|
+
* @category getters
|
|
417
|
+
*/
|
|
418
|
+
const blankNodes = (self) => {
|
|
419
|
+
const out = MutableHashMap.empty();
|
|
420
|
+
collect(self, isBlankNode, out);
|
|
421
|
+
return Arr.fromIterable(MutableHashMap.values(out));
|
|
422
|
+
};
|
|
423
|
+
function mapTerms(self, f) {
|
|
424
|
+
return self instanceof Statement ? mapStatement(self, f) : mapTerm(self, f);
|
|
425
|
+
}
|
|
426
|
+
const mapTerm = (t, f) => t instanceof Formula ? new Formula(t.statements.map((s) => mapStatement(s, f))) : t instanceof Collection ? new Collection(t.items.map((i) => mapTerm(i, f))) : f(t);
|
|
427
|
+
const mapStatement = (s, f) => new Statement(mapTerm(s.subject, f), mapTerm(s.predicate, f), mapTerm(s.object, f));
|
|
428
|
+
function substitute(self, bindings) {
|
|
429
|
+
return mapTerms(self, (t) => isVariable(t) ? bindings.get(t.value) ?? t : t);
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Adds statements to a formula.
|
|
433
|
+
*
|
|
434
|
+
* @since 0.1.0
|
|
435
|
+
* @category combinators
|
|
436
|
+
*/
|
|
437
|
+
const addStatements = (self, statements) => new Formula([...self.statements, ...statements]);
|
|
438
|
+
/**
|
|
439
|
+
* Whether a formula contains a statement.
|
|
440
|
+
*
|
|
441
|
+
* @since 0.1.0
|
|
442
|
+
* @category predicates
|
|
443
|
+
*/
|
|
444
|
+
const hasStatement = (self, statement) => self.statements.some((s) => s.key === statement.key);
|
|
445
|
+
/**
|
|
446
|
+
* Schema of a formula; its JSON codec is
|
|
447
|
+
* `{ "type": "formula", "statements": [{ subject, predicate, object }, …] }`
|
|
448
|
+
* over JSON N3 terms.
|
|
449
|
+
*
|
|
450
|
+
* @since 0.1.0
|
|
451
|
+
* @category schemas
|
|
452
|
+
*/
|
|
453
|
+
const FormulaSchema = Schema.declare(isFormula, {
|
|
454
|
+
identifier: "Formula",
|
|
455
|
+
toCodecJson: () => Schema.link()(Schema.Struct({
|
|
456
|
+
type: Schema.tag("formula"),
|
|
457
|
+
statements: Schema.Array(Schema.suspend(() => StatementSchema))
|
|
458
|
+
}), SchemaTransformation.transform({
|
|
459
|
+
decode: (j) => new Formula(j.statements),
|
|
460
|
+
encode: (f) => ({
|
|
461
|
+
type: "formula",
|
|
462
|
+
statements: f.statements
|
|
463
|
+
})
|
|
464
|
+
}))
|
|
465
|
+
});
|
|
466
|
+
/**
|
|
467
|
+
* Schema of a collection; its JSON codec is
|
|
468
|
+
* `{ "type": "collection", "items": [ … ] }` over JSON N3 terms.
|
|
469
|
+
*
|
|
470
|
+
* @since 0.1.0
|
|
471
|
+
* @category schemas
|
|
472
|
+
*/
|
|
473
|
+
const CollectionSchema = Schema.declare(isCollection, {
|
|
474
|
+
identifier: "Collection",
|
|
475
|
+
toCodecJson: () => Schema.link()(Schema.Struct({
|
|
476
|
+
type: Schema.tag("collection"),
|
|
477
|
+
items: Schema.Array(Schema.suspend(() => N3TermSchema))
|
|
478
|
+
}), SchemaTransformation.transform({
|
|
479
|
+
decode: (j) => new Collection(j.items),
|
|
480
|
+
encode: (c) => ({
|
|
481
|
+
type: "collection",
|
|
482
|
+
items: c.items
|
|
483
|
+
})
|
|
484
|
+
}))
|
|
485
|
+
});
|
|
486
|
+
/**
|
|
487
|
+
* Schema of a statement; its JSON codec is `{ subject, predicate, object }`
|
|
488
|
+
* over JSON N3 terms.
|
|
489
|
+
*
|
|
490
|
+
* @since 0.1.0
|
|
491
|
+
* @category schemas
|
|
492
|
+
*/
|
|
493
|
+
const StatementSchema = Schema.declare(isStatement, {
|
|
494
|
+
identifier: "Statement",
|
|
495
|
+
toCodecJson: () => Schema.link()(Schema.Struct({
|
|
496
|
+
subject: Schema.suspend(() => N3TermSchema),
|
|
497
|
+
predicate: Schema.suspend(() => N3TermSchema),
|
|
498
|
+
object: Schema.suspend(() => N3TermSchema)
|
|
499
|
+
}), SchemaTransformation.transform({
|
|
500
|
+
decode: (j) => new Statement(j.subject, j.predicate, j.object),
|
|
501
|
+
encode: (st) => ({
|
|
502
|
+
subject: st.subject,
|
|
503
|
+
predicate: st.predicate,
|
|
504
|
+
object: st.object
|
|
505
|
+
})
|
|
506
|
+
}))
|
|
507
|
+
});
|
|
508
|
+
/**
|
|
509
|
+
* Schema of any N3 term; its JSON codec is core's `TermJson` term (IRIs,
|
|
510
|
+
* blank nodes, literals, variables) or a JSON collection or formula.
|
|
511
|
+
*
|
|
512
|
+
* @since 0.1.0
|
|
513
|
+
* @category schemas
|
|
514
|
+
*/
|
|
515
|
+
const N3TermSchema = Schema.declare(isN3Term, {
|
|
516
|
+
identifier: "N3Term",
|
|
517
|
+
toCodecJson: () => Schema.link()(Schema.Union([
|
|
518
|
+
NamedNodeSchema,
|
|
519
|
+
BlankNodeSchema,
|
|
520
|
+
LiteralSchema,
|
|
521
|
+
VariableSchema,
|
|
522
|
+
CollectionSchema,
|
|
523
|
+
FormulaSchema
|
|
524
|
+
]), SchemaTransformation.passthrough())
|
|
525
|
+
});
|
|
526
|
+
export { isTriple as A, statement as C, isBlankNode as D, loop as E, isLiteral as O, mapTerms as S, variables as T, isCollection as _, Model_exports as a, isN3Term as b, StatementSchema as c, blankNodes as d, collection as f, hasStatement as g, formula as h, FormulaSchema as i, isVariable as j, isNamedNode as k, TypeId as l, emptyFormula as m, CollectionSchema as n, N3TermSchema as o, document as p, Formula as r, Statement as s, Collection as t, addStatements as u, isFormula as v, substitute as w, isStatement as x, isGround as y };
|
|
527
|
+
|
|
528
|
+
//# sourceMappingURL=Model-DlPzRYhF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Model-DlPzRYhF.mjs","names":["Term.NamedNode","Term.BlankNode","Term.Literal","Term.Variable","Term.Triple","Term.namedNode","PrefixMap.empty","Term.isNamedNode","Term.isBlankNode","Term.isLiteral","Term.isVariable","Guards.isVariable","Guards.isBlankNode","Term.NamedNodeSchema","Term.BlankNodeSchema","Term.LiteralSchema","Term.VariableSchema"],"sources":["../src/n3/internal/guards.ts","../src/n3/internal/loop.ts","../src/n3/Model.ts"],"sourcesContent":["/**\n * Class refinements of the core terms, for the walks that test every term\n * they visit (`Term.isVariable` and its siblings check the `TypeId` through\n * a `dual` call first; a class check is one instruction).\n *\n * @internal\n */\nimport * as Term from '../../Term.ts';\n\n/** @internal */\nexport const isNamedNode = (u: unknown): u is Term.NamedNode => u instanceof Term.NamedNode;\n\n/** @internal */\nexport const isBlankNode = (u: unknown): u is Term.BlankNode => u instanceof Term.BlankNode;\n\n/** @internal */\nexport const isLiteral = (u: unknown): u is Term.Literal => u instanceof Term.Literal;\n\n/** @internal */\nexport const isVariable = (u: unknown): u is Term.Variable => u instanceof Term.Variable;\n\n/** @internal */\nexport const isTriple = (u: unknown): u is Term.Triple => u instanceof Term.Triple;\n","/**\n * A loop as a function, for the scans that step until a condition holds\n * (probing a hash table, walking a list, backtracking a search).\n *\n * @internal\n */\nimport * as Iterable from 'effect/Iterable';\n\nconst BLOCK = 1024;\n\n/** `0 … BLOCK - 1`: the steps of one block run as an array scan, which engines optimise well. */\nconst offsets: ReadonlyArray<number> = Array.from({ length: BLOCK }, (_, i) => i);\n\n/** The first step of each block after the first: `BLOCK, 2 * BLOCK, …`. */\nconst blocks: Iterable<number> = Iterable.makeBy((b) => (b + 1) * BLOCK);\n\n/**\n * Calls `step` with 0, 1, 2, … until it returns `false`. It never recurses,\n * so a loop of any length takes no stack.\n *\n * @internal\n */\nexport const loop = (step: (i: number) => boolean): void => {\n // Most loops end within the first block, which needs no iterator\n if (offsets.every(step)) {\n Iterable.some(blocks, (base) => offsets.some((i) => !step(base + i)));\n }\n};\n","/**\n * The Notation3 data model.\n *\n * N3 extends RDF with quoted graphs (formulas), first-class lists\n * (collections), universally quantified variables and literals or other\n * non-IRI terms in any position of a statement. Core RDF `Quad`s only allow\n * ground terms, so this module defines an N3-specific model on top of the\n * core term classes:\n *\n * - `N3Term` = core `NamedNode` | `BlankNode` | `Literal` | `Variable`, plus\n * the N3-only `Collection` (an N3 list) and `Formula` (a graph term).\n * - `Statement` — a triple of arbitrary `N3Term`s.\n * - `Formula` — an unordered set of statements. Formulas are values: two\n * formulas with the same statements are equal (`Equal.equals`), which\n * matches the N3 semantics of graph terms.\n * - `Document` — a parsed N3 document: its top-level formula together with\n * the prefixes and base IRI it declared.\n *\n * Quick variables (`?x`) are represented by core `Term.Variable`s. Blank\n * nodes keep their core representation; a blank node is implicitly\n * existentially quantified in the innermost formula that contains all of its\n * occurrences.\n *\n * Like core terms, `Collection`, `Formula` and `Statement` implement `Equal`\n * and `Hash` through a canonical `key`.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Equal from 'effect/Equal';\nimport * as Hash from 'effect/Hash';\nimport { NodeInspectSymbol } from 'effect/Inspectable';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport { pipeArguments, type Pipeable } from 'effect/Pipeable';\nimport * as Order from 'effect/Order';\nimport { hasProperty } from 'effect/Predicate';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaTransformation from 'effect/SchemaTransformation';\nimport * as PrefixMap from '../PrefixMap.ts';\nimport * as Term from '../Term.ts';\nimport * as Guards from './internal/guards.ts';\nimport { loop } from './internal/loop.ts';\n\n/**\n * @since 0.1.0\n * @category symbols\n */\nexport const TypeId: unique symbol = Symbol.for('@thomasfosterau/effect-rdf/n3/Model');\n\n/**\n * @since 0.1.0\n * @category symbols\n */\nexport type TypeId = typeof TypeId;\n\nabstract class N3Base implements Equal.Equal, Pipeable {\n readonly [TypeId]: TypeId = TypeId;\n abstract readonly _tag: string;\n /** The key once computed (no key is empty: the shortest are `()` and `{}`). */\n #key = '';\n /** The hash once computed (0 until then; a hash of 0 is merely computed again). */\n #hash = 0;\n\n /** A canonical, N3-like serialisation used for equality and hashing. */\n get key(): string {\n if (this.#key === '') this.#key = this.computeKey();\n return this.#key;\n }\n\n protected abstract computeKey(): string;\n\n /**\n * Statements, collections and formulas override this to combine their\n * parts' hashes, so that a formula deduplicating its statements builds no\n * key; whatever the override, equal keys give equal hashes.\n */\n protected computeHash(): number {\n return Hash.string(this.key);\n }\n\n /** RDF/JS-style alias of `_tag`. */\n get termType(): this['_tag'] {\n return this._tag;\n }\n\n equals(that: unknown): boolean {\n return isN3Base(that) && that.key === this.key;\n }\n\n [Equal.symbol](that: Equal.Equal): boolean {\n return this.equals(that);\n }\n\n [Hash.symbol](): number {\n if (this.#hash === 0) this.#hash = this.computeHash();\n return this.#hash;\n }\n\n pipe() {\n return pipeArguments(this, arguments);\n }\n\n toString(): string {\n return this.key;\n }\n\n toJSON(): unknown {\n return { _tag: this._tag, value: this.key };\n }\n\n [NodeInspectSymbol](): string {\n return `${this._tag}(${this.key})`;\n }\n}\n\n/** Whether a value is an N3 collection, statement or formula (it carries the `TypeId`). */\nconst isN3Base = (u: unknown): u is N3Base => hasProperty(u, TypeId);\n\n/**\n * An N3 list (collection): an ordered, first-class sequence of terms,\n * written `( a b c )`. The empty collection corresponds to `rdf:nil`.\n *\n * @since 0.1.0\n * @category models\n */\nexport class Collection extends N3Base {\n readonly _tag = 'Collection' as const;\n readonly items: ReadonlyArray<N3Term>;\n constructor(items: ReadonlyArray<N3Term>) {\n super();\n this.items = items;\n }\n protected override computeHash(): number {\n return this.items.reduce((h, item) => Hash.combine(h, item[Hash.symbol]()), Hash.string('()'));\n }\n protected computeKey(): string {\n return Arr.isReadonlyArrayEmpty(this.items)\n ? '()'\n : `( ${this.items.map((t) => t.key).join(' ')} )`;\n }\n}\n\n/**\n * An N3 statement: a triple whose subject, predicate and object may be any\n * `N3Term`.\n *\n * @since 0.1.0\n * @category models\n */\nexport class Statement<\n out S extends N3Term = N3Term,\n out P extends N3Term = N3Term,\n out O extends N3Term = N3Term,\n> extends N3Base {\n readonly _tag = 'Statement' as const;\n readonly subject: S;\n readonly predicate: P;\n readonly object: O;\n constructor(subject: S, predicate: P, object: O) {\n super();\n this.subject = subject;\n this.predicate = predicate;\n this.object = object;\n }\n protected override computeHash(): number {\n return Hash.combine(\n Hash.combine(this.subject[Hash.symbol](), this.predicate[Hash.symbol]()),\n this.object[Hash.symbol](),\n );\n }\n protected computeKey(): string {\n return `${this.subject.key} ${this.predicate.key} ${this.object.key}`;\n }\n}\n\n/**\n * Whether two terms are equal (have the same key), compared by their parts\n * where that avoids building keys: identical or differently hashed terms are\n * decided at once, and statements, collections and formulas are compared\n * part by part. Only leaf terms (IRIs, literals, blank nodes, variables) are\n * compared by key.\n */\nconst sameTerm = (a: N3Term, b: N3Term): boolean => {\n if (a === b) return true;\n if (a[Hash.symbol]() !== b[Hash.symbol]()) return false;\n if (a instanceof Formula) return b instanceof Formula && sameFormula(a, b);\n if (a instanceof Collection) {\n return (\n b instanceof Collection &&\n a.items.length === b.items.length &&\n a.items.every((item, i) => sameTerm(item, b.items[i] ?? item))\n );\n }\n if (b instanceof Formula || b instanceof Collection) return false;\n return a.key === b.key;\n};\n\n/** Whether two statements are equal: their terms are (`sameTerm`). */\nconst sameStatement = (a: Statement, b: Statement): boolean =>\n sameTerm(a.subject, b.subject) &&\n sameTerm(a.predicate, b.predicate) &&\n sameTerm(a.object, b.object);\n\n/** Whether two formulas have the same statements (searched for small ones, by key otherwise). */\nconst sameFormula = (a: Formula, b: Formula): boolean => {\n const as = a.statements;\n const bs = b.statements;\n if (as.length !== bs.length) return false;\n if (as.length > 8) return a.key === b.key;\n return as.every((s) => bs.some((t) => sameStatement(s, t)));\n};\n\n/** A placeholder for the probe's statement before the first is placed. */\nconst emptyStatement: Statement = new Statement(\n Term.namedNode(''),\n Term.namedNode(''),\n Term.namedNode(''),\n);\n\n/**\n * The statements without duplicates, keeping the first of each: by their\n * structural hashes, comparing keys only when two hashes are equal, so that\n * no key is built for statements that differ.\n */\nconst deduplicate = (all: ReadonlyArray<Statement>): ReadonlyArray<Statement> => {\n const n = all.length;\n if (n < 2) return all;\n // Open addressing over a power-of-two table at most half full: each slot holds a statement's\n // hash and its position + 1 (0 when empty), probed linearly\n const mask = 2 ** Math.ceil(Math.log2(n * 2)) - 1;\n const hashes = new Int32Array(mask + 1);\n const slots = new Int32Array(mask + 1);\n const unique: Array<Statement> = [];\n // The probe of the statement being placed: one closure for the whole table\n let current: Statement = emptyStatement;\n let hash = 0;\n let i = 0;\n let duplicate = false;\n const probe = (): boolean => {\n const slot = slots[i] ?? 0;\n if (slot === 0) return false;\n if (hashes[i] === hash && sameStatement(current, all[slot - 1] ?? current)) {\n duplicate = true;\n return false;\n }\n i = (i + 1) & mask;\n return true;\n };\n all.forEach((s, k) => {\n current = s;\n hash = s[Hash.symbol]() | 0;\n i = hash & mask;\n duplicate = false;\n loop(probe);\n if (duplicate) return;\n hashes[i] = hash;\n slots[i] = k + 1;\n unique.push(s);\n });\n return unique.length === n ? all : unique;\n};\n\n/**\n * An N3 formula (graph term): an unordered set of statements, written\n * `{ ... }`. Duplicate statements are removed (when the statements are first\n * read), and equality is set equality of the statements (blank node labels are compared\n * literally; use `Isomorphism.isomorphic` for a blank-node-aware comparison).\n *\n * @since 0.1.0\n * @category models\n */\nexport class Formula extends N3Base {\n readonly _tag = 'Formula' as const;\n /** The statements as given (copied), then without duplicates once first read. */\n #statements: ReadonlyArray<Statement>;\n #deduplicated = false;\n constructor(statements: Iterable<Statement>) {\n super();\n this.#statements = Array.from(statements);\n }\n /**\n * The statements, without duplicates, in the order first given. They are\n * deduplicated the first time they are read, not when the formula is\n * made, so a formula that is never read (a parse whose result is only\n * checked for errors, a formula a rule discards) costs nothing to dedupe.\n */\n get statements(): ReadonlyArray<Statement> {\n if (!this.#deduplicated) {\n this.#statements = deduplicate(this.#statements);\n this.#deduplicated = true;\n }\n return this.#statements;\n }\n /** The sum of the statements' hashes: the same for the same set, whatever the order. */\n protected override computeHash(): number {\n return Hash.optimize(this.statements.reduce((h, st) => (h + st[Hash.symbol]()) | 0, 0x7b7d));\n }\n /** The number of statements in the formula. */\n get size(): number {\n // Fewer than two statements cannot hold a duplicate\n return this.#statements.length < 2 ? this.#statements.length : this.statements.length;\n }\n protected computeKey(): string {\n if (Arr.isReadonlyArrayEmpty(this.statements)) return '{}';\n const keys = Arr.sort(\n this.statements.map((s) => s.key),\n Order.String,\n );\n return `{ ${keys.join(' . ')} }`;\n }\n [Symbol.iterator](): Iterator<Statement> {\n return this.statements[Symbol.iterator]();\n }\n}\n\n/**\n * Any term that may appear in an N3 statement.\n *\n * @since 0.1.0\n * @category models\n */\nexport type N3Term =\n | Term.NamedNode\n | Term.BlankNode\n | Term.Literal\n | Term.Variable\n | Collection\n | Formula;\n\n/**\n * A parsed N3 document.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Document {\n /** The top-level formula: every statement asserted by the document. */\n readonly formula: Formula;\n /** The prefixes declared by the document (in declaration order). */\n readonly prefixes: PrefixMap.PrefixMap;\n /** The final in-scope base IRI of the document, if any. */\n readonly baseIri: string | undefined;\n}\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const statement = <S extends N3Term, P extends N3Term, O extends N3Term>(\n subject: S,\n predicate: P,\n object: O,\n): Statement<S, P, O> => new Statement(subject, predicate, object);\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const formula = (statements: Iterable<Statement> = []): Formula => new Formula(statements);\n\n/**\n * The empty formula `{}`.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const emptyFormula: Formula = new Formula([]);\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const collection = (items: Iterable<N3Term> = []): Collection =>\n new Collection(Array.from(items));\n\n/**\n * Creates a document from a formula.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const document = (\n formula: Formula,\n options?: { readonly prefixes?: PrefixMap.PrefixMap; readonly baseIri?: string | undefined },\n): Document => ({\n formula,\n prefixes: options?.prefixes ?? PrefixMap.empty,\n baseIri: options?.baseIri,\n});\n\n// -----------------------------------------------------------------------------\n// Guards\n// -----------------------------------------------------------------------------\n\n/**\n * @since 0.1.0\n * @category guards\n */\nexport const isFormula = (u: unknown): u is Formula => u instanceof Formula;\n\n/**\n * @since 0.1.0\n * @category guards\n */\nexport const isCollection = (u: unknown): u is Collection => u instanceof Collection;\n\n/**\n * @since 0.1.0\n * @category guards\n */\nexport const isStatement = (u: unknown): u is Statement => u instanceof Statement;\n\n/**\n * Whether a value is an `N3Term` (a core IRI, blank node, literal or\n * variable, or an N3 collection or formula).\n *\n * @since 0.1.0\n * @category guards\n */\nexport const isN3Term = (u: unknown): u is N3Term =>\n isFormula(u) ||\n isCollection(u) ||\n Term.isNamedNode(u) ||\n Term.isBlankNode(u) ||\n Term.isLiteral(u) ||\n Term.isVariable(u);\n\n// -----------------------------------------------------------------------------\n// Inspection\n// -----------------------------------------------------------------------------\n\n/**\n * Whether a term, statement or formula is free of variables (recursively).\n *\n * @since 0.1.0\n * @category predicates\n */\nexport const isGround = (self: N3Term | Statement): boolean => groundness(self);\n\n// Plain refinements rather than `Match`: `isGround` runs for every term it visits.\nconst groundness = (self: N3Term | Statement): boolean =>\n self instanceof Statement\n ? groundness(self.subject) && groundness(self.predicate) && groundness(self.object)\n : self instanceof Formula\n ? self.statements.every(groundness)\n : self instanceof Collection\n ? self.items.every(groundness)\n : !Guards.isVariable(self);\n\n/** Adds the atoms of `self` that pass `test` to `out`, by key, in order of first occurrence. */\nconst collect = <A extends N3Term>(\n self: N3Term | Statement,\n test: (t: N3Term) => t is A,\n out: MutableHashMap.MutableHashMap<string, A>,\n): void => {\n if (self instanceof Statement) {\n collect(self.subject, test, out);\n collect(self.predicate, test, out);\n collect(self.object, test, out);\n } else if (self instanceof Formula) {\n self.statements.forEach((s) => collect(s, test, out));\n } else if (self instanceof Collection) {\n self.items.forEach((i) => collect(i, test, out));\n } else if (test(self)) {\n MutableHashMap.set(out, self.key, self);\n }\n};\n\n/**\n * All distinct variables occurring in a term, statement or formula\n * (including inside nested formulas and collections), in order of first\n * occurrence.\n *\n * @since 0.1.0\n * @category getters\n */\nexport const variables = (self: N3Term | Statement): ReadonlyArray<Term.Variable> => {\n const out = MutableHashMap.empty<string, Term.Variable>();\n collect(self, Guards.isVariable, out);\n return Arr.fromIterable(MutableHashMap.values(out));\n};\n\n/**\n * All distinct blank nodes occurring in a term, statement or formula\n * (including inside nested formulas and collections).\n *\n * @since 0.1.0\n * @category getters\n */\nexport const blankNodes = (self: N3Term | Statement): ReadonlyArray<Term.BlankNode> => {\n const out = MutableHashMap.empty<string, Term.BlankNode>();\n collect(self, Guards.isBlankNode, out);\n return Arr.fromIterable(MutableHashMap.values(out));\n};\n\n// -----------------------------------------------------------------------------\n// Combinators\n// -----------------------------------------------------------------------------\n\n/**\n * Applies `f` to every atomic term (IRI, blank node, literal, variable),\n * recursing into collections, statements and nested formulas.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport function mapTerms<T extends N3Term | Statement>(\n self: T,\n f: (term: Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable) => N3Term,\n): T extends Statement ? Statement : T extends Formula ? Formula : N3Term;\nexport function mapTerms(\n self: N3Term | Statement,\n f: (term: Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable) => N3Term,\n): N3Term | Statement {\n return self instanceof Statement ? mapStatement(self, f) : mapTerm(self, f);\n}\n\ntype Atom = Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable;\n\n// Plain refinements rather than `Match`: `mapTerms` runs for every term it visits.\nconst mapTerm = (t: N3Term, f: (term: Atom) => N3Term): N3Term =>\n t instanceof Formula\n ? new Formula(t.statements.map((s) => mapStatement(s, f)))\n : t instanceof Collection\n ? new Collection(t.items.map((i) => mapTerm(i, f)))\n : f(t);\n\nconst mapStatement = (s: Statement, f: (term: Atom) => N3Term): Statement =>\n new Statement(mapTerm(s.subject, f), mapTerm(s.predicate, f), mapTerm(s.object, f));\n\n/**\n * Replaces variables by the terms bound to them (by variable name); unbound\n * variables are kept.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport function substitute<T extends N3Term | Statement>(\n self: T,\n bindings: ReadonlyMap<string, N3Term>,\n): T extends Statement ? Statement : T extends Formula ? Formula : N3Term;\nexport function substitute(\n self: N3Term | Statement,\n bindings: ReadonlyMap<string, N3Term>,\n): N3Term | Statement {\n return mapTerms(self, (t) => (Guards.isVariable(t) ? (bindings.get(t.value) ?? t) : t));\n}\n\n/**\n * Adds statements to a formula.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const addStatements = (self: Formula, statements: Iterable<Statement>): Formula =>\n new Formula([...self.statements, ...statements]);\n\n/**\n * Whether a formula contains a statement.\n *\n * @since 0.1.0\n * @category predicates\n */\nexport const hasStatement = (self: Formula, statement: Statement): boolean =>\n self.statements.some((s) => s.key === statement.key);\n\n// -----------------------------------------------------------------------------\n// Schemas\n// -----------------------------------------------------------------------------\n\n/**\n * Schema of a formula; its JSON codec is\n * `{ \"type\": \"formula\", \"statements\": [{ subject, predicate, object }, …] }`\n * over JSON N3 terms.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const FormulaSchema: Schema.declare<Formula> = Schema.declare(isFormula, {\n identifier: 'Formula',\n toCodecJson: () =>\n Schema.link<Formula>()(\n Schema.Struct({\n type: Schema.tag('formula'),\n statements: Schema.Array(Schema.suspend(() => StatementSchema)),\n }),\n SchemaTransformation.transform({\n decode: (j) => new Formula(j.statements),\n encode: (f) => ({ type: 'formula' as const, statements: f.statements }),\n }),\n ),\n});\n\n/**\n * The value a `FormulaSchema` decodes to.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type FormulaSchema = typeof FormulaSchema.Type;\n\n/**\n * Schema of a collection; its JSON codec is\n * `{ \"type\": \"collection\", \"items\": [ … ] }` over JSON N3 terms.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const CollectionSchema: Schema.declare<Collection> = Schema.declare(isCollection, {\n identifier: 'Collection',\n toCodecJson: () =>\n Schema.link<Collection>()(\n Schema.Struct({\n type: Schema.tag('collection'),\n items: Schema.Array(Schema.suspend(() => N3TermSchema)),\n }),\n SchemaTransformation.transform({\n decode: (j) => new Collection(j.items),\n encode: (c) => ({ type: 'collection' as const, items: c.items }),\n }),\n ),\n});\n\n/**\n * The value a `CollectionSchema` decodes to.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type CollectionSchema = typeof CollectionSchema.Type;\n\n/**\n * Schema of a statement; its JSON codec is `{ subject, predicate, object }`\n * over JSON N3 terms.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const StatementSchema: Schema.declare<Statement> = Schema.declare(isStatement, {\n identifier: 'Statement',\n toCodecJson: () =>\n Schema.link<Statement>()(\n Schema.Struct({\n subject: Schema.suspend(() => N3TermSchema),\n predicate: Schema.suspend(() => N3TermSchema),\n object: Schema.suspend(() => N3TermSchema),\n }),\n SchemaTransformation.transform({\n decode: (j) => new Statement(j.subject, j.predicate, j.object),\n encode: (st) => ({ subject: st.subject, predicate: st.predicate, object: st.object }),\n }),\n ),\n});\n\n/**\n * The value a `StatementSchema` decodes to.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type StatementSchema = typeof StatementSchema.Type;\n\n/**\n * Schema of any N3 term; its JSON codec is core's `TermJson` term (IRIs,\n * blank nodes, literals, variables) or a JSON collection or formula.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const N3TermSchema: Schema.declare<N3Term> = Schema.declare(isN3Term, {\n identifier: 'N3Term',\n toCodecJson: () =>\n Schema.link<N3Term>()(\n Schema.Union([\n Term.NamedNodeSchema,\n Term.BlankNodeSchema,\n Term.LiteralSchema,\n Term.VariableSchema,\n CollectionSchema,\n FormulaSchema,\n ]),\n SchemaTransformation.passthrough(),\n ),\n});\n\n/**\n * The value a `N3TermSchema` decodes to.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type N3TermSchema = typeof N3TermSchema.Type;\n"],"mappings":"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"}
|