@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,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A reader for W3C test-suite manifests (`manifest.ttl`) as used by the RDF,
|
|
3
|
+
* SPARQL, SHACL, ShEx and JSON-LD test suites.
|
|
4
|
+
*
|
|
5
|
+
* Manifests are parsed with the Turtle parser. `load` follows `mf:include`
|
|
6
|
+
* recursively; reading files is delegated to a caller-supplied function so
|
|
7
|
+
* that the module stays platform independent.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import * as fs from 'node:fs'
|
|
12
|
+
* import { Effect } from 'effect'
|
|
13
|
+
* import { Manifest } from '@thomasfosterau/effect-rdf/turtle'
|
|
14
|
+
*
|
|
15
|
+
* const entries = Manifest.load(
|
|
16
|
+
* 'https://w3c.github.io/rdf-tests/rdf/rdf12/rdf-turtle/manifest.ttl',
|
|
17
|
+
* Manifest.fileReader('https://w3c.github.io/rdf-tests/', '/path/to/rdf-tests/', (path) =>
|
|
18
|
+
* Effect.sync(() => fs.readFileSync(path, 'utf8')),
|
|
19
|
+
* ),
|
|
20
|
+
* )
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
import * as Dataset from '../Dataset.ts';
|
|
26
|
+
import * as Namespace from '../Namespace.ts';
|
|
27
|
+
import type * as Serialization from '../Serialization.ts';
|
|
28
|
+
import * as Term from '../Term.ts';
|
|
29
|
+
import { rdf, rdfs } from '../Vocab.ts';
|
|
30
|
+
import * as Arr from 'effect/Array';
|
|
31
|
+
import * as Effect from 'effect/Effect';
|
|
32
|
+
import * as MutableHashSet from 'effect/MutableHashSet';
|
|
33
|
+
import * as Option from 'effect/Option';
|
|
34
|
+
import * as Turtle from './Turtle.ts';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The W3C test manifest vocabulary.
|
|
38
|
+
*
|
|
39
|
+
* @since 0.1.0
|
|
40
|
+
* @category vocabularies
|
|
41
|
+
*/
|
|
42
|
+
export const mf = Namespace.vocabulary(
|
|
43
|
+
'http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#',
|
|
44
|
+
['Manifest', 'entries', 'include', 'name', 'action', 'result', 'assumedTestBase'],
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The RDF test vocabulary.
|
|
49
|
+
*
|
|
50
|
+
* @since 0.1.0
|
|
51
|
+
* @category vocabularies
|
|
52
|
+
*/
|
|
53
|
+
export const rdft = Namespace.make('http://www.w3.org/ns/rdftest#');
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* A single test entry.
|
|
57
|
+
*
|
|
58
|
+
* @since 0.1.0
|
|
59
|
+
* @category models
|
|
60
|
+
*/
|
|
61
|
+
export interface Entry {
|
|
62
|
+
/** The test IRI (or blank node key). */
|
|
63
|
+
readonly id: string;
|
|
64
|
+
/** The test node itself, for reading further properties from `dataset`. */
|
|
65
|
+
readonly node: Term.Subject;
|
|
66
|
+
/** The IRI of the test's `rdf:type`. */
|
|
67
|
+
readonly type: string;
|
|
68
|
+
/** The local name of the test type, e.g. `TestTurtleEval`. */
|
|
69
|
+
readonly kind: string;
|
|
70
|
+
/** `mf:name` (falls back to the local name of the test IRI). */
|
|
71
|
+
readonly name: string;
|
|
72
|
+
/** `rdfs:comment`, if any. */
|
|
73
|
+
readonly comment: Option.Option<string>;
|
|
74
|
+
/** The `mf:action` IRI, if the action is an IRI. */
|
|
75
|
+
readonly action: Option.Option<string>;
|
|
76
|
+
/** The `mf:result` IRI, if the result is an IRI. */
|
|
77
|
+
readonly result: Option.Option<string>;
|
|
78
|
+
/** The IRI of the manifest that lists this entry. */
|
|
79
|
+
readonly manifest: string;
|
|
80
|
+
/** The parsed manifest document. */
|
|
81
|
+
readonly dataset: Dataset.Dataset;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* A parsed manifest.
|
|
86
|
+
*
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
* @category models
|
|
89
|
+
*/
|
|
90
|
+
export interface Manifest {
|
|
91
|
+
readonly iri: string;
|
|
92
|
+
readonly label: Option.Option<string>;
|
|
93
|
+
readonly assumedTestBase: Option.Option<string>;
|
|
94
|
+
readonly entries: ReadonlyArray<Entry>;
|
|
95
|
+
readonly includes: ReadonlyArray<string>;
|
|
96
|
+
readonly dataset: Dataset.Dataset;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const localName = (iri: string): string => iri.replace(/^.*[#/]/, '');
|
|
100
|
+
|
|
101
|
+
const iriOf = (term: Option.Option<Term.Object>): Option.Option<string> =>
|
|
102
|
+
Option.flatMap(term, (t) => (Term.isNamedNode(t) ? Option.some(t.value) : Option.none()));
|
|
103
|
+
|
|
104
|
+
const stringOf = (term: Option.Option<Term.Object>): Option.Option<string> =>
|
|
105
|
+
Option.flatMap(term, (t) => (Term.isLiteral(t) ? Option.some(t.value) : Option.none()));
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Parses a manifest document. `iri` is the manifest's own IRI, used as the
|
|
109
|
+
* base IRI.
|
|
110
|
+
*
|
|
111
|
+
* @since 0.1.0
|
|
112
|
+
* @category parsing
|
|
113
|
+
*/
|
|
114
|
+
export const parse = (
|
|
115
|
+
text: string,
|
|
116
|
+
iri: string,
|
|
117
|
+
): Effect.Effect<Manifest, Serialization.RdfParseError> =>
|
|
118
|
+
Effect.map(Turtle.parse(text, { baseIri: iri }), ({ dataset }) => {
|
|
119
|
+
const subjects = Dataset.subjectsOf(dataset, rdf.type, mf.Manifest);
|
|
120
|
+
const manifest: Term.Subject =
|
|
121
|
+
subjects.find((s) => Term.isNamedNode(s) && s.value === iri) ??
|
|
122
|
+
subjects[0] ??
|
|
123
|
+
Term.namedNode(iri);
|
|
124
|
+
const listAt = (p: Term.NamedNode): ReadonlyArray<Term.Object> =>
|
|
125
|
+
Dataset.objectsOf(dataset, manifest, p).flatMap((head) =>
|
|
126
|
+
Option.getOrElse(Dataset.list(dataset, head), () => []),
|
|
127
|
+
);
|
|
128
|
+
const entries = listAt(mf.entries).flatMap((node): ReadonlyArray<Entry> => {
|
|
129
|
+
if (!Term.isResource(node)) return [];
|
|
130
|
+
const type = iriOf(Dataset.objectOf(dataset, node, rdf.type));
|
|
131
|
+
const id = Term.isNamedNode(node) ? node.value : node.key;
|
|
132
|
+
return [
|
|
133
|
+
{
|
|
134
|
+
id,
|
|
135
|
+
node,
|
|
136
|
+
type: Option.getOrElse(type, () => ''),
|
|
137
|
+
kind: Option.match(type, { onNone: () => '', onSome: localName }),
|
|
138
|
+
name: Option.getOrElse(stringOf(Dataset.objectOf(dataset, node, mf.name)), () =>
|
|
139
|
+
localName(id),
|
|
140
|
+
),
|
|
141
|
+
comment: stringOf(Dataset.objectOf(dataset, node, rdfs.comment)),
|
|
142
|
+
action: iriOf(Dataset.objectOf(dataset, node, mf.action)),
|
|
143
|
+
result: iriOf(Dataset.objectOf(dataset, node, mf.result)),
|
|
144
|
+
manifest: iri,
|
|
145
|
+
dataset,
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
iri,
|
|
151
|
+
label: stringOf(Dataset.objectOf(dataset, manifest, rdfs.label)),
|
|
152
|
+
assumedTestBase: iriOf(Dataset.objectOf(dataset, manifest, mf.assumedTestBase)),
|
|
153
|
+
entries,
|
|
154
|
+
includes: listAt(mf.include).flatMap((t) => (Term.isNamedNode(t) ? [t.value] : [])),
|
|
155
|
+
dataset,
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Loads a manifest and, recursively, every manifest it includes, returning
|
|
161
|
+
* all entries (each manifest is read at most once).
|
|
162
|
+
*
|
|
163
|
+
* @since 0.1.0
|
|
164
|
+
* @category loading
|
|
165
|
+
*/
|
|
166
|
+
export const load = <E, R>(
|
|
167
|
+
iri: string,
|
|
168
|
+
read: (iri: string) => Effect.Effect<string, E, R>,
|
|
169
|
+
): Effect.Effect<ReadonlyArray<Entry>, E | Serialization.RdfParseError, R> =>
|
|
170
|
+
Effect.suspend(() => {
|
|
171
|
+
const seen = MutableHashSet.empty<string>();
|
|
172
|
+
const entries: Array<Entry> = [];
|
|
173
|
+
// Breadth first: a manifest's entries, then those of each include in turn
|
|
174
|
+
const visit = (
|
|
175
|
+
queue: ReadonlyArray<string>,
|
|
176
|
+
): Effect.Effect<ReadonlyArray<Entry>, E | Serialization.RdfParseError, R> => {
|
|
177
|
+
if (!Arr.isReadonlyArrayNonEmpty(queue)) return Effect.succeed(entries);
|
|
178
|
+
const [next, ...rest] = queue;
|
|
179
|
+
if (MutableHashSet.has(seen, next)) return visit(rest);
|
|
180
|
+
MutableHashSet.add(seen, next);
|
|
181
|
+
return read(next).pipe(
|
|
182
|
+
Effect.flatMap((text) => parse(text, next)),
|
|
183
|
+
Effect.flatMap((manifest) => {
|
|
184
|
+
entries.push(...manifest.entries);
|
|
185
|
+
return visit([...rest, ...manifest.includes]);
|
|
186
|
+
}),
|
|
187
|
+
);
|
|
188
|
+
};
|
|
189
|
+
return visit([iri]);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Builds a `read` function for `load` that maps IRIs under `iriPrefix` to
|
|
194
|
+
* paths under `pathPrefix` and reads them with `readFile`.
|
|
195
|
+
*
|
|
196
|
+
* @since 0.1.0
|
|
197
|
+
* @category loading
|
|
198
|
+
*/
|
|
199
|
+
export const fileReader =
|
|
200
|
+
<E, R>(
|
|
201
|
+
iriPrefix: string,
|
|
202
|
+
pathPrefix: string,
|
|
203
|
+
readFile: (path: string) => Effect.Effect<string, E, R>,
|
|
204
|
+
) =>
|
|
205
|
+
(iri: string): Effect.Effect<string, E, R> =>
|
|
206
|
+
readFile(toPath(iri, iriPrefix, pathPrefix));
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Maps an IRI under `iriPrefix` to a path under `pathPrefix`.
|
|
210
|
+
*
|
|
211
|
+
* @since 0.1.0
|
|
212
|
+
* @category loading
|
|
213
|
+
*/
|
|
214
|
+
export const toPath = (iri: string, iriPrefix: string, pathPrefix: string): string =>
|
|
215
|
+
iri.startsWith(iriPrefix) ? pathPrefix + iri.slice(iriPrefix.length) : iri;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RDF 1.2 TriG: Turtle extended with named graphs.
|
|
3
|
+
*
|
|
4
|
+
* Supports the same RDF 1.2 features as `Turtle`, plus `GRAPH` blocks and
|
|
5
|
+
* `{ ... }` default-graph blocks. The serializer writes default-graph
|
|
6
|
+
* triples at the top level followed by one block per named graph, with the
|
|
7
|
+
* same pretty-printing as the Turtle serializer.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { Effect } from 'effect'
|
|
12
|
+
* import { TriG } from '@thomasfosterau/effect-rdf/turtle'
|
|
13
|
+
*
|
|
14
|
+
* const program = Effect.gen(function* () {
|
|
15
|
+
* const { dataset, prefixes } = yield* TriG.parse(`
|
|
16
|
+
* PREFIX ex: <http://example.org/>
|
|
17
|
+
* ex:g { ex:s ex:p ex:o }
|
|
18
|
+
* `)
|
|
19
|
+
* return yield* TriG.serialize(dataset, { prefixes })
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
import * as Serialization from '../Serialization.ts';
|
|
26
|
+
import type * as Term from '../Term.ts';
|
|
27
|
+
import type * as Effect from 'effect/Effect';
|
|
28
|
+
import * as Option from 'effect/Option';
|
|
29
|
+
import type * as Stream from 'effect/Stream';
|
|
30
|
+
import * as internal from './internal/parse.ts';
|
|
31
|
+
import * as internalSerialize from './internal/serialize.ts';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The result of `parseQuads`: statements in document order with the
|
|
35
|
+
* document's prefixes and final base IRI.
|
|
36
|
+
*
|
|
37
|
+
* @since 0.1.0
|
|
38
|
+
* @category models
|
|
39
|
+
*/
|
|
40
|
+
export type QuadsResult = internal.QuadsResult;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Options for the TriG serializer.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category models
|
|
47
|
+
*/
|
|
48
|
+
export type SerializeOptions = internalSerialize.SerializeOptions;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
* @category formats
|
|
53
|
+
*/
|
|
54
|
+
export const format: Serialization.Format = Serialization.makeFormat({
|
|
55
|
+
name: 'TriG',
|
|
56
|
+
mediaType: 'application/trig',
|
|
57
|
+
extensions: ['trig'],
|
|
58
|
+
datasets: true,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// The span names are `TriG.parse`, `TriG.serialize`, …
|
|
62
|
+
const syntax: internal.Syntax = {
|
|
63
|
+
name: 'TriG',
|
|
64
|
+
trig: true,
|
|
65
|
+
trace: Option.some({ module: 'TriG', format }),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Parses a TriG document, returning the dataset together with the declared
|
|
70
|
+
* prefixes and the final base IRI.
|
|
71
|
+
*
|
|
72
|
+
* @since 0.1.0
|
|
73
|
+
* @category parsing
|
|
74
|
+
*/
|
|
75
|
+
export const parse = (
|
|
76
|
+
input: string,
|
|
77
|
+
options?: Serialization.ParseOptions,
|
|
78
|
+
): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>
|
|
79
|
+
internal.parse(syntax, input, options);
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Parses a TriG document into statements in document order.
|
|
83
|
+
*
|
|
84
|
+
* @since 0.1.0
|
|
85
|
+
* @category parsing
|
|
86
|
+
*/
|
|
87
|
+
export const parseQuads = (
|
|
88
|
+
input: string,
|
|
89
|
+
options?: Serialization.ParseOptions,
|
|
90
|
+
): Effect.Effect<QuadsResult, Serialization.RdfParseError> =>
|
|
91
|
+
internal.parseQuads(syntax, input, options);
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Parses a stream of text chunks incrementally. Statements are emitted as
|
|
95
|
+
* soon as they are complete (statements inside graph blocks individually);
|
|
96
|
+
* chunk boundaries may fall anywhere.
|
|
97
|
+
*
|
|
98
|
+
* @since 0.1.0
|
|
99
|
+
* @category parsing
|
|
100
|
+
*/
|
|
101
|
+
export const parseStream: <E, R>(
|
|
102
|
+
input: Stream.Stream<string, E, R>,
|
|
103
|
+
options?: Serialization.ParseOptions,
|
|
104
|
+
) => Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> = internal.parseStream(syntax);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Serialises quads as pretty TriG. Fails for triple terms in the subject
|
|
108
|
+
* position (not expressible in TriG 1.2).
|
|
109
|
+
*
|
|
110
|
+
* @since 0.1.0
|
|
111
|
+
* @category serializing
|
|
112
|
+
*/
|
|
113
|
+
export const serialize = (
|
|
114
|
+
quads: Iterable<Term.Quad>,
|
|
115
|
+
options?: SerializeOptions,
|
|
116
|
+
): Effect.Effect<string, Serialization.RdfSerializeError> =>
|
|
117
|
+
internalSerialize.serialize(syntax, quads, options);
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Serialises a stream of quads incrementally in constant memory. Only
|
|
121
|
+
* consecutive statements are grouped (a graph block is opened whenever the
|
|
122
|
+
* graph changes), and blank nodes keep their labels.
|
|
123
|
+
*
|
|
124
|
+
* @since 0.1.0
|
|
125
|
+
* @category serializing
|
|
126
|
+
*/
|
|
127
|
+
export const serializeStream: <E, R>(
|
|
128
|
+
quads: Stream.Stream<Term.Quad, E, R>,
|
|
129
|
+
options?: SerializeOptions,
|
|
130
|
+
) => Stream.Stream<string, Serialization.RdfSerializeError | E, R> =
|
|
131
|
+
internalSerialize.serializeStream(syntax);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @since 0.1.0
|
|
135
|
+
* @category parsing
|
|
136
|
+
*/
|
|
137
|
+
export const parser: Serialization.Parser = Serialization.makeParser({
|
|
138
|
+
format,
|
|
139
|
+
parse,
|
|
140
|
+
parseStream,
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @since 0.1.0
|
|
145
|
+
* @category serializing
|
|
146
|
+
*/
|
|
147
|
+
export const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({
|
|
148
|
+
format,
|
|
149
|
+
serialize,
|
|
150
|
+
serializeStream,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @since 0.1.0
|
|
155
|
+
* @category codecs
|
|
156
|
+
*/
|
|
157
|
+
export const codec: Serialization.Codec<Serialization.ParseOptions, SerializeOptions> =
|
|
158
|
+
Serialization.makeCodec(parser, serializer);
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RDF 1.2 Turtle: the terse RDF triple language.
|
|
3
|
+
*
|
|
4
|
+
* The parser supports the full RDF 1.2 grammar (triple terms `<<( s p o )>>`,
|
|
5
|
+
* reified triples `<< s p o ~ r >>`, annotations `{| ... |}`, `VERSION`,
|
|
6
|
+
* directional language tags) as well as RDF 1.1 documents, and reports the
|
|
7
|
+
* declared prefixes and final base IRI. `parseStream` parses incrementally,
|
|
8
|
+
* emitting statements as soon as they are complete.
|
|
9
|
+
*
|
|
10
|
+
* The serializer produces idiomatic output: prefixed names, `@base`
|
|
11
|
+
* relativisation, subject grouping with `;` and `,`, `a` for `rdf:type`,
|
|
12
|
+
* inline `[ ... ]` blank nodes, `( ... )` collections, numeric and boolean
|
|
13
|
+
* shorthand, annotation syntax for reified asserted triples, and a
|
|
14
|
+
* deterministic statement order.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Effect } from 'effect'
|
|
19
|
+
* import { PrefixMap } from '@thomasfosterau/effect-rdf'
|
|
20
|
+
* import { Turtle } from '@thomasfosterau/effect-rdf/turtle'
|
|
21
|
+
*
|
|
22
|
+
* const program = Effect.gen(function* () {
|
|
23
|
+
* const { dataset, prefixes } = yield* Turtle.parse(`
|
|
24
|
+
* PREFIX ex: <http://example.org/>
|
|
25
|
+
* ex:alice a ex:Person ; ex:knows [ ex:name "Bob" ] .
|
|
26
|
+
* `)
|
|
27
|
+
* return yield* Turtle.serialize(dataset, { prefixes })
|
|
28
|
+
* })
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
*/
|
|
33
|
+
import * as Serialization from '../Serialization.ts';
|
|
34
|
+
import type * as Term from '../Term.ts';
|
|
35
|
+
import type * as Effect from 'effect/Effect';
|
|
36
|
+
import * as Option from 'effect/Option';
|
|
37
|
+
import type * as Stream from 'effect/Stream';
|
|
38
|
+
import * as internal from './internal/parse.ts';
|
|
39
|
+
import * as internalSerialize from './internal/serialize.ts';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The result of `parseQuads`: statements in document order with the
|
|
43
|
+
* document's prefixes and final base IRI.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category models
|
|
47
|
+
*/
|
|
48
|
+
export type QuadsResult = internal.QuadsResult;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Options for the Turtle serializer.
|
|
52
|
+
*
|
|
53
|
+
* @since 0.1.0
|
|
54
|
+
* @category models
|
|
55
|
+
*/
|
|
56
|
+
export type SerializeOptions = internalSerialize.SerializeOptions;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @since 0.1.0
|
|
60
|
+
* @category formats
|
|
61
|
+
*/
|
|
62
|
+
export const format: Serialization.Format = Serialization.makeFormat({
|
|
63
|
+
name: 'Turtle',
|
|
64
|
+
mediaType: 'text/turtle',
|
|
65
|
+
mediaTypes: ['text/turtle', 'application/x-turtle'],
|
|
66
|
+
extensions: ['ttl'],
|
|
67
|
+
datasets: false,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// The span names are `Turtle.parse`, `Turtle.serialize`, …
|
|
71
|
+
const syntax: internal.Syntax = {
|
|
72
|
+
name: 'Turtle',
|
|
73
|
+
trig: false,
|
|
74
|
+
trace: Option.some({ module: 'Turtle', format }),
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Parses a Turtle document, returning the dataset together with the
|
|
79
|
+
* declared prefixes and the final base IRI. Triples are placed in
|
|
80
|
+
* `options.graph` (the default graph when omitted).
|
|
81
|
+
*
|
|
82
|
+
* @since 0.1.0
|
|
83
|
+
* @category parsing
|
|
84
|
+
*/
|
|
85
|
+
export const parse = (
|
|
86
|
+
input: string,
|
|
87
|
+
options?: Serialization.ParseOptions,
|
|
88
|
+
): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>
|
|
89
|
+
internal.parse(syntax, input, options);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Parses a Turtle document into statements in document order.
|
|
93
|
+
*
|
|
94
|
+
* @since 0.1.0
|
|
95
|
+
* @category parsing
|
|
96
|
+
*/
|
|
97
|
+
export const parseQuads = (
|
|
98
|
+
input: string,
|
|
99
|
+
options?: Serialization.ParseOptions,
|
|
100
|
+
): Effect.Effect<QuadsResult, Serialization.RdfParseError> =>
|
|
101
|
+
internal.parseQuads(syntax, input, options);
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Parses a stream of text chunks incrementally. Statements are emitted as
|
|
105
|
+
* soon as they are complete; chunk boundaries may fall anywhere.
|
|
106
|
+
*
|
|
107
|
+
* @since 0.1.0
|
|
108
|
+
* @category parsing
|
|
109
|
+
*/
|
|
110
|
+
export const parseStream: <E, R>(
|
|
111
|
+
input: Stream.Stream<string, E, R>,
|
|
112
|
+
options?: Serialization.ParseOptions,
|
|
113
|
+
) => Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> = internal.parseStream(syntax);
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Serialises triples as pretty Turtle. Fails for quads in named graphs and
|
|
117
|
+
* for triple terms in the subject position (not expressible in Turtle 1.2).
|
|
118
|
+
*
|
|
119
|
+
* @since 0.1.0
|
|
120
|
+
* @category serializing
|
|
121
|
+
*/
|
|
122
|
+
export const serialize = (
|
|
123
|
+
quads: Iterable<Term.Quad>,
|
|
124
|
+
options?: SerializeOptions,
|
|
125
|
+
): Effect.Effect<string, Serialization.RdfSerializeError> =>
|
|
126
|
+
internalSerialize.serialize(syntax, quads, options);
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Serialises a stream of triples incrementally in constant memory. Only
|
|
130
|
+
* consecutive statements are grouped, and blank nodes keep their labels.
|
|
131
|
+
*
|
|
132
|
+
* @since 0.1.0
|
|
133
|
+
* @category serializing
|
|
134
|
+
*/
|
|
135
|
+
export const serializeStream: <E, R>(
|
|
136
|
+
quads: Stream.Stream<Term.Quad, E, R>,
|
|
137
|
+
options?: SerializeOptions,
|
|
138
|
+
) => Stream.Stream<string, Serialization.RdfSerializeError | E, R> =
|
|
139
|
+
internalSerialize.serializeStream(syntax);
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @since 0.1.0
|
|
143
|
+
* @category parsing
|
|
144
|
+
*/
|
|
145
|
+
export const parser: Serialization.Parser = Serialization.makeParser({
|
|
146
|
+
format,
|
|
147
|
+
parse,
|
|
148
|
+
parseStream,
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @since 0.1.0
|
|
153
|
+
* @category serializing
|
|
154
|
+
*/
|
|
155
|
+
export const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({
|
|
156
|
+
format,
|
|
157
|
+
serialize,
|
|
158
|
+
serializeStream,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @since 0.1.0
|
|
163
|
+
* @category codecs
|
|
164
|
+
*/
|
|
165
|
+
export const codec: Serialization.Codec<Serialization.ParseOptions, SerializeOptions> =
|
|
166
|
+
Serialization.makeCodec(parser, serializer);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RDF 1.2 Turtle and TriG for `@thomasfosterau/effect-rdf`.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** @since 0.1.0 */
|
|
8
|
+
export * as Grammar from './Grammar.ts';
|
|
9
|
+
/** @since 0.1.0 */
|
|
10
|
+
export * as Manifest from './Manifest.ts';
|
|
11
|
+
/** @since 0.1.0 */
|
|
12
|
+
export * as TriG from './TriG.ts';
|
|
13
|
+
/** @since 0.1.0 */
|
|
14
|
+
export * as Turtle from './Turtle.ts';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A loop as a function, for the scans that step a cursor until a condition
|
|
3
|
+
* holds (decoding an escape, walking a list, counting line breaks).
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
import * as Iterable from 'effect/Iterable';
|
|
8
|
+
|
|
9
|
+
const BLOCK = 1024;
|
|
10
|
+
|
|
11
|
+
/** `0 … BLOCK - 1`: the steps of one block run as an array scan, which engines optimise well. */
|
|
12
|
+
const offsets: ReadonlyArray<number> = Array.from({ length: BLOCK }, (_, i) => i);
|
|
13
|
+
|
|
14
|
+
/** The first step of each block after the first: `BLOCK, 2 * BLOCK, …`. */
|
|
15
|
+
const blocks: Iterable<number> = Iterable.makeBy((b) => (b + 1) * BLOCK);
|
|
16
|
+
|
|
17
|
+
/** Calls `step` with 0, 1, 2, … until it returns `false`. */
|
|
18
|
+
export const loop = (step: (i: number) => boolean): void => {
|
|
19
|
+
// Most loops end within the first block, which needs no iterator
|
|
20
|
+
if (offsets.every((i) => step(i))) {
|
|
21
|
+
Iterable.some(blocks, (base) => offsets.some((i) => !step(base + i)));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import * as Dataset from '../../Dataset.ts';
|
|
2
|
+
import * as PrefixMap from '../../PrefixMap.ts';
|
|
3
|
+
import * as Serialization from '../../Serialization.ts';
|
|
4
|
+
import * as Term from '../../Term.ts';
|
|
5
|
+
import * as Arr from 'effect/Array';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as Option from 'effect/Option';
|
|
8
|
+
import * as Predicate from 'effect/Predicate';
|
|
9
|
+
import * as Stream from 'effect/Stream';
|
|
10
|
+
import { SyntaxFailure, TurtleParser } from './parser.ts';
|
|
11
|
+
|
|
12
|
+
/** @internal */
|
|
13
|
+
export interface Syntax {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly trig: boolean;
|
|
16
|
+
/** The span prefix and format for tracing (`<module>.parse`, …); untraced when `None`. */
|
|
17
|
+
readonly trace: Option.Option<Serialization.SpanTarget>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The result of parsing a document into quads in document order.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export interface QuadsResult {
|
|
26
|
+
readonly quads: ReadonlyArray<Term.Quad>;
|
|
27
|
+
readonly prefixes: PrefixMap.PrefixMap;
|
|
28
|
+
readonly baseIri: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const makeParser = (syntax: Syntax, options?: Serialization.ParseOptions): TurtleParser =>
|
|
32
|
+
new TurtleParser({
|
|
33
|
+
trig: syntax.trig,
|
|
34
|
+
baseIri: Option.fromUndefinedOr(options?.baseIri),
|
|
35
|
+
blankNodePrefix: options?.blankNodePrefix ?? Serialization.freshBlankNodePrefix(),
|
|
36
|
+
graph: (syntax.trig ? undefined : options?.graph) ?? Term.defaultGraph,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Maps what a parse threw — a `SyntaxFailure`, or a defect as an `Error` or
|
|
41
|
+
* its string form — to an `RdfParseError`.
|
|
42
|
+
*/
|
|
43
|
+
const toParseError = (syntax: Syntax, error: Error | string): Serialization.RdfParseError =>
|
|
44
|
+
error instanceof SyntaxFailure
|
|
45
|
+
? new Serialization.RdfParseError({
|
|
46
|
+
format: syntax.name,
|
|
47
|
+
message: error.message,
|
|
48
|
+
line: error.line,
|
|
49
|
+
column: error.column,
|
|
50
|
+
})
|
|
51
|
+
: new Serialization.RdfParseError({
|
|
52
|
+
format: syntax.name,
|
|
53
|
+
message: Predicate.isString(error) ? error : error.message,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
/** @internal */
|
|
57
|
+
export const parseQuads = (
|
|
58
|
+
syntax: Syntax,
|
|
59
|
+
input: string,
|
|
60
|
+
options?: Serialization.ParseOptions,
|
|
61
|
+
): Effect.Effect<QuadsResult, Serialization.RdfParseError> =>
|
|
62
|
+
Effect.try({
|
|
63
|
+
try: () => {
|
|
64
|
+
const parser = makeParser(syntax, options);
|
|
65
|
+
const quads = parser.parseDocument(input);
|
|
66
|
+
return {
|
|
67
|
+
quads,
|
|
68
|
+
prefixes: PrefixMap.make(parser.prefixes),
|
|
69
|
+
baseIri: Option.getOrUndefined(parser.base),
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
catch: (error) => toParseError(syntax, Predicate.isError(error) ? error : String(error)),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
/** @internal */
|
|
76
|
+
export const parse = (
|
|
77
|
+
syntax: Syntax,
|
|
78
|
+
input: string,
|
|
79
|
+
options?: Serialization.ParseOptions,
|
|
80
|
+
): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>
|
|
81
|
+
Effect.map(parseQuads(syntax, input, options), (result) => ({
|
|
82
|
+
dataset: Dataset.fromIterable(result.quads),
|
|
83
|
+
prefixes: result.prefixes,
|
|
84
|
+
baseIri: result.baseIri,
|
|
85
|
+
})).pipe(Serialization.withParseSpan(Option.getOrUndefined(syntax.trace), input));
|
|
86
|
+
|
|
87
|
+
const END: unique symbol = Symbol('end');
|
|
88
|
+
|
|
89
|
+
/** @internal */
|
|
90
|
+
export const parseStream =
|
|
91
|
+
(syntax: Syntax) =>
|
|
92
|
+
<E, R>(
|
|
93
|
+
input: Stream.Stream<string, E, R>,
|
|
94
|
+
options?: Serialization.ParseOptions,
|
|
95
|
+
): Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> =>
|
|
96
|
+
Stream.suspend(() => {
|
|
97
|
+
const parser = makeParser(syntax, options);
|
|
98
|
+
return Stream.concat(input, Stream.succeed(END)).pipe(
|
|
99
|
+
Stream.mapAccumArrayEffect(
|
|
100
|
+
() => undefined,
|
|
101
|
+
(_, chunks) =>
|
|
102
|
+
Effect.try({
|
|
103
|
+
try: (): readonly [undefined, ReadonlyArray<Term.Quad>] => [
|
|
104
|
+
undefined,
|
|
105
|
+
Arr.flatMap(chunks, (chunk) => (chunk === END ? parser.end() : parser.feed(chunk))),
|
|
106
|
+
],
|
|
107
|
+
catch: (error) =>
|
|
108
|
+
toParseError(syntax, Predicate.isError(error) ? error : String(error)),
|
|
109
|
+
}),
|
|
110
|
+
),
|
|
111
|
+
);
|
|
112
|
+
}).pipe(Serialization.withStreamSpan(Option.getOrUndefined(syntax.trace), 'parseStream'));
|