@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,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The extension point for SHACL-SPARQL (§5–§6 of the SHACL specification).
|
|
3
|
+
*
|
|
4
|
+
* The core validator does not execute SPARQL itself. When a shapes graph
|
|
5
|
+
* contains SPARQL-based constraints (`sh:sparql`), SPARQL-based constraint
|
|
6
|
+
* components or SPARQL-based targets (`sh:target`), the validator delegates
|
|
7
|
+
* them to the `SparqlConstraintEvaluator` service if one is provided. When no
|
|
8
|
+
* evaluator is available the validator either fails with an
|
|
9
|
+
* `UnsupportedFeatureError` or ignores those constructs, depending on the
|
|
10
|
+
* `sparql` validation option.
|
|
11
|
+
*
|
|
12
|
+
* A SPARQL engine integration implements this service:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Effect, Layer } from "effect"
|
|
16
|
+
* import { Sparql } from "@thomasfosterau/effect-rdf/shacl"
|
|
17
|
+
*
|
|
18
|
+
* const EvaluatorLive = Layer.succeed(Sparql.SparqlConstraintEvaluator, {
|
|
19
|
+
* evaluateConstraint: (input) => Effect.succeed([]),
|
|
20
|
+
* selectTargets: (input) => Effect.succeed([]),
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
import type { Dataset, Term } from '../index.ts';
|
|
27
|
+
import * as Context from 'effect/Context';
|
|
28
|
+
import type * as Effect from 'effect/Effect';
|
|
29
|
+
import * as Schema from 'effect/Schema';
|
|
30
|
+
import type * as Path from './Path.ts';
|
|
31
|
+
import type * as Shapes from './Shapes.ts';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A failure while evaluating a SPARQL-based constraint or target.
|
|
35
|
+
*
|
|
36
|
+
* @since 0.1.0
|
|
37
|
+
* @category errors
|
|
38
|
+
*/
|
|
39
|
+
export class SparqlEvaluationError extends Schema.TaggedError<SparqlEvaluationError>()(
|
|
40
|
+
'SparqlEvaluationError',
|
|
41
|
+
{
|
|
42
|
+
message: Schema.String,
|
|
43
|
+
cause: Schema.optional(Schema.Defect()),
|
|
44
|
+
},
|
|
45
|
+
) {}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The input to the evaluation of a SPARQL-based constraint for one focus
|
|
49
|
+
* node.
|
|
50
|
+
*
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
* @category models
|
|
53
|
+
*/
|
|
54
|
+
export interface ConstraintInput {
|
|
55
|
+
/** The data graph (with the shapes graph merged in when requested). */
|
|
56
|
+
readonly dataGraph: Dataset.Dataset;
|
|
57
|
+
/** The parsed shapes graph; its `dataset` is the `$shapesGraph`. */
|
|
58
|
+
readonly shapesGraph: Shapes.ShapesGraph;
|
|
59
|
+
/** The shape (`$currentShape`) that holds the constraint. */
|
|
60
|
+
readonly shape: Shapes.Shape;
|
|
61
|
+
/** The SPARQL constraint or custom component instance. */
|
|
62
|
+
readonly constraint: Shapes.SparqlConstraint | Shapes.ComponentConstraint;
|
|
63
|
+
/** The focus node (`$this`). */
|
|
64
|
+
readonly focusNode: Term.GroundTerm;
|
|
65
|
+
/** The value nodes of the focus node for this shape. */
|
|
66
|
+
readonly valueNodes: ReadonlyArray<Term.GroundTerm>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* One solution reported by a SPARQL-based constraint. Omitted fields take the
|
|
71
|
+
* defaults defined by the SHACL-SPARQL specification: the focus node, the
|
|
72
|
+
* shape's path, the shape's severity and messages.
|
|
73
|
+
*
|
|
74
|
+
* @since 0.1.0
|
|
75
|
+
* @category models
|
|
76
|
+
*/
|
|
77
|
+
export interface Violation {
|
|
78
|
+
readonly focusNode?: Term.GroundTerm | undefined;
|
|
79
|
+
readonly value?: Term.GroundTerm | undefined;
|
|
80
|
+
readonly path?: Path.Path | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* The result messages, possibly containing `{?var}` / `{$var}`
|
|
83
|
+
* placeholders, which the validator substitutes from `bindings`.
|
|
84
|
+
*/
|
|
85
|
+
readonly messages?: ReadonlyArray<Term.Literal> | undefined;
|
|
86
|
+
readonly severity?: Term.NamedNode | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* The variables available to message templates: the solution of the
|
|
89
|
+
* query and, for SPARQL-based constraint components, the parameter values
|
|
90
|
+
* by parameter name.
|
|
91
|
+
*/
|
|
92
|
+
readonly bindings?: ReadonlyMap<string, Term.GroundTerm> | undefined;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* The input to the evaluation of a SPARQL-based or custom target.
|
|
97
|
+
*
|
|
98
|
+
* @since 0.1.0
|
|
99
|
+
* @category models
|
|
100
|
+
*/
|
|
101
|
+
export interface TargetInput {
|
|
102
|
+
readonly dataGraph: Dataset.Dataset;
|
|
103
|
+
readonly shapesGraph: Shapes.ShapesGraph;
|
|
104
|
+
readonly shape: Shapes.Shape;
|
|
105
|
+
/** The value of `sh:target`. */
|
|
106
|
+
readonly target: Term.GroundTerm;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* A service able to evaluate SHACL-SPARQL constraints and targets, provided
|
|
111
|
+
* by a SPARQL engine integration.
|
|
112
|
+
*
|
|
113
|
+
* @since 0.1.0
|
|
114
|
+
* @category services
|
|
115
|
+
*/
|
|
116
|
+
export class SparqlConstraintEvaluator extends Context.Service<
|
|
117
|
+
SparqlConstraintEvaluator,
|
|
118
|
+
{
|
|
119
|
+
/** Evaluates a SPARQL constraint for one focus node, returning its violations. */
|
|
120
|
+
readonly evaluateConstraint: (
|
|
121
|
+
input: ConstraintInput,
|
|
122
|
+
) => Effect.Effect<ReadonlyArray<Violation>, SparqlEvaluationError>;
|
|
123
|
+
/** Computes the focus nodes of a SPARQL-based or custom target. */
|
|
124
|
+
readonly selectTargets: (
|
|
125
|
+
input: TargetInput,
|
|
126
|
+
) => Effect.Effect<ReadonlyArray<Term.GroundTerm>, SparqlEvaluationError>;
|
|
127
|
+
}
|
|
128
|
+
>()('@thomasfosterau/effect-rdf/shacl/Sparql/SparqlConstraintEvaluator') {}
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation reports (§3.6): a typed model of the outcome of SHACL
|
|
3
|
+
* validation, convertible to and from the standard RDF validation report
|
|
4
|
+
* vocabulary.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
import { Dataset, Term, Vocab } from '../index.ts';
|
|
9
|
+
import * as Arr from 'effect/Array';
|
|
10
|
+
import * as Option from 'effect/Option';
|
|
11
|
+
import * as Result from 'effect/Result';
|
|
12
|
+
import * as Schema from 'effect/Schema';
|
|
13
|
+
import * as SchemaTransformation from 'effect/SchemaTransformation';
|
|
14
|
+
import * as Path from './Path.ts';
|
|
15
|
+
import { sh } from './Vocabulary.ts';
|
|
16
|
+
import * as Predicate from 'effect/Predicate';
|
|
17
|
+
|
|
18
|
+
const { rdf, xsd } = Vocab;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A single validation result (`sh:ValidationResult`).
|
|
22
|
+
*
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
* @category models
|
|
25
|
+
*/
|
|
26
|
+
export interface ValidationResult {
|
|
27
|
+
readonly _tag: 'ValidationResult';
|
|
28
|
+
/** `sh:focusNode`: the focus node that was validated. */
|
|
29
|
+
readonly focusNode: Term.GroundTerm;
|
|
30
|
+
/** `sh:resultPath`: the path of the property shape, when relevant. */
|
|
31
|
+
readonly resultPath: Option.Option<Path.Path>;
|
|
32
|
+
/** `sh:value`: the value node that caused the result, when relevant. */
|
|
33
|
+
readonly value: Option.Option<Term.GroundTerm>;
|
|
34
|
+
/** `sh:sourceShape`: the shape the constraint belongs to. */
|
|
35
|
+
readonly sourceShape: Term.NamedNode | Term.BlankNode;
|
|
36
|
+
/** `sh:sourceConstraintComponent`. */
|
|
37
|
+
readonly sourceConstraintComponent: Term.NamedNode | Term.BlankNode;
|
|
38
|
+
/** `sh:sourceConstraint` (for SPARQL-based constraints). */
|
|
39
|
+
readonly sourceConstraint: Option.Option<Term.NamedNode | Term.BlankNode>;
|
|
40
|
+
/** `sh:resultSeverity`. */
|
|
41
|
+
readonly severity: Term.NamedNode;
|
|
42
|
+
/** `sh:resultMessage` values. */
|
|
43
|
+
readonly messages: ReadonlyArray<Term.Literal>;
|
|
44
|
+
/** `sh:detail`: nested results explaining this result. */
|
|
45
|
+
readonly details: ReadonlyArray<ValidationResult>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A validation report (`sh:ValidationReport`).
|
|
50
|
+
*
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
* @category models
|
|
53
|
+
*/
|
|
54
|
+
export interface ValidationReport {
|
|
55
|
+
readonly _tag: 'ValidationReport';
|
|
56
|
+
/** `sh:conforms`: true when there are no validation results. */
|
|
57
|
+
readonly conforms: boolean;
|
|
58
|
+
/** `sh:result` values. */
|
|
59
|
+
readonly results: ReadonlyArray<ValidationResult>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @since 0.1.0
|
|
64
|
+
* @category constructors
|
|
65
|
+
*/
|
|
66
|
+
export const makeResult = (fields: {
|
|
67
|
+
readonly focusNode: Term.GroundTerm;
|
|
68
|
+
readonly sourceShape: Term.NamedNode | Term.BlankNode;
|
|
69
|
+
readonly sourceConstraintComponent: Term.NamedNode | Term.BlankNode;
|
|
70
|
+
readonly severity?: Term.NamedNode | undefined;
|
|
71
|
+
readonly resultPath?: Option.Option<Path.Path> | undefined;
|
|
72
|
+
readonly value?: Option.Option<Term.GroundTerm> | undefined;
|
|
73
|
+
readonly sourceConstraint?: Option.Option<Term.NamedNode | Term.BlankNode> | undefined;
|
|
74
|
+
readonly messages?: ReadonlyArray<Term.Literal> | undefined;
|
|
75
|
+
readonly details?: ReadonlyArray<ValidationResult> | undefined;
|
|
76
|
+
}): ValidationResult => ({
|
|
77
|
+
_tag: 'ValidationResult',
|
|
78
|
+
focusNode: fields.focusNode,
|
|
79
|
+
resultPath: fields.resultPath ?? Option.none(),
|
|
80
|
+
value: fields.value ?? Option.none(),
|
|
81
|
+
sourceShape: fields.sourceShape,
|
|
82
|
+
sourceConstraintComponent: fields.sourceConstraintComponent,
|
|
83
|
+
sourceConstraint: fields.sourceConstraint ?? Option.none(),
|
|
84
|
+
severity: fields.severity ?? sh.Violation,
|
|
85
|
+
messages: fields.messages ?? [],
|
|
86
|
+
details: fields.details ?? [],
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Builds a report from results; `conforms` is true iff there are none.
|
|
91
|
+
*
|
|
92
|
+
* @since 0.1.0
|
|
93
|
+
* @category constructors
|
|
94
|
+
*/
|
|
95
|
+
export const make = (results: ReadonlyArray<ValidationResult>): ValidationReport => ({
|
|
96
|
+
_tag: 'ValidationReport',
|
|
97
|
+
conforms: Arr.isReadonlyArrayEmpty(results),
|
|
98
|
+
results,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @since 0.1.0
|
|
103
|
+
* @category guards
|
|
104
|
+
*/
|
|
105
|
+
export const isValidationReport = (u: unknown): u is ValidationReport =>
|
|
106
|
+
Predicate.isTagged(u, 'ValidationReport');
|
|
107
|
+
|
|
108
|
+
// The structural shape of the report model, which `ValidationReportSchema` links to as its JSON
|
|
109
|
+
// codec: `Schema.toCodecJson` derives the terms' JSON through their own declarations.
|
|
110
|
+
const PathStruct: Schema.Codec<Path.Path> = Schema.Union([
|
|
111
|
+
Schema.Struct({ _tag: Schema.tag('PredicatePath'), predicate: Term.NamedNodeSchema }),
|
|
112
|
+
Schema.Struct({
|
|
113
|
+
_tag: Schema.tag('SequencePath'),
|
|
114
|
+
paths: Schema.Array(Schema.suspend((): Schema.Codec<Path.Path> => PathStruct)),
|
|
115
|
+
}),
|
|
116
|
+
Schema.Struct({
|
|
117
|
+
_tag: Schema.tag('AlternativePath'),
|
|
118
|
+
paths: Schema.Array(Schema.suspend((): Schema.Codec<Path.Path> => PathStruct)),
|
|
119
|
+
}),
|
|
120
|
+
...(['InversePath', 'ZeroOrMorePath', 'OneOrMorePath', 'ZeroOrOnePath'] as const).map((tag) =>
|
|
121
|
+
Schema.Struct({
|
|
122
|
+
_tag: Schema.tag(tag),
|
|
123
|
+
path: Schema.suspend((): Schema.Codec<Path.Path> => PathStruct),
|
|
124
|
+
}),
|
|
125
|
+
),
|
|
126
|
+
]).annotate({ identifier: 'Path' });
|
|
127
|
+
|
|
128
|
+
const ResourceSchema = Schema.Union([Term.NamedNodeSchema, Term.BlankNodeSchema]);
|
|
129
|
+
|
|
130
|
+
const ValidationResultStruct: Schema.Codec<ValidationResult> = Schema.Struct({
|
|
131
|
+
_tag: Schema.tag('ValidationResult'),
|
|
132
|
+
focusNode: Term.GroundTermSchema,
|
|
133
|
+
resultPath: Schema.Option(PathStruct),
|
|
134
|
+
value: Schema.Option(Term.GroundTermSchema),
|
|
135
|
+
sourceShape: ResourceSchema,
|
|
136
|
+
sourceConstraintComponent: ResourceSchema,
|
|
137
|
+
sourceConstraint: Schema.Option(ResourceSchema),
|
|
138
|
+
severity: Term.NamedNodeSchema,
|
|
139
|
+
messages: Schema.Array(Term.LiteralSchema),
|
|
140
|
+
details: Schema.Array(
|
|
141
|
+
Schema.suspend((): Schema.Codec<ValidationResult> => ValidationResultStruct),
|
|
142
|
+
),
|
|
143
|
+
}).annotate({ identifier: 'ValidationResult' });
|
|
144
|
+
|
|
145
|
+
// `conforms` is derived from the results (`make`), so the JSON carries only the results.
|
|
146
|
+
const ValidationReportJson = Schema.Struct({ results: Schema.Array(ValidationResultStruct) });
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Schema of a validation report; its JSON codec is `{ results }`, mirroring
|
|
150
|
+
* the result model with terms as `TermJson` terms and `Option`s in Effect's
|
|
151
|
+
* JSON form (`conforms` is recomputed from the results on decode).
|
|
152
|
+
*
|
|
153
|
+
* @since 0.1.0
|
|
154
|
+
* @category schemas
|
|
155
|
+
*/
|
|
156
|
+
export const ValidationReportSchema: Schema.declare<ValidationReport> = Schema.declare(
|
|
157
|
+
isValidationReport,
|
|
158
|
+
{
|
|
159
|
+
identifier: 'ValidationReport',
|
|
160
|
+
toCodecJson: () =>
|
|
161
|
+
Schema.link<ValidationReport>()(
|
|
162
|
+
ValidationReportJson,
|
|
163
|
+
SchemaTransformation.transform({
|
|
164
|
+
decode: ({ results }) => make(results),
|
|
165
|
+
encode: ({ results }) => ({ results }),
|
|
166
|
+
}),
|
|
167
|
+
),
|
|
168
|
+
},
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The type `ValidationReportSchema` decodes to: a `ValidationReport`.
|
|
173
|
+
*
|
|
174
|
+
* @since 0.1.0
|
|
175
|
+
* @category schemas
|
|
176
|
+
*/
|
|
177
|
+
export type ValidationReportSchema = typeof ValidationReportSchema.Type;
|
|
178
|
+
|
|
179
|
+
// -----------------------------------------------------------------------------
|
|
180
|
+
// Queries
|
|
181
|
+
// -----------------------------------------------------------------------------
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The results with a given severity.
|
|
185
|
+
*
|
|
186
|
+
* @since 0.1.0
|
|
187
|
+
* @category queries
|
|
188
|
+
*/
|
|
189
|
+
export const withSeverity = (
|
|
190
|
+
self: ValidationReport,
|
|
191
|
+
severity: Term.NamedNode,
|
|
192
|
+
): ReadonlyArray<ValidationResult> =>
|
|
193
|
+
self.results.filter((r) => r.severity.value === severity.value);
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* The `sh:Violation` results.
|
|
197
|
+
*
|
|
198
|
+
* @since 0.1.0
|
|
199
|
+
* @category queries
|
|
200
|
+
*/
|
|
201
|
+
export const violations = (self: ValidationReport): ReadonlyArray<ValidationResult> =>
|
|
202
|
+
withSeverity(self, sh.Violation);
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Whether the report has no results of severity `sh:Violation` (it may still
|
|
206
|
+
* contain warnings and informational results).
|
|
207
|
+
*
|
|
208
|
+
* @since 0.1.0
|
|
209
|
+
* @category queries
|
|
210
|
+
*/
|
|
211
|
+
export const hasNoViolations = (self: ValidationReport): boolean =>
|
|
212
|
+
Arr.isReadonlyArrayEmpty(violations(self));
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* A human-readable, multi-line summary of a report.
|
|
216
|
+
*
|
|
217
|
+
* @since 0.1.0
|
|
218
|
+
* @category formatting
|
|
219
|
+
*/
|
|
220
|
+
export const format = (self: ValidationReport): string => {
|
|
221
|
+
if (self.conforms) return 'Conforms';
|
|
222
|
+
const lines = [`Does not conform (${self.results.length} result(s))`];
|
|
223
|
+
const go = (indent: string) => (r: ValidationResult) => {
|
|
224
|
+
lines.push(`${indent}- ${formatResult(r)}`);
|
|
225
|
+
Arr.forEach(r.details, go(`${indent} `));
|
|
226
|
+
};
|
|
227
|
+
Arr.forEach(self.results, go(''));
|
|
228
|
+
return lines.join('\n');
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Formats one validation result on one line (without its details):
|
|
233
|
+
* severity, constraint component, focus node, path, value, shape and the
|
|
234
|
+
* first message.
|
|
235
|
+
*
|
|
236
|
+
* @since 0.1.0
|
|
237
|
+
* @category formatting
|
|
238
|
+
*/
|
|
239
|
+
export const formatResult = (r: ValidationResult): string => {
|
|
240
|
+
const severity = sh.localName(r.severity) ?? r.severity.key;
|
|
241
|
+
const component = Term.isNamedNode(r.sourceConstraintComponent)
|
|
242
|
+
? (sh.localName(r.sourceConstraintComponent) ?? r.sourceConstraintComponent.key)
|
|
243
|
+
: r.sourceConstraintComponent.key;
|
|
244
|
+
const parts = [`[${severity}] ${component} on ${r.focusNode.key}`];
|
|
245
|
+
if (Option.isSome(r.resultPath)) parts.push(`path ${Path.toSparql(r.resultPath.value)}`);
|
|
246
|
+
if (Option.isSome(r.value)) parts.push(`value ${r.value.value.key}`);
|
|
247
|
+
parts.push(`(shape ${r.sourceShape.key})`);
|
|
248
|
+
const message = r.messages[0];
|
|
249
|
+
return parts.join(' ') + (message === undefined ? '' : `: ${message.value}`);
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
// -----------------------------------------------------------------------------
|
|
253
|
+
// RDF conversion
|
|
254
|
+
// -----------------------------------------------------------------------------
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Options for `toDataset`.
|
|
258
|
+
*
|
|
259
|
+
* @since 0.1.0
|
|
260
|
+
* @category models
|
|
261
|
+
*/
|
|
262
|
+
export interface ToDatasetOptions {
|
|
263
|
+
/** The graph to write the report into (default graph by default). */
|
|
264
|
+
readonly graph?: Term.Graph | undefined;
|
|
265
|
+
/** Include `sh:detail` results (default `true`). */
|
|
266
|
+
readonly details?: boolean | undefined;
|
|
267
|
+
/** Include `sh:resultMessage` values (default `true`). */
|
|
268
|
+
readonly messages?: boolean | undefined;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* A validation report encoded as RDF: the report's node and the graph
|
|
273
|
+
* describing it.
|
|
274
|
+
*
|
|
275
|
+
* @since 0.1.0
|
|
276
|
+
* @category conversions
|
|
277
|
+
*/
|
|
278
|
+
export interface ReportRdf {
|
|
279
|
+
readonly node: Term.BlankNode;
|
|
280
|
+
readonly dataset: Dataset.Dataset;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Converts a report to the standard RDF validation report graph, using fresh
|
|
285
|
+
* blank nodes for the report, its results and any non-IRI result paths.
|
|
286
|
+
* Returns the report node together with the dataset.
|
|
287
|
+
*
|
|
288
|
+
* @since 0.1.0
|
|
289
|
+
* @category conversions
|
|
290
|
+
*/
|
|
291
|
+
export const toRdf = (self: ValidationReport, options: ToDatasetOptions = {}): ReportRdf => {
|
|
292
|
+
const graph = options.graph ?? Term.defaultGraph;
|
|
293
|
+
const includeDetails = options.details !== false;
|
|
294
|
+
const includeMessages = options.messages !== false;
|
|
295
|
+
const quads: Array<Term.Quad> = [];
|
|
296
|
+
const add = (s: Term.Subject, p: Term.NamedNode, o: Term.Object) =>
|
|
297
|
+
quads.push(Term.quad(s, p, o, graph));
|
|
298
|
+
const writeResult = (r: ValidationResult): Term.BlankNode => {
|
|
299
|
+
const node = Term.blankNode();
|
|
300
|
+
add(node, rdf.type, sh.ValidationResult);
|
|
301
|
+
add(node, sh.focusNode, r.focusNode);
|
|
302
|
+
if (Option.isSome(r.resultPath)) {
|
|
303
|
+
const encoded = Path.toRdf(r.resultPath.value, graph);
|
|
304
|
+
quads.push(...encoded.quads);
|
|
305
|
+
add(node, sh.resultPath, encoded.node);
|
|
306
|
+
}
|
|
307
|
+
if (Option.isSome(r.value)) add(node, sh.value, r.value.value);
|
|
308
|
+
add(node, sh.sourceShape, r.sourceShape);
|
|
309
|
+
add(node, sh.sourceConstraintComponent, r.sourceConstraintComponent);
|
|
310
|
+
if (Option.isSome(r.sourceConstraint)) add(node, sh.sourceConstraint, r.sourceConstraint.value);
|
|
311
|
+
add(node, sh.resultSeverity, r.severity);
|
|
312
|
+
if (includeMessages) Arr.forEach(r.messages, (m) => add(node, sh.resultMessage, m));
|
|
313
|
+
if (includeDetails) Arr.forEach(r.details, (d) => add(node, sh.detail, writeResult(d)));
|
|
314
|
+
return node;
|
|
315
|
+
};
|
|
316
|
+
const report = Term.blankNode();
|
|
317
|
+
add(report, rdf.type, sh.ValidationReport);
|
|
318
|
+
add(report, sh.conforms, Term.literal(String(self.conforms), xsd.boolean));
|
|
319
|
+
Arr.forEach(self.results, (r) => add(report, sh.result, writeResult(r)));
|
|
320
|
+
return { node: report, dataset: Dataset.fromIterable(quads) };
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Converts a report to the standard RDF validation report graph.
|
|
325
|
+
*
|
|
326
|
+
* @since 0.1.0
|
|
327
|
+
* @category conversions
|
|
328
|
+
*/
|
|
329
|
+
export const toDataset = (
|
|
330
|
+
self: ValidationReport,
|
|
331
|
+
options: ToDatasetOptions = {},
|
|
332
|
+
): Dataset.Dataset => toRdf(self, options).dataset;
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Why an RDF validation report could not be read.
|
|
336
|
+
*
|
|
337
|
+
* @since 0.1.0
|
|
338
|
+
* @category errors
|
|
339
|
+
*/
|
|
340
|
+
export class ReportSyntaxError extends Schema.TaggedError<ReportSyntaxError>()(
|
|
341
|
+
'ReportSyntaxError',
|
|
342
|
+
{ message: Schema.String },
|
|
343
|
+
) {}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Reads a validation report from RDF. The report node defaults to the (only)
|
|
347
|
+
* instance of `sh:ValidationReport` in the dataset.
|
|
348
|
+
*
|
|
349
|
+
* @since 0.1.0
|
|
350
|
+
* @category conversions
|
|
351
|
+
*/
|
|
352
|
+
export const fromDataset = (
|
|
353
|
+
dataset: Dataset.Dataset,
|
|
354
|
+
reportNode?: Term.NamedNode | Term.BlankNode,
|
|
355
|
+
): Result.Result<ValidationReport, ReportSyntaxError> => {
|
|
356
|
+
const err = (message: string) => Result.fail(new ReportSyntaxError({ message }));
|
|
357
|
+
const node = Option.match(Option.fromUndefinedOr(reportNode), {
|
|
358
|
+
onSome: (n): Result.Result<Term.Resource, string> => Result.succeed(n),
|
|
359
|
+
onNone: () => {
|
|
360
|
+
const reports = Dataset.subjectsOf(dataset, rdf.type, sh.ValidationReport);
|
|
361
|
+
return Result.fromOption(
|
|
362
|
+
Option.filter(Arr.head(reports), () => reports.length === 1),
|
|
363
|
+
() => `expected exactly one sh:ValidationReport, found ${reports.length}`,
|
|
364
|
+
).pipe(
|
|
365
|
+
Result.flatMap((n) =>
|
|
366
|
+
Term.isResource(n) ? Result.succeed(n) : Result.fail('invalid report node'),
|
|
367
|
+
),
|
|
368
|
+
);
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
if (Result.isFailure(node)) return err(node.failure);
|
|
372
|
+
const one = (s: Term.Subject, p: Term.NamedNode) => Arr.head(Dataset.objectsOf(dataset, s, p));
|
|
373
|
+
const conformsNode = Option.filter(one(node.success, sh.conforms), Term.isLiteral);
|
|
374
|
+
if (Option.isNone(conformsNode)) return err('the report has no sh:conforms literal');
|
|
375
|
+
const readResults = (
|
|
376
|
+
nodes: ReadonlyArray<Term.GroundTerm>,
|
|
377
|
+
depth: number,
|
|
378
|
+
): Result.Result<ReadonlyArray<ValidationResult>, string> =>
|
|
379
|
+
Result.all(Arr.map(nodes, (r) => readResult(r, depth)));
|
|
380
|
+
const readResult = (
|
|
381
|
+
r: Term.GroundTerm,
|
|
382
|
+
depth: number,
|
|
383
|
+
): Result.Result<ValidationResult, string> => {
|
|
384
|
+
if (Term.isLiteral(r) || depth > 64) return Result.fail(`invalid result node ${r.key}`);
|
|
385
|
+
const required = <A extends Term.GroundTerm>(
|
|
386
|
+
p: Term.NamedNode,
|
|
387
|
+
refinement: (t: Term.GroundTerm) => t is A,
|
|
388
|
+
message: string,
|
|
389
|
+
): Result.Result<A, string> =>
|
|
390
|
+
Result.fromOption(Option.filter(one(r, p), refinement), () => `result ${r.key} ${message}`);
|
|
391
|
+
const pathNode = one(r, sh.resultPath);
|
|
392
|
+
return Result.gen(function* () {
|
|
393
|
+
const focusNode = yield* required(sh.focusNode, Term.isGroundTerm, 'has no sh:focusNode');
|
|
394
|
+
const sourceShape = yield* required(
|
|
395
|
+
sh.sourceShape,
|
|
396
|
+
Term.isResource,
|
|
397
|
+
'has no valid sh:sourceShape',
|
|
398
|
+
);
|
|
399
|
+
const component = yield* required(
|
|
400
|
+
sh.sourceConstraintComponent,
|
|
401
|
+
Term.isResource,
|
|
402
|
+
'has no valid sh:sourceConstraintComponent',
|
|
403
|
+
);
|
|
404
|
+
const severity = yield* required(
|
|
405
|
+
sh.resultSeverity,
|
|
406
|
+
Term.isNamedNode,
|
|
407
|
+
'has no valid sh:resultSeverity',
|
|
408
|
+
);
|
|
409
|
+
const resultPath = Option.isNone(pathNode)
|
|
410
|
+
? Option.none<Path.Path>()
|
|
411
|
+
: Option.some(
|
|
412
|
+
yield* Result.mapError(
|
|
413
|
+
Path.fromRdf(dataset, pathNode.value),
|
|
414
|
+
() => `result ${r.key} has an invalid sh:resultPath`,
|
|
415
|
+
),
|
|
416
|
+
);
|
|
417
|
+
const details = yield* readResults(Dataset.objectsOf(dataset, r, sh.detail), depth + 1);
|
|
418
|
+
return makeResult({
|
|
419
|
+
focusNode,
|
|
420
|
+
sourceShape,
|
|
421
|
+
sourceConstraintComponent: component,
|
|
422
|
+
severity,
|
|
423
|
+
resultPath,
|
|
424
|
+
value: one(r, sh.value),
|
|
425
|
+
sourceConstraint: Option.filter(one(r, sh.sourceConstraint), Term.isResource),
|
|
426
|
+
messages: Dataset.objectsOf(dataset, r, sh.resultMessage).filter(Term.isLiteral),
|
|
427
|
+
details,
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
};
|
|
431
|
+
const results = readResults(Dataset.objectsOf(dataset, node.success, sh.result), 0);
|
|
432
|
+
if (Result.isFailure(results)) return err(results.failure);
|
|
433
|
+
return Result.succeed({
|
|
434
|
+
_tag: 'ValidationReport',
|
|
435
|
+
conforms: conformsNode.value.value === 'true' || conformsNode.value.value === '1',
|
|
436
|
+
results: results.success,
|
|
437
|
+
});
|
|
438
|
+
};
|