@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,86 @@
|
|
|
1
|
+
import { _ as Quad } from "./Term-B_4ezyXq.mjs";
|
|
2
|
+
import { c as Parser, i as Format, l as RdfParseError, m as Serializer, o as ParseOptions, r as Codec, s as ParseResult, u as RdfSerializeError } from "./Serialization-Df8iVauT.mjs";
|
|
3
|
+
import { n as QuadsResult$1, t as SerializeOptions$1 } from "./serialize-DsoXdM6n.mjs";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Stream from "effect/Stream";
|
|
6
|
+
declare namespace TriG_d_exports {
|
|
7
|
+
export { QuadsResult, SerializeOptions, codec, format, parse, parseQuads, parseStream, parser, serialize, serializeStream, serializer };
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The result of `parseQuads`: statements in document order with the
|
|
11
|
+
* document's prefixes and final base IRI.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
* @category models
|
|
15
|
+
*/
|
|
16
|
+
type QuadsResult = QuadsResult$1;
|
|
17
|
+
/**
|
|
18
|
+
* Options for the TriG serializer.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @category models
|
|
22
|
+
*/
|
|
23
|
+
type SerializeOptions = SerializeOptions$1;
|
|
24
|
+
/**
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
* @category formats
|
|
27
|
+
*/
|
|
28
|
+
declare const format: Format;
|
|
29
|
+
/**
|
|
30
|
+
* Parses a TriG document, returning the dataset together with the declared
|
|
31
|
+
* prefixes and the final base IRI.
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category parsing
|
|
35
|
+
*/
|
|
36
|
+
declare const parse: (input: string, options?: ParseOptions) => Effect.Effect<ParseResult, RdfParseError>;
|
|
37
|
+
/**
|
|
38
|
+
* Parses a TriG document into statements in document order.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category parsing
|
|
42
|
+
*/
|
|
43
|
+
declare const parseQuads: (input: string, options?: ParseOptions) => Effect.Effect<QuadsResult, RdfParseError>;
|
|
44
|
+
/**
|
|
45
|
+
* Parses a stream of text chunks incrementally. Statements are emitted as
|
|
46
|
+
* soon as they are complete (statements inside graph blocks individually);
|
|
47
|
+
* chunk boundaries may fall anywhere.
|
|
48
|
+
*
|
|
49
|
+
* @since 0.1.0
|
|
50
|
+
* @category parsing
|
|
51
|
+
*/
|
|
52
|
+
declare const parseStream: <E, R>(input: Stream.Stream<string, E, R>, options?: ParseOptions) => Stream.Stream<Quad, RdfParseError | E, R>;
|
|
53
|
+
/**
|
|
54
|
+
* Serialises quads as pretty TriG. Fails for triple terms in the subject
|
|
55
|
+
* position (not expressible in TriG 1.2).
|
|
56
|
+
*
|
|
57
|
+
* @since 0.1.0
|
|
58
|
+
* @category serializing
|
|
59
|
+
*/
|
|
60
|
+
declare const serialize: (quads: Iterable<Quad>, options?: SerializeOptions) => Effect.Effect<string, RdfSerializeError>;
|
|
61
|
+
/**
|
|
62
|
+
* Serialises a stream of quads incrementally in constant memory. Only
|
|
63
|
+
* consecutive statements are grouped (a graph block is opened whenever the
|
|
64
|
+
* graph changes), and blank nodes keep their labels.
|
|
65
|
+
*
|
|
66
|
+
* @since 0.1.0
|
|
67
|
+
* @category serializing
|
|
68
|
+
*/
|
|
69
|
+
declare const serializeStream: <E, R>(quads: Stream.Stream<Quad, E, R>, options?: SerializeOptions) => Stream.Stream<string, RdfSerializeError | E, R>;
|
|
70
|
+
/**
|
|
71
|
+
* @since 0.1.0
|
|
72
|
+
* @category parsing
|
|
73
|
+
*/
|
|
74
|
+
declare const parser: Parser;
|
|
75
|
+
/**
|
|
76
|
+
* @since 0.1.0
|
|
77
|
+
* @category serializing
|
|
78
|
+
*/
|
|
79
|
+
declare const serializer: Serializer<SerializeOptions>;
|
|
80
|
+
/**
|
|
81
|
+
* @since 0.1.0
|
|
82
|
+
* @category codecs
|
|
83
|
+
*/
|
|
84
|
+
declare const codec: Codec<ParseOptions, SerializeOptions>;
|
|
85
|
+
export { format as a, parseStream as c, serializeStream as d, serializer as f, codec as i, parser as l, SerializeOptions as n, parse as o, TriG_d_exports as r, parseQuads as s, QuadsResult as t, serialize as u };
|
|
86
|
+
//# sourceMappingURL=TriG-xDjdDatp.d.mts.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { _ as Quad } from "./Term-B_4ezyXq.mjs";
|
|
2
|
+
import { c as Parser, i as Format, l as RdfParseError, m as Serializer, o as ParseOptions, r as Codec, s as ParseResult, u as RdfSerializeError } from "./Serialization-Df8iVauT.mjs";
|
|
3
|
+
import { n as QuadsResult$1, t as SerializeOptions$1 } from "./serialize-DsoXdM6n.mjs";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Stream from "effect/Stream";
|
|
6
|
+
declare namespace Turtle_d_exports {
|
|
7
|
+
export { QuadsResult, SerializeOptions, codec, format, parse, parseQuads, parseStream, parser, serialize, serializeStream, serializer };
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The result of `parseQuads`: statements in document order with the
|
|
11
|
+
* document's prefixes and final base IRI.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
* @category models
|
|
15
|
+
*/
|
|
16
|
+
type QuadsResult = QuadsResult$1;
|
|
17
|
+
/**
|
|
18
|
+
* Options for the Turtle serializer.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @category models
|
|
22
|
+
*/
|
|
23
|
+
type SerializeOptions = SerializeOptions$1;
|
|
24
|
+
/**
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
* @category formats
|
|
27
|
+
*/
|
|
28
|
+
declare const format: Format;
|
|
29
|
+
/**
|
|
30
|
+
* Parses a Turtle document, returning the dataset together with the
|
|
31
|
+
* declared prefixes and the final base IRI. Triples are placed in
|
|
32
|
+
* `options.graph` (the default graph when omitted).
|
|
33
|
+
*
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
* @category parsing
|
|
36
|
+
*/
|
|
37
|
+
declare const parse: (input: string, options?: ParseOptions) => Effect.Effect<ParseResult, RdfParseError>;
|
|
38
|
+
/**
|
|
39
|
+
* Parses a Turtle document into statements in document order.
|
|
40
|
+
*
|
|
41
|
+
* @since 0.1.0
|
|
42
|
+
* @category parsing
|
|
43
|
+
*/
|
|
44
|
+
declare const parseQuads: (input: string, options?: ParseOptions) => Effect.Effect<QuadsResult, RdfParseError>;
|
|
45
|
+
/**
|
|
46
|
+
* Parses a stream of text chunks incrementally. Statements are emitted as
|
|
47
|
+
* soon as they are complete; chunk boundaries may fall anywhere.
|
|
48
|
+
*
|
|
49
|
+
* @since 0.1.0
|
|
50
|
+
* @category parsing
|
|
51
|
+
*/
|
|
52
|
+
declare const parseStream: <E, R>(input: Stream.Stream<string, E, R>, options?: ParseOptions) => Stream.Stream<Quad, RdfParseError | E, R>;
|
|
53
|
+
/**
|
|
54
|
+
* Serialises triples as pretty Turtle. Fails for quads in named graphs and
|
|
55
|
+
* for triple terms in the subject position (not expressible in Turtle 1.2).
|
|
56
|
+
*
|
|
57
|
+
* @since 0.1.0
|
|
58
|
+
* @category serializing
|
|
59
|
+
*/
|
|
60
|
+
declare const serialize: (quads: Iterable<Quad>, options?: SerializeOptions) => Effect.Effect<string, RdfSerializeError>;
|
|
61
|
+
/**
|
|
62
|
+
* Serialises a stream of triples incrementally in constant memory. Only
|
|
63
|
+
* consecutive statements are grouped, and blank nodes keep their labels.
|
|
64
|
+
*
|
|
65
|
+
* @since 0.1.0
|
|
66
|
+
* @category serializing
|
|
67
|
+
*/
|
|
68
|
+
declare const serializeStream: <E, R>(quads: Stream.Stream<Quad, E, R>, options?: SerializeOptions) => Stream.Stream<string, RdfSerializeError | E, R>;
|
|
69
|
+
/**
|
|
70
|
+
* @since 0.1.0
|
|
71
|
+
* @category parsing
|
|
72
|
+
*/
|
|
73
|
+
declare const parser: Parser;
|
|
74
|
+
/**
|
|
75
|
+
* @since 0.1.0
|
|
76
|
+
* @category serializing
|
|
77
|
+
*/
|
|
78
|
+
declare const serializer: Serializer<SerializeOptions>;
|
|
79
|
+
/**
|
|
80
|
+
* @since 0.1.0
|
|
81
|
+
* @category codecs
|
|
82
|
+
*/
|
|
83
|
+
declare const codec: Codec<ParseOptions, SerializeOptions>;
|
|
84
|
+
export { format as a, parseStream as c, serializeStream as d, serializer as f, codec as i, parser as l, SerializeOptions as n, parse as o, Turtle_d_exports as r, parseQuads as s, QuadsResult as t, serialize as u };
|
|
85
|
+
//# sourceMappingURL=Turtle-Bv1_bisW.d.mts.map
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { c as makeCodec, d as makeSerializer, l as makeFormat, u as makeParser } from "./Serialization-DP9H5bYQ.mjs";
|
|
3
|
+
import { a as parseStream$1, i as parseQuads$1, n as serializeStream$1, r as parse$1, t as serialize$1 } from "./serialize-96KBvKaf.mjs";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
// src/turtle/Turtle.ts
|
|
6
|
+
/**
|
|
7
|
+
* RDF 1.2 Turtle: the terse RDF triple language.
|
|
8
|
+
*
|
|
9
|
+
* The parser supports the full RDF 1.2 grammar (triple terms `<<( s p o )>>`,
|
|
10
|
+
* reified triples `<< s p o ~ r >>`, annotations `{| ... |}`, `VERSION`,
|
|
11
|
+
* directional language tags) as well as RDF 1.1 documents, and reports the
|
|
12
|
+
* declared prefixes and final base IRI. `parseStream` parses incrementally,
|
|
13
|
+
* emitting statements as soon as they are complete.
|
|
14
|
+
*
|
|
15
|
+
* The serializer produces idiomatic output: prefixed names, `@base`
|
|
16
|
+
* relativisation, subject grouping with `;` and `,`, `a` for `rdf:type`,
|
|
17
|
+
* inline `[ ... ]` blank nodes, `( ... )` collections, numeric and boolean
|
|
18
|
+
* shorthand, annotation syntax for reified asserted triples, and a
|
|
19
|
+
* deterministic statement order.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Effect } from 'effect'
|
|
24
|
+
* import { PrefixMap } from '@thomasfosterau/effect-rdf'
|
|
25
|
+
* import { Turtle } from '@thomasfosterau/effect-rdf/turtle'
|
|
26
|
+
*
|
|
27
|
+
* const program = Effect.gen(function* () {
|
|
28
|
+
* const { dataset, prefixes } = yield* Turtle.parse(`
|
|
29
|
+
* PREFIX ex: <http://example.org/>
|
|
30
|
+
* ex:alice a ex:Person ; ex:knows [ ex:name "Bob" ] .
|
|
31
|
+
* `)
|
|
32
|
+
* return yield* Turtle.serialize(dataset, { prefixes })
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @since 0.1.0
|
|
37
|
+
*/
|
|
38
|
+
var Turtle_exports = /* @__PURE__ */ __exportAll({
|
|
39
|
+
codec: () => codec,
|
|
40
|
+
format: () => format,
|
|
41
|
+
parse: () => parse,
|
|
42
|
+
parseQuads: () => parseQuads,
|
|
43
|
+
parseStream: () => parseStream,
|
|
44
|
+
parser: () => parser,
|
|
45
|
+
serialize: () => serialize,
|
|
46
|
+
serializeStream: () => serializeStream,
|
|
47
|
+
serializer: () => serializer
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* @since 0.1.0
|
|
51
|
+
* @category formats
|
|
52
|
+
*/
|
|
53
|
+
const format = makeFormat({
|
|
54
|
+
name: "Turtle",
|
|
55
|
+
mediaType: "text/turtle",
|
|
56
|
+
mediaTypes: ["text/turtle", "application/x-turtle"],
|
|
57
|
+
extensions: ["ttl"],
|
|
58
|
+
datasets: false
|
|
59
|
+
});
|
|
60
|
+
const syntax = {
|
|
61
|
+
name: "Turtle",
|
|
62
|
+
trig: false,
|
|
63
|
+
trace: Option.some({
|
|
64
|
+
module: "Turtle",
|
|
65
|
+
format
|
|
66
|
+
})
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Parses a Turtle document, returning the dataset together with the
|
|
70
|
+
* declared prefixes and the final base IRI. Triples are placed in
|
|
71
|
+
* `options.graph` (the default graph when omitted).
|
|
72
|
+
*
|
|
73
|
+
* @since 0.1.0
|
|
74
|
+
* @category parsing
|
|
75
|
+
*/
|
|
76
|
+
const parse = (input, options) => parse$1(syntax, input, options);
|
|
77
|
+
/**
|
|
78
|
+
* Parses a Turtle document into statements in document order.
|
|
79
|
+
*
|
|
80
|
+
* @since 0.1.0
|
|
81
|
+
* @category parsing
|
|
82
|
+
*/
|
|
83
|
+
const parseQuads = (input, options) => parseQuads$1(syntax, input, options);
|
|
84
|
+
/**
|
|
85
|
+
* Parses a stream of text chunks incrementally. Statements are emitted as
|
|
86
|
+
* soon as they are complete; chunk boundaries may fall anywhere.
|
|
87
|
+
*
|
|
88
|
+
* @since 0.1.0
|
|
89
|
+
* @category parsing
|
|
90
|
+
*/
|
|
91
|
+
const parseStream = parseStream$1(syntax);
|
|
92
|
+
/**
|
|
93
|
+
* Serialises triples as pretty Turtle. Fails for quads in named graphs and
|
|
94
|
+
* for triple terms in the subject position (not expressible in Turtle 1.2).
|
|
95
|
+
*
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
* @category serializing
|
|
98
|
+
*/
|
|
99
|
+
const serialize = (quads, options) => serialize$1(syntax, quads, options);
|
|
100
|
+
/**
|
|
101
|
+
* Serialises a stream of triples incrementally in constant memory. Only
|
|
102
|
+
* consecutive statements are grouped, and blank nodes keep their labels.
|
|
103
|
+
*
|
|
104
|
+
* @since 0.1.0
|
|
105
|
+
* @category serializing
|
|
106
|
+
*/
|
|
107
|
+
const serializeStream = serializeStream$1(syntax);
|
|
108
|
+
/**
|
|
109
|
+
* @since 0.1.0
|
|
110
|
+
* @category parsing
|
|
111
|
+
*/
|
|
112
|
+
const parser = makeParser({
|
|
113
|
+
format,
|
|
114
|
+
parse,
|
|
115
|
+
parseStream
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* @since 0.1.0
|
|
119
|
+
* @category serializing
|
|
120
|
+
*/
|
|
121
|
+
const serializer = makeSerializer({
|
|
122
|
+
format,
|
|
123
|
+
serialize,
|
|
124
|
+
serializeStream
|
|
125
|
+
});
|
|
126
|
+
/**
|
|
127
|
+
* @since 0.1.0
|
|
128
|
+
* @category codecs
|
|
129
|
+
*/
|
|
130
|
+
const codec = makeCodec(parser, serializer);
|
|
131
|
+
export { parseQuads as a, serialize as c, parse as i, serializeStream as l, codec as n, parseStream as o, format as r, parser as s, Turtle_exports as t, serializer as u };
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=Turtle-CZVUOtwl.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Turtle-CZVUOtwl.mjs","names":["Serialization.makeFormat","internal.parse","internal.parseQuads","internal.parseStream","internalSerialize.serialize","internalSerialize.serializeStream","Serialization.makeParser","Serialization.makeSerializer","Serialization.makeCodec"],"sources":["../src/turtle/Turtle.ts"],"sourcesContent":["/**\n * RDF 1.2 Turtle: the terse RDF triple language.\n *\n * The parser supports the full RDF 1.2 grammar (triple terms `<<( s p o )>>`,\n * reified triples `<< s p o ~ r >>`, annotations `{| ... |}`, `VERSION`,\n * directional language tags) as well as RDF 1.1 documents, and reports the\n * declared prefixes and final base IRI. `parseStream` parses incrementally,\n * emitting statements as soon as they are complete.\n *\n * The serializer produces idiomatic output: prefixed names, `@base`\n * relativisation, subject grouping with `;` and `,`, `a` for `rdf:type`,\n * inline `[ ... ]` blank nodes, `( ... )` collections, numeric and boolean\n * shorthand, annotation syntax for reified asserted triples, and a\n * deterministic statement order.\n *\n * @example\n * ```ts\n * import { Effect } from 'effect'\n * import { PrefixMap } from '@thomasfosterau/effect-rdf'\n * import { Turtle } from '@thomasfosterau/effect-rdf/turtle'\n *\n * const program = Effect.gen(function* () {\n * const { dataset, prefixes } = yield* Turtle.parse(`\n * PREFIX ex: <http://example.org/>\n * ex:alice a ex:Person ; ex:knows [ ex:name \"Bob\" ] .\n * `)\n * return yield* Turtle.serialize(dataset, { prefixes })\n * })\n * ```\n *\n * @since 0.1.0\n */\nimport * as Serialization from '../Serialization.ts';\nimport type * as Term from '../Term.ts';\nimport type * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport type * as Stream from 'effect/Stream';\nimport * as internal from './internal/parse.ts';\nimport * as internalSerialize from './internal/serialize.ts';\n\n/**\n * The result of `parseQuads`: statements in document order with the\n * document's prefixes and final base IRI.\n *\n * @since 0.1.0\n * @category models\n */\nexport type QuadsResult = internal.QuadsResult;\n\n/**\n * Options for the Turtle serializer.\n *\n * @since 0.1.0\n * @category models\n */\nexport type SerializeOptions = internalSerialize.SerializeOptions;\n\n/**\n * @since 0.1.0\n * @category formats\n */\nexport const format: Serialization.Format = Serialization.makeFormat({\n name: 'Turtle',\n mediaType: 'text/turtle',\n mediaTypes: ['text/turtle', 'application/x-turtle'],\n extensions: ['ttl'],\n datasets: false,\n});\n\n// The span names are `Turtle.parse`, `Turtle.serialize`, …\nconst syntax: internal.Syntax = {\n name: 'Turtle',\n trig: false,\n trace: Option.some({ module: 'Turtle', format }),\n};\n\n/**\n * Parses a Turtle document, returning the dataset together with the\n * declared prefixes and the final base IRI. Triples are placed in\n * `options.graph` (the default graph when omitted).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>\n internal.parse(syntax, input, options);\n\n/**\n * Parses a Turtle document into statements in document order.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseQuads = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<QuadsResult, Serialization.RdfParseError> =>\n internal.parseQuads(syntax, input, options);\n\n/**\n * Parses a stream of text chunks incrementally. Statements are emitted as\n * soon as they are complete; chunk boundaries may fall anywhere.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseStream: <E, R>(\n input: Stream.Stream<string, E, R>,\n options?: Serialization.ParseOptions,\n) => Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> = internal.parseStream(syntax);\n\n/**\n * Serialises triples as pretty Turtle. Fails for quads in named graphs and\n * for triple terms in the subject position (not expressible in Turtle 1.2).\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serialize = (\n quads: Iterable<Term.Quad>,\n options?: SerializeOptions,\n): Effect.Effect<string, Serialization.RdfSerializeError> =>\n internalSerialize.serialize(syntax, quads, options);\n\n/**\n * Serialises a stream of triples incrementally in constant memory. Only\n * consecutive statements are grouped, and blank nodes keep their labels.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializeStream: <E, R>(\n quads: Stream.Stream<Term.Quad, E, R>,\n options?: SerializeOptions,\n) => Stream.Stream<string, Serialization.RdfSerializeError | E, R> =\n internalSerialize.serializeStream(syntax);\n\n/**\n * @since 0.1.0\n * @category parsing\n */\nexport const parser: Serialization.Parser = Serialization.makeParser({\n format,\n parse,\n parseStream,\n});\n\n/**\n * @since 0.1.0\n * @category serializing\n */\nexport const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({\n format,\n serialize,\n serializeStream,\n});\n\n/**\n * @since 0.1.0\n * @category codecs\n */\nexport const codec: Serialization.Codec<Serialization.ParseOptions, SerializeOptions> =\n Serialization.makeCodec(parser, serializer);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,MAAa,SAA+BA,WAAyB;CACnE,MAAM;CACN,WAAW;CACX,YAAY,CAAC,eAAe,sBAAsB;CAClD,YAAY,CAAC,KAAK;CAClB,UAAU;AACZ,CAAC;AAGD,MAAM,SAA0B;CAC9B,MAAM;CACN,MAAM;CACN,OAAO,OAAO,KAAK;EAAE,QAAQ;EAAU;CAAO,CAAC;AACjD;;;;;;;;;AAUA,MAAa,SACX,OACA,YAEAC,QAAe,QAAQ,OAAO,OAAO;;;;;;;AAQvC,MAAa,cACX,OACA,YAEAC,aAAoB,QAAQ,OAAO,OAAO;;;;;;;;AAS5C,MAAa,cAGuDC,cAAqB,MAAM;;;;;;;;AAS/F,MAAa,aACX,OACA,YAEAC,YAA4B,QAAQ,OAAO,OAAO;;;;;;;;AASpD,MAAa,kBAIXC,kBAAkC,MAAM;;;;;AAM1C,MAAa,SAA+BC,WAAyB;CACnE;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,aAAyDC,eAA6B;CACjG;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,QACXC,UAAwB,QAAQ,UAAU"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode, L as isGroundTerm, O as defaultGraph, Q as quad, T as blankNode, U as isResource, Y as literal, a as GroundTermSchema, l as NamedNodeSchema, n as BlankNodeSchema, s as LiteralSchema, z as isLiteral } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { A as objectsOf, L as subjectsOf, m as fromIterable } from "./Dataset-BlmlcI7J.mjs";
|
|
4
|
+
import { t as Vocab_exports } from "./Vocab-DceKywpq.mjs";
|
|
5
|
+
import { r as sh } from "./Vocabulary-CnQl-_Z4.mjs";
|
|
6
|
+
import { d as toRdf$1, f as toSparql, o as fromRdf } from "./Path-B20Yp8KE.mjs";
|
|
7
|
+
import * as Arr from "effect/Array";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import * as Predicate from "effect/Predicate";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
import * as SchemaTransformation from "effect/SchemaTransformation";
|
|
12
|
+
import * as Result from "effect/Result";
|
|
13
|
+
// src/shacl/ValidationReport.ts
|
|
14
|
+
/**
|
|
15
|
+
* Validation reports (§3.6): a typed model of the outcome of SHACL
|
|
16
|
+
* validation, convertible to and from the standard RDF validation report
|
|
17
|
+
* vocabulary.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
var ValidationReport_exports = /* @__PURE__ */ __exportAll({
|
|
22
|
+
ReportSyntaxError: () => ReportSyntaxError,
|
|
23
|
+
ValidationReportSchema: () => ValidationReportSchema,
|
|
24
|
+
format: () => format,
|
|
25
|
+
formatResult: () => formatResult,
|
|
26
|
+
fromDataset: () => fromDataset,
|
|
27
|
+
hasNoViolations: () => hasNoViolations,
|
|
28
|
+
isValidationReport: () => isValidationReport,
|
|
29
|
+
make: () => make,
|
|
30
|
+
makeResult: () => makeResult,
|
|
31
|
+
toDataset: () => toDataset,
|
|
32
|
+
toRdf: () => toRdf,
|
|
33
|
+
violations: () => violations,
|
|
34
|
+
withSeverity: () => withSeverity
|
|
35
|
+
});
|
|
36
|
+
const { rdf, xsd } = Vocab_exports;
|
|
37
|
+
/**
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
* @category constructors
|
|
40
|
+
*/
|
|
41
|
+
const makeResult = (fields) => ({
|
|
42
|
+
_tag: "ValidationResult",
|
|
43
|
+
focusNode: fields.focusNode,
|
|
44
|
+
resultPath: fields.resultPath ?? Option.none(),
|
|
45
|
+
value: fields.value ?? Option.none(),
|
|
46
|
+
sourceShape: fields.sourceShape,
|
|
47
|
+
sourceConstraintComponent: fields.sourceConstraintComponent,
|
|
48
|
+
sourceConstraint: fields.sourceConstraint ?? Option.none(),
|
|
49
|
+
severity: fields.severity ?? sh.Violation,
|
|
50
|
+
messages: fields.messages ?? [],
|
|
51
|
+
details: fields.details ?? []
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Builds a report from results; `conforms` is true iff there are none.
|
|
55
|
+
*
|
|
56
|
+
* @since 0.1.0
|
|
57
|
+
* @category constructors
|
|
58
|
+
*/
|
|
59
|
+
const make = (results) => ({
|
|
60
|
+
_tag: "ValidationReport",
|
|
61
|
+
conforms: Arr.isReadonlyArrayEmpty(results),
|
|
62
|
+
results
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* @since 0.1.0
|
|
66
|
+
* @category guards
|
|
67
|
+
*/
|
|
68
|
+
const isValidationReport = (u) => Predicate.isTagged(u, "ValidationReport");
|
|
69
|
+
const PathStruct = Schema.Union([
|
|
70
|
+
Schema.Struct({
|
|
71
|
+
_tag: Schema.tag("PredicatePath"),
|
|
72
|
+
predicate: NamedNodeSchema
|
|
73
|
+
}),
|
|
74
|
+
Schema.Struct({
|
|
75
|
+
_tag: Schema.tag("SequencePath"),
|
|
76
|
+
paths: Schema.Array(Schema.suspend(() => PathStruct))
|
|
77
|
+
}),
|
|
78
|
+
Schema.Struct({
|
|
79
|
+
_tag: Schema.tag("AlternativePath"),
|
|
80
|
+
paths: Schema.Array(Schema.suspend(() => PathStruct))
|
|
81
|
+
}),
|
|
82
|
+
...[
|
|
83
|
+
"InversePath",
|
|
84
|
+
"ZeroOrMorePath",
|
|
85
|
+
"OneOrMorePath",
|
|
86
|
+
"ZeroOrOnePath"
|
|
87
|
+
].map((tag) => Schema.Struct({
|
|
88
|
+
_tag: Schema.tag(tag),
|
|
89
|
+
path: Schema.suspend(() => PathStruct)
|
|
90
|
+
}))
|
|
91
|
+
]).annotate({ identifier: "Path" });
|
|
92
|
+
const ResourceSchema = Schema.Union([NamedNodeSchema, BlankNodeSchema]);
|
|
93
|
+
const ValidationResultStruct = Schema.Struct({
|
|
94
|
+
_tag: Schema.tag("ValidationResult"),
|
|
95
|
+
focusNode: GroundTermSchema,
|
|
96
|
+
resultPath: Schema.Option(PathStruct),
|
|
97
|
+
value: Schema.Option(GroundTermSchema),
|
|
98
|
+
sourceShape: ResourceSchema,
|
|
99
|
+
sourceConstraintComponent: ResourceSchema,
|
|
100
|
+
sourceConstraint: Schema.Option(ResourceSchema),
|
|
101
|
+
severity: NamedNodeSchema,
|
|
102
|
+
messages: Schema.Array(LiteralSchema),
|
|
103
|
+
details: Schema.Array(Schema.suspend(() => ValidationResultStruct))
|
|
104
|
+
}).annotate({ identifier: "ValidationResult" });
|
|
105
|
+
const ValidationReportJson = Schema.Struct({ results: Schema.Array(ValidationResultStruct) });
|
|
106
|
+
/**
|
|
107
|
+
* Schema of a validation report; its JSON codec is `{ results }`, mirroring
|
|
108
|
+
* the result model with terms as `TermJson` terms and `Option`s in Effect's
|
|
109
|
+
* JSON form (`conforms` is recomputed from the results on decode).
|
|
110
|
+
*
|
|
111
|
+
* @since 0.1.0
|
|
112
|
+
* @category schemas
|
|
113
|
+
*/
|
|
114
|
+
const ValidationReportSchema = Schema.declare(isValidationReport, {
|
|
115
|
+
identifier: "ValidationReport",
|
|
116
|
+
toCodecJson: () => Schema.link()(ValidationReportJson, SchemaTransformation.transform({
|
|
117
|
+
decode: ({ results }) => make(results),
|
|
118
|
+
encode: ({ results }) => ({ results })
|
|
119
|
+
}))
|
|
120
|
+
});
|
|
121
|
+
/**
|
|
122
|
+
* The results with a given severity.
|
|
123
|
+
*
|
|
124
|
+
* @since 0.1.0
|
|
125
|
+
* @category queries
|
|
126
|
+
*/
|
|
127
|
+
const withSeverity = (self, severity) => self.results.filter((r) => r.severity.value === severity.value);
|
|
128
|
+
/**
|
|
129
|
+
* The `sh:Violation` results.
|
|
130
|
+
*
|
|
131
|
+
* @since 0.1.0
|
|
132
|
+
* @category queries
|
|
133
|
+
*/
|
|
134
|
+
const violations = (self) => withSeverity(self, sh.Violation);
|
|
135
|
+
/**
|
|
136
|
+
* Whether the report has no results of severity `sh:Violation` (it may still
|
|
137
|
+
* contain warnings and informational results).
|
|
138
|
+
*
|
|
139
|
+
* @since 0.1.0
|
|
140
|
+
* @category queries
|
|
141
|
+
*/
|
|
142
|
+
const hasNoViolations = (self) => Arr.isReadonlyArrayEmpty(violations(self));
|
|
143
|
+
/**
|
|
144
|
+
* A human-readable, multi-line summary of a report.
|
|
145
|
+
*
|
|
146
|
+
* @since 0.1.0
|
|
147
|
+
* @category formatting
|
|
148
|
+
*/
|
|
149
|
+
const format = (self) => {
|
|
150
|
+
if (self.conforms) return "Conforms";
|
|
151
|
+
const lines = [`Does not conform (${self.results.length} result(s))`];
|
|
152
|
+
const go = (indent) => (r) => {
|
|
153
|
+
lines.push(`${indent}- ${formatResult(r)}`);
|
|
154
|
+
Arr.forEach(r.details, go(`${indent} `));
|
|
155
|
+
};
|
|
156
|
+
Arr.forEach(self.results, go(""));
|
|
157
|
+
return lines.join("\n");
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Formats one validation result on one line (without its details):
|
|
161
|
+
* severity, constraint component, focus node, path, value, shape and the
|
|
162
|
+
* first message.
|
|
163
|
+
*
|
|
164
|
+
* @since 0.1.0
|
|
165
|
+
* @category formatting
|
|
166
|
+
*/
|
|
167
|
+
const formatResult = (r) => {
|
|
168
|
+
const parts = [`[${sh.localName(r.severity) ?? r.severity.key}] ${isNamedNode(r.sourceConstraintComponent) ? sh.localName(r.sourceConstraintComponent) ?? r.sourceConstraintComponent.key : r.sourceConstraintComponent.key} on ${r.focusNode.key}`];
|
|
169
|
+
if (Option.isSome(r.resultPath)) parts.push(`path ${toSparql(r.resultPath.value)}`);
|
|
170
|
+
if (Option.isSome(r.value)) parts.push(`value ${r.value.value.key}`);
|
|
171
|
+
parts.push(`(shape ${r.sourceShape.key})`);
|
|
172
|
+
const message = r.messages[0];
|
|
173
|
+
return parts.join(" ") + (message === void 0 ? "" : `: ${message.value}`);
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Converts a report to the standard RDF validation report graph, using fresh
|
|
177
|
+
* blank nodes for the report, its results and any non-IRI result paths.
|
|
178
|
+
* Returns the report node together with the dataset.
|
|
179
|
+
*
|
|
180
|
+
* @since 0.1.0
|
|
181
|
+
* @category conversions
|
|
182
|
+
*/
|
|
183
|
+
const toRdf = (self, options = {}) => {
|
|
184
|
+
const graph = options.graph ?? defaultGraph;
|
|
185
|
+
const includeDetails = options.details !== false;
|
|
186
|
+
const includeMessages = options.messages !== false;
|
|
187
|
+
const quads = [];
|
|
188
|
+
const add = (s, p, o) => quads.push(quad(s, p, o, graph));
|
|
189
|
+
const writeResult = (r) => {
|
|
190
|
+
const node = blankNode();
|
|
191
|
+
add(node, rdf.type, sh.ValidationResult);
|
|
192
|
+
add(node, sh.focusNode, r.focusNode);
|
|
193
|
+
if (Option.isSome(r.resultPath)) {
|
|
194
|
+
const encoded = toRdf$1(r.resultPath.value, graph);
|
|
195
|
+
quads.push(...encoded.quads);
|
|
196
|
+
add(node, sh.resultPath, encoded.node);
|
|
197
|
+
}
|
|
198
|
+
if (Option.isSome(r.value)) add(node, sh.value, r.value.value);
|
|
199
|
+
add(node, sh.sourceShape, r.sourceShape);
|
|
200
|
+
add(node, sh.sourceConstraintComponent, r.sourceConstraintComponent);
|
|
201
|
+
if (Option.isSome(r.sourceConstraint)) add(node, sh.sourceConstraint, r.sourceConstraint.value);
|
|
202
|
+
add(node, sh.resultSeverity, r.severity);
|
|
203
|
+
if (includeMessages) Arr.forEach(r.messages, (m) => add(node, sh.resultMessage, m));
|
|
204
|
+
if (includeDetails) Arr.forEach(r.details, (d) => add(node, sh.detail, writeResult(d)));
|
|
205
|
+
return node;
|
|
206
|
+
};
|
|
207
|
+
const report = blankNode();
|
|
208
|
+
add(report, rdf.type, sh.ValidationReport);
|
|
209
|
+
add(report, sh.conforms, literal(String(self.conforms), xsd.boolean));
|
|
210
|
+
Arr.forEach(self.results, (r) => add(report, sh.result, writeResult(r)));
|
|
211
|
+
return {
|
|
212
|
+
node: report,
|
|
213
|
+
dataset: fromIterable(quads)
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Converts a report to the standard RDF validation report graph.
|
|
218
|
+
*
|
|
219
|
+
* @since 0.1.0
|
|
220
|
+
* @category conversions
|
|
221
|
+
*/
|
|
222
|
+
const toDataset = (self, options = {}) => toRdf(self, options).dataset;
|
|
223
|
+
/**
|
|
224
|
+
* Why an RDF validation report could not be read.
|
|
225
|
+
*
|
|
226
|
+
* @since 0.1.0
|
|
227
|
+
* @category errors
|
|
228
|
+
*/
|
|
229
|
+
var ReportSyntaxError = class extends Schema.TaggedError()("ReportSyntaxError", { message: Schema.String }) {};
|
|
230
|
+
/**
|
|
231
|
+
* Reads a validation report from RDF. The report node defaults to the (only)
|
|
232
|
+
* instance of `sh:ValidationReport` in the dataset.
|
|
233
|
+
*
|
|
234
|
+
* @since 0.1.0
|
|
235
|
+
* @category conversions
|
|
236
|
+
*/
|
|
237
|
+
const fromDataset = (dataset, reportNode) => {
|
|
238
|
+
const err = (message) => Result.fail(new ReportSyntaxError({ message }));
|
|
239
|
+
const node = Option.match(Option.fromUndefinedOr(reportNode), {
|
|
240
|
+
onSome: (n) => Result.succeed(n),
|
|
241
|
+
onNone: () => {
|
|
242
|
+
const reports = subjectsOf(dataset, rdf.type, sh.ValidationReport);
|
|
243
|
+
return Result.fromOption(Option.filter(Arr.head(reports), () => reports.length === 1), () => `expected exactly one sh:ValidationReport, found ${reports.length}`).pipe(Result.flatMap((n) => isResource(n) ? Result.succeed(n) : Result.fail("invalid report node")));
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
if (Result.isFailure(node)) return err(node.failure);
|
|
247
|
+
const one = (s, p) => Arr.head(objectsOf(dataset, s, p));
|
|
248
|
+
const conformsNode = Option.filter(one(node.success, sh.conforms), isLiteral);
|
|
249
|
+
if (Option.isNone(conformsNode)) return err("the report has no sh:conforms literal");
|
|
250
|
+
const readResults = (nodes, depth) => Result.all(Arr.map(nodes, (r) => readResult(r, depth)));
|
|
251
|
+
const readResult = (r, depth) => {
|
|
252
|
+
if (isLiteral(r) || depth > 64) return Result.fail(`invalid result node ${r.key}`);
|
|
253
|
+
const required = (p, refinement, message) => Result.fromOption(Option.filter(one(r, p), refinement), () => `result ${r.key} ${message}`);
|
|
254
|
+
const pathNode = one(r, sh.resultPath);
|
|
255
|
+
return Result.gen(function* () {
|
|
256
|
+
const focusNode = yield* required(sh.focusNode, isGroundTerm, "has no sh:focusNode");
|
|
257
|
+
const sourceShape = yield* required(sh.sourceShape, isResource, "has no valid sh:sourceShape");
|
|
258
|
+
const component = yield* required(sh.sourceConstraintComponent, isResource, "has no valid sh:sourceConstraintComponent");
|
|
259
|
+
const severity = yield* required(sh.resultSeverity, isNamedNode, "has no valid sh:resultSeverity");
|
|
260
|
+
const resultPath = Option.isNone(pathNode) ? Option.none() : Option.some(yield* Result.mapError(fromRdf(dataset, pathNode.value), () => `result ${r.key} has an invalid sh:resultPath`));
|
|
261
|
+
const details = yield* readResults(objectsOf(dataset, r, sh.detail), depth + 1);
|
|
262
|
+
return makeResult({
|
|
263
|
+
focusNode,
|
|
264
|
+
sourceShape,
|
|
265
|
+
sourceConstraintComponent: component,
|
|
266
|
+
severity,
|
|
267
|
+
resultPath,
|
|
268
|
+
value: one(r, sh.value),
|
|
269
|
+
sourceConstraint: Option.filter(one(r, sh.sourceConstraint), isResource),
|
|
270
|
+
messages: objectsOf(dataset, r, sh.resultMessage).filter(isLiteral),
|
|
271
|
+
details
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
const results = readResults(objectsOf(dataset, node.success, sh.result), 0);
|
|
276
|
+
if (Result.isFailure(results)) return err(results.failure);
|
|
277
|
+
return Result.succeed({
|
|
278
|
+
_tag: "ValidationReport",
|
|
279
|
+
conforms: conformsNode.value.value === "true" || conformsNode.value.value === "1",
|
|
280
|
+
results: results.success
|
|
281
|
+
});
|
|
282
|
+
};
|
|
283
|
+
export { formatResult as a, isValidationReport as c, toDataset as d, toRdf as f, format as i, make as l, withSeverity as m, ValidationReportSchema as n, fromDataset as o, violations as p, ValidationReport_exports as r, hasNoViolations as s, ReportSyntaxError as t, makeResult as u };
|
|
284
|
+
|
|
285
|
+
//# sourceMappingURL=ValidationReport-DBdJshW5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationReport-DBdJshW5.mjs","names":["Vocab","Term.NamedNodeSchema","Term.BlankNodeSchema","Term.GroundTermSchema","Term.LiteralSchema","Term.isNamedNode","Path.toSparql","Term.defaultGraph","Term.quad","Term.blankNode","Path.toRdf","Term.literal","Dataset.fromIterable","Dataset.subjectsOf","Term.isResource","Dataset.objectsOf","Term.isLiteral","Term.isGroundTerm","Path.fromRdf"],"sources":["../src/shacl/ValidationReport.ts"],"sourcesContent":["/**\n * Validation reports (§3.6): a typed model of the outcome of SHACL\n * validation, convertible to and from the standard RDF validation report\n * vocabulary.\n *\n * @since 0.1.0\n */\nimport { Dataset, Term, Vocab } from '../index.ts';\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaTransformation from 'effect/SchemaTransformation';\nimport * as Path from './Path.ts';\nimport { sh } from './Vocabulary.ts';\nimport * as Predicate from 'effect/Predicate';\n\nconst { rdf, xsd } = Vocab;\n\n/**\n * A single validation result (`sh:ValidationResult`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ValidationResult {\n readonly _tag: 'ValidationResult';\n /** `sh:focusNode`: the focus node that was validated. */\n readonly focusNode: Term.GroundTerm;\n /** `sh:resultPath`: the path of the property shape, when relevant. */\n readonly resultPath: Option.Option<Path.Path>;\n /** `sh:value`: the value node that caused the result, when relevant. */\n readonly value: Option.Option<Term.GroundTerm>;\n /** `sh:sourceShape`: the shape the constraint belongs to. */\n readonly sourceShape: Term.NamedNode | Term.BlankNode;\n /** `sh:sourceConstraintComponent`. */\n readonly sourceConstraintComponent: Term.NamedNode | Term.BlankNode;\n /** `sh:sourceConstraint` (for SPARQL-based constraints). */\n readonly sourceConstraint: Option.Option<Term.NamedNode | Term.BlankNode>;\n /** `sh:resultSeverity`. */\n readonly severity: Term.NamedNode;\n /** `sh:resultMessage` values. */\n readonly messages: ReadonlyArray<Term.Literal>;\n /** `sh:detail`: nested results explaining this result. */\n readonly details: ReadonlyArray<ValidationResult>;\n}\n\n/**\n * A validation report (`sh:ValidationReport`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ValidationReport {\n readonly _tag: 'ValidationReport';\n /** `sh:conforms`: true when there are no validation results. */\n readonly conforms: boolean;\n /** `sh:result` values. */\n readonly results: ReadonlyArray<ValidationResult>;\n}\n\n/**\n * @since 0.1.0\n * @category constructors\n */\nexport const makeResult = (fields: {\n readonly focusNode: Term.GroundTerm;\n readonly sourceShape: Term.NamedNode | Term.BlankNode;\n readonly sourceConstraintComponent: Term.NamedNode | Term.BlankNode;\n readonly severity?: Term.NamedNode | undefined;\n readonly resultPath?: Option.Option<Path.Path> | undefined;\n readonly value?: Option.Option<Term.GroundTerm> | undefined;\n readonly sourceConstraint?: Option.Option<Term.NamedNode | Term.BlankNode> | undefined;\n readonly messages?: ReadonlyArray<Term.Literal> | undefined;\n readonly details?: ReadonlyArray<ValidationResult> | undefined;\n}): ValidationResult => ({\n _tag: 'ValidationResult',\n focusNode: fields.focusNode,\n resultPath: fields.resultPath ?? Option.none(),\n value: fields.value ?? Option.none(),\n sourceShape: fields.sourceShape,\n sourceConstraintComponent: fields.sourceConstraintComponent,\n sourceConstraint: fields.sourceConstraint ?? Option.none(),\n severity: fields.severity ?? sh.Violation,\n messages: fields.messages ?? [],\n details: fields.details ?? [],\n});\n\n/**\n * Builds a report from results; `conforms` is true iff there are none.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (results: ReadonlyArray<ValidationResult>): ValidationReport => ({\n _tag: 'ValidationReport',\n conforms: Arr.isReadonlyArrayEmpty(results),\n results,\n});\n\n/**\n * @since 0.1.0\n * @category guards\n */\nexport const isValidationReport = (u: unknown): u is ValidationReport =>\n Predicate.isTagged(u, 'ValidationReport');\n\n// The structural shape of the report model, which `ValidationReportSchema` links to as its JSON\n// codec: `Schema.toCodecJson` derives the terms' JSON through their own declarations.\nconst PathStruct: Schema.Codec<Path.Path> = Schema.Union([\n Schema.Struct({ _tag: Schema.tag('PredicatePath'), predicate: Term.NamedNodeSchema }),\n Schema.Struct({\n _tag: Schema.tag('SequencePath'),\n paths: Schema.Array(Schema.suspend((): Schema.Codec<Path.Path> => PathStruct)),\n }),\n Schema.Struct({\n _tag: Schema.tag('AlternativePath'),\n paths: Schema.Array(Schema.suspend((): Schema.Codec<Path.Path> => PathStruct)),\n }),\n ...(['InversePath', 'ZeroOrMorePath', 'OneOrMorePath', 'ZeroOrOnePath'] as const).map((tag) =>\n Schema.Struct({\n _tag: Schema.tag(tag),\n path: Schema.suspend((): Schema.Codec<Path.Path> => PathStruct),\n }),\n ),\n]).annotate({ identifier: 'Path' });\n\nconst ResourceSchema = Schema.Union([Term.NamedNodeSchema, Term.BlankNodeSchema]);\n\nconst ValidationResultStruct: Schema.Codec<ValidationResult> = Schema.Struct({\n _tag: Schema.tag('ValidationResult'),\n focusNode: Term.GroundTermSchema,\n resultPath: Schema.Option(PathStruct),\n value: Schema.Option(Term.GroundTermSchema),\n sourceShape: ResourceSchema,\n sourceConstraintComponent: ResourceSchema,\n sourceConstraint: Schema.Option(ResourceSchema),\n severity: Term.NamedNodeSchema,\n messages: Schema.Array(Term.LiteralSchema),\n details: Schema.Array(\n Schema.suspend((): Schema.Codec<ValidationResult> => ValidationResultStruct),\n ),\n}).annotate({ identifier: 'ValidationResult' });\n\n// `conforms` is derived from the results (`make`), so the JSON carries only the results.\nconst ValidationReportJson = Schema.Struct({ results: Schema.Array(ValidationResultStruct) });\n\n/**\n * Schema of a validation report; its JSON codec is `{ results }`, mirroring\n * the result model with terms as `TermJson` terms and `Option`s in Effect's\n * JSON form (`conforms` is recomputed from the results on decode).\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const ValidationReportSchema: Schema.declare<ValidationReport> = Schema.declare(\n isValidationReport,\n {\n identifier: 'ValidationReport',\n toCodecJson: () =>\n Schema.link<ValidationReport>()(\n ValidationReportJson,\n SchemaTransformation.transform({\n decode: ({ results }) => make(results),\n encode: ({ results }) => ({ results }),\n }),\n ),\n },\n);\n\n/**\n * The type `ValidationReportSchema` decodes to: a `ValidationReport`.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type ValidationReportSchema = typeof ValidationReportSchema.Type;\n\n// -----------------------------------------------------------------------------\n// Queries\n// -----------------------------------------------------------------------------\n\n/**\n * The results with a given severity.\n *\n * @since 0.1.0\n * @category queries\n */\nexport const withSeverity = (\n self: ValidationReport,\n severity: Term.NamedNode,\n): ReadonlyArray<ValidationResult> =>\n self.results.filter((r) => r.severity.value === severity.value);\n\n/**\n * The `sh:Violation` results.\n *\n * @since 0.1.0\n * @category queries\n */\nexport const violations = (self: ValidationReport): ReadonlyArray<ValidationResult> =>\n withSeverity(self, sh.Violation);\n\n/**\n * Whether the report has no results of severity `sh:Violation` (it may still\n * contain warnings and informational results).\n *\n * @since 0.1.0\n * @category queries\n */\nexport const hasNoViolations = (self: ValidationReport): boolean =>\n Arr.isReadonlyArrayEmpty(violations(self));\n\n/**\n * A human-readable, multi-line summary of a report.\n *\n * @since 0.1.0\n * @category formatting\n */\nexport const format = (self: ValidationReport): string => {\n if (self.conforms) return 'Conforms';\n const lines = [`Does not conform (${self.results.length} result(s))`];\n const go = (indent: string) => (r: ValidationResult) => {\n lines.push(`${indent}- ${formatResult(r)}`);\n Arr.forEach(r.details, go(`${indent} `));\n };\n Arr.forEach(self.results, go(''));\n return lines.join('\\n');\n};\n\n/**\n * Formats one validation result on one line (without its details):\n * severity, constraint component, focus node, path, value, shape and the\n * first message.\n *\n * @since 0.1.0\n * @category formatting\n */\nexport const formatResult = (r: ValidationResult): string => {\n const severity = sh.localName(r.severity) ?? r.severity.key;\n const component = Term.isNamedNode(r.sourceConstraintComponent)\n ? (sh.localName(r.sourceConstraintComponent) ?? r.sourceConstraintComponent.key)\n : r.sourceConstraintComponent.key;\n const parts = [`[${severity}] ${component} on ${r.focusNode.key}`];\n if (Option.isSome(r.resultPath)) parts.push(`path ${Path.toSparql(r.resultPath.value)}`);\n if (Option.isSome(r.value)) parts.push(`value ${r.value.value.key}`);\n parts.push(`(shape ${r.sourceShape.key})`);\n const message = r.messages[0];\n return parts.join(' ') + (message === undefined ? '' : `: ${message.value}`);\n};\n\n// -----------------------------------------------------------------------------\n// RDF conversion\n// -----------------------------------------------------------------------------\n\n/**\n * Options for `toDataset`.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ToDatasetOptions {\n /** The graph to write the report into (default graph by default). */\n readonly graph?: Term.Graph | undefined;\n /** Include `sh:detail` results (default `true`). */\n readonly details?: boolean | undefined;\n /** Include `sh:resultMessage` values (default `true`). */\n readonly messages?: boolean | undefined;\n}\n\n/**\n * A validation report encoded as RDF: the report's node and the graph\n * describing it.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport interface ReportRdf {\n readonly node: Term.BlankNode;\n readonly dataset: Dataset.Dataset;\n}\n\n/**\n * Converts a report to the standard RDF validation report graph, using fresh\n * blank nodes for the report, its results and any non-IRI result paths.\n * Returns the report node together with the dataset.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const toRdf = (self: ValidationReport, options: ToDatasetOptions = {}): ReportRdf => {\n const graph = options.graph ?? Term.defaultGraph;\n const includeDetails = options.details !== false;\n const includeMessages = options.messages !== false;\n const quads: Array<Term.Quad> = [];\n const add = (s: Term.Subject, p: Term.NamedNode, o: Term.Object) =>\n quads.push(Term.quad(s, p, o, graph));\n const writeResult = (r: ValidationResult): Term.BlankNode => {\n const node = Term.blankNode();\n add(node, rdf.type, sh.ValidationResult);\n add(node, sh.focusNode, r.focusNode);\n if (Option.isSome(r.resultPath)) {\n const encoded = Path.toRdf(r.resultPath.value, graph);\n quads.push(...encoded.quads);\n add(node, sh.resultPath, encoded.node);\n }\n if (Option.isSome(r.value)) add(node, sh.value, r.value.value);\n add(node, sh.sourceShape, r.sourceShape);\n add(node, sh.sourceConstraintComponent, r.sourceConstraintComponent);\n if (Option.isSome(r.sourceConstraint)) add(node, sh.sourceConstraint, r.sourceConstraint.value);\n add(node, sh.resultSeverity, r.severity);\n if (includeMessages) Arr.forEach(r.messages, (m) => add(node, sh.resultMessage, m));\n if (includeDetails) Arr.forEach(r.details, (d) => add(node, sh.detail, writeResult(d)));\n return node;\n };\n const report = Term.blankNode();\n add(report, rdf.type, sh.ValidationReport);\n add(report, sh.conforms, Term.literal(String(self.conforms), xsd.boolean));\n Arr.forEach(self.results, (r) => add(report, sh.result, writeResult(r)));\n return { node: report, dataset: Dataset.fromIterable(quads) };\n};\n\n/**\n * Converts a report to the standard RDF validation report graph.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const toDataset = (\n self: ValidationReport,\n options: ToDatasetOptions = {},\n): Dataset.Dataset => toRdf(self, options).dataset;\n\n/**\n * Why an RDF validation report could not be read.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ReportSyntaxError extends Schema.TaggedError<ReportSyntaxError>()(\n 'ReportSyntaxError',\n { message: Schema.String },\n) {}\n\n/**\n * Reads a validation report from RDF. The report node defaults to the (only)\n * instance of `sh:ValidationReport` in the dataset.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const fromDataset = (\n dataset: Dataset.Dataset,\n reportNode?: Term.NamedNode | Term.BlankNode,\n): Result.Result<ValidationReport, ReportSyntaxError> => {\n const err = (message: string) => Result.fail(new ReportSyntaxError({ message }));\n const node = Option.match(Option.fromUndefinedOr(reportNode), {\n onSome: (n): Result.Result<Term.Resource, string> => Result.succeed(n),\n onNone: () => {\n const reports = Dataset.subjectsOf(dataset, rdf.type, sh.ValidationReport);\n return Result.fromOption(\n Option.filter(Arr.head(reports), () => reports.length === 1),\n () => `expected exactly one sh:ValidationReport, found ${reports.length}`,\n ).pipe(\n Result.flatMap((n) =>\n Term.isResource(n) ? Result.succeed(n) : Result.fail('invalid report node'),\n ),\n );\n },\n });\n if (Result.isFailure(node)) return err(node.failure);\n const one = (s: Term.Subject, p: Term.NamedNode) => Arr.head(Dataset.objectsOf(dataset, s, p));\n const conformsNode = Option.filter(one(node.success, sh.conforms), Term.isLiteral);\n if (Option.isNone(conformsNode)) return err('the report has no sh:conforms literal');\n const readResults = (\n nodes: ReadonlyArray<Term.GroundTerm>,\n depth: number,\n ): Result.Result<ReadonlyArray<ValidationResult>, string> =>\n Result.all(Arr.map(nodes, (r) => readResult(r, depth)));\n const readResult = (\n r: Term.GroundTerm,\n depth: number,\n ): Result.Result<ValidationResult, string> => {\n if (Term.isLiteral(r) || depth > 64) return Result.fail(`invalid result node ${r.key}`);\n const required = <A extends Term.GroundTerm>(\n p: Term.NamedNode,\n refinement: (t: Term.GroundTerm) => t is A,\n message: string,\n ): Result.Result<A, string> =>\n Result.fromOption(Option.filter(one(r, p), refinement), () => `result ${r.key} ${message}`);\n const pathNode = one(r, sh.resultPath);\n return Result.gen(function* () {\n const focusNode = yield* required(sh.focusNode, Term.isGroundTerm, 'has no sh:focusNode');\n const sourceShape = yield* required(\n sh.sourceShape,\n Term.isResource,\n 'has no valid sh:sourceShape',\n );\n const component = yield* required(\n sh.sourceConstraintComponent,\n Term.isResource,\n 'has no valid sh:sourceConstraintComponent',\n );\n const severity = yield* required(\n sh.resultSeverity,\n Term.isNamedNode,\n 'has no valid sh:resultSeverity',\n );\n const resultPath = Option.isNone(pathNode)\n ? Option.none<Path.Path>()\n : Option.some(\n yield* Result.mapError(\n Path.fromRdf(dataset, pathNode.value),\n () => `result ${r.key} has an invalid sh:resultPath`,\n ),\n );\n const details = yield* readResults(Dataset.objectsOf(dataset, r, sh.detail), depth + 1);\n return makeResult({\n focusNode,\n sourceShape,\n sourceConstraintComponent: component,\n severity,\n resultPath,\n value: one(r, sh.value),\n sourceConstraint: Option.filter(one(r, sh.sourceConstraint), Term.isResource),\n messages: Dataset.objectsOf(dataset, r, sh.resultMessage).filter(Term.isLiteral),\n details,\n });\n });\n };\n const results = readResults(Dataset.objectsOf(dataset, node.success, sh.result), 0);\n if (Result.isFailure(results)) return err(results.failure);\n return Result.succeed({\n _tag: 'ValidationReport',\n conforms: conformsNode.value.value === 'true' || conformsNode.value.value === '1',\n results: results.success,\n });\n};\n"],"mappings":"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"}
|