@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,1346 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode, K as isTriple, N as isBlankNode, Y as literal, Z as namedNode, o as Literal, rt as triple, w as XSD_STRING, z as isLiteral } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { l as resolve } from "./Iri-Cr92gsQV.mjs";
|
|
4
|
+
import { S as toValue, _ as isValidLexical, a as canonicalDouble, g as isNumericDatatype, h as isKnownDatatype, i as canonicalDecimal, v as isWellFormed } from "./Xsd-Cdgx5zRB.mjs";
|
|
5
|
+
import { a as setOf, i as fromEntries, n as empty } from "./stringMap-D5YIpYtR.mjs";
|
|
6
|
+
import { t as loop } from "./loop-D5-gNx9K.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 Str from "effect/String";
|
|
12
|
+
import * as Record from "effect/Record";
|
|
13
|
+
import * as Result from "effect/Result";
|
|
14
|
+
import * as BigDecimal from "effect/BigDecimal";
|
|
15
|
+
// src/sparql/internal/hash.ts
|
|
16
|
+
/**
|
|
17
|
+
* Pure, synchronous implementations of MD5, SHA-1, SHA-256, SHA-384 and
|
|
18
|
+
* SHA-512 over UTF-8 strings, returning lower-case hex digests.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
const utf8 = (s) => new TextEncoder().encode(s);
|
|
23
|
+
const hex = (bytes) => Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
24
|
+
/** `0 … n - 1`. */
|
|
25
|
+
const range = (n) => Array.from({ length: n }, (_, i) => i);
|
|
26
|
+
/** The offsets of the `blockSize`-byte blocks of a padded message. */
|
|
27
|
+
const blocks = (m, blockSize) => range(m.length / blockSize).map((b) => b * blockSize);
|
|
28
|
+
const pad = (msg, blockSize, lengthBytes, littleEndian) => {
|
|
29
|
+
const bitLen = BigInt(msg.length) * 8n;
|
|
30
|
+
const total = Math.ceil((msg.length + 1 + lengthBytes) / blockSize) * blockSize;
|
|
31
|
+
const out = new Uint8Array(total);
|
|
32
|
+
out.set(msg);
|
|
33
|
+
out[msg.length] = 128;
|
|
34
|
+
range(lengthBytes).forEach((i) => {
|
|
35
|
+
const byte = Number(bitLen >> BigInt(8 * i) & 255n);
|
|
36
|
+
if (littleEndian) out[total - lengthBytes + i] = byte;
|
|
37
|
+
else out[total - 1 - i] = byte;
|
|
38
|
+
});
|
|
39
|
+
return out;
|
|
40
|
+
};
|
|
41
|
+
const rotl = (x, n) => x << n | x >>> 32 - n;
|
|
42
|
+
const rotr = (x, n) => x >>> n | x << 32 - n;
|
|
43
|
+
/** Big-endian 32-bit words of a digest, as hex. */
|
|
44
|
+
const hexWords = (words) => words.map((x) => (x >>> 0).toString(16).padStart(8, "0")).join("");
|
|
45
|
+
const MD5_STEPS = [
|
|
46
|
+
7,
|
|
47
|
+
12,
|
|
48
|
+
17,
|
|
49
|
+
22,
|
|
50
|
+
7,
|
|
51
|
+
12,
|
|
52
|
+
17,
|
|
53
|
+
22,
|
|
54
|
+
7,
|
|
55
|
+
12,
|
|
56
|
+
17,
|
|
57
|
+
22,
|
|
58
|
+
7,
|
|
59
|
+
12,
|
|
60
|
+
17,
|
|
61
|
+
22,
|
|
62
|
+
5,
|
|
63
|
+
9,
|
|
64
|
+
14,
|
|
65
|
+
20,
|
|
66
|
+
5,
|
|
67
|
+
9,
|
|
68
|
+
14,
|
|
69
|
+
20,
|
|
70
|
+
5,
|
|
71
|
+
9,
|
|
72
|
+
14,
|
|
73
|
+
20,
|
|
74
|
+
5,
|
|
75
|
+
9,
|
|
76
|
+
14,
|
|
77
|
+
20,
|
|
78
|
+
4,
|
|
79
|
+
11,
|
|
80
|
+
16,
|
|
81
|
+
23,
|
|
82
|
+
4,
|
|
83
|
+
11,
|
|
84
|
+
16,
|
|
85
|
+
23,
|
|
86
|
+
4,
|
|
87
|
+
11,
|
|
88
|
+
16,
|
|
89
|
+
23,
|
|
90
|
+
4,
|
|
91
|
+
11,
|
|
92
|
+
16,
|
|
93
|
+
23,
|
|
94
|
+
6,
|
|
95
|
+
10,
|
|
96
|
+
15,
|
|
97
|
+
21,
|
|
98
|
+
6,
|
|
99
|
+
10,
|
|
100
|
+
15,
|
|
101
|
+
21,
|
|
102
|
+
6,
|
|
103
|
+
10,
|
|
104
|
+
15,
|
|
105
|
+
21,
|
|
106
|
+
6,
|
|
107
|
+
10,
|
|
108
|
+
15,
|
|
109
|
+
21
|
|
110
|
+
].map((s, i) => ({
|
|
111
|
+
i,
|
|
112
|
+
k: Math.floor(Math.abs(Math.sin(i + 1)) * 2 ** 32) | 0,
|
|
113
|
+
s,
|
|
114
|
+
g: i < 16 ? i : i < 32 ? (5 * i + 1) % 16 : i < 48 ? (3 * i + 5) % 16 : 7 * i % 16
|
|
115
|
+
}));
|
|
116
|
+
const md5 = (input) => {
|
|
117
|
+
const m = pad(utf8(input), 64, 8, true);
|
|
118
|
+
let a0 = 1732584193;
|
|
119
|
+
let b0 = -271733879;
|
|
120
|
+
let c0 = -1732584194;
|
|
121
|
+
let d0 = 271733878;
|
|
122
|
+
const view = new DataView(m.buffer);
|
|
123
|
+
blocks(m, 64).forEach((off) => {
|
|
124
|
+
let a = a0;
|
|
125
|
+
let b = b0;
|
|
126
|
+
let c = c0;
|
|
127
|
+
let d = d0;
|
|
128
|
+
MD5_STEPS.forEach(({ i, k, s, g }) => {
|
|
129
|
+
const f = i < 16 ? b & c | ~b & d : i < 32 ? d & b | ~d & c : i < 48 ? b ^ c ^ d : c ^ (b | ~d);
|
|
130
|
+
const tmp = d;
|
|
131
|
+
d = c;
|
|
132
|
+
c = b;
|
|
133
|
+
b = b + rotl(a + f + k + (view.getUint32(off + g * 4, true) | 0) | 0, s) | 0;
|
|
134
|
+
a = tmp;
|
|
135
|
+
});
|
|
136
|
+
a0 = a0 + a | 0;
|
|
137
|
+
b0 = b0 + b | 0;
|
|
138
|
+
c0 = c0 + c | 0;
|
|
139
|
+
d0 = d0 + d | 0;
|
|
140
|
+
});
|
|
141
|
+
const out = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(16));
|
|
142
|
+
[
|
|
143
|
+
a0,
|
|
144
|
+
b0,
|
|
145
|
+
c0,
|
|
146
|
+
d0
|
|
147
|
+
].forEach((x, i) => out.setUint32(i * 4, x >>> 0, true));
|
|
148
|
+
return hex(new Uint8Array(out.buffer));
|
|
149
|
+
};
|
|
150
|
+
const ROUNDS_16 = range(16);
|
|
151
|
+
const SCHEDULE_80 = range(80).slice(16);
|
|
152
|
+
const SCHEDULE_64 = range(64).slice(16);
|
|
153
|
+
const SHA1_ROUNDS = range(80);
|
|
154
|
+
const sha1 = (input) => {
|
|
155
|
+
const m = pad(utf8(input), 64, 8, false);
|
|
156
|
+
let h0 = 1732584193;
|
|
157
|
+
let h1 = -271733879;
|
|
158
|
+
let h2 = -1732584194;
|
|
159
|
+
let h3 = 271733878;
|
|
160
|
+
let h4 = -1009589776;
|
|
161
|
+
const view = new DataView(m.buffer);
|
|
162
|
+
const w = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(320));
|
|
163
|
+
const word = (i) => w.getInt32(i * 4);
|
|
164
|
+
blocks(m, 64).forEach((off) => {
|
|
165
|
+
ROUNDS_16.forEach((i) => w.setInt32(i * 4, view.getUint32(off + i * 4) | 0));
|
|
166
|
+
SCHEDULE_80.forEach((i) => w.setInt32(i * 4, rotl(word(i - 3) ^ word(i - 8) ^ word(i - 14) ^ word(i - 16), 1)));
|
|
167
|
+
let a = h0;
|
|
168
|
+
let b = h1;
|
|
169
|
+
let c = h2;
|
|
170
|
+
let d = h3;
|
|
171
|
+
let e = h4;
|
|
172
|
+
SHA1_ROUNDS.forEach((i) => {
|
|
173
|
+
const f = i < 20 ? b & c | ~b & d : i < 40 ? b ^ c ^ d : i < 60 ? b & c | b & d | c & d : b ^ c ^ d;
|
|
174
|
+
const k = i < 20 ? 1518500249 : i < 40 ? 1859775393 : i < 60 ? -1894007588 : -899497514;
|
|
175
|
+
const t = rotl(a, 5) + f + e + k + word(i) | 0;
|
|
176
|
+
e = d;
|
|
177
|
+
d = c;
|
|
178
|
+
c = rotl(b, 30);
|
|
179
|
+
b = a;
|
|
180
|
+
a = t;
|
|
181
|
+
});
|
|
182
|
+
h0 = h0 + a | 0;
|
|
183
|
+
h1 = h1 + b | 0;
|
|
184
|
+
h2 = h2 + c | 0;
|
|
185
|
+
h3 = h3 + d | 0;
|
|
186
|
+
h4 = h4 + e | 0;
|
|
187
|
+
});
|
|
188
|
+
return hexWords([
|
|
189
|
+
h0,
|
|
190
|
+
h1,
|
|
191
|
+
h2,
|
|
192
|
+
h3,
|
|
193
|
+
h4
|
|
194
|
+
]);
|
|
195
|
+
};
|
|
196
|
+
const K256 = [
|
|
197
|
+
1116352408,
|
|
198
|
+
1899447441,
|
|
199
|
+
3049323471,
|
|
200
|
+
3921009573,
|
|
201
|
+
961987163,
|
|
202
|
+
1508970993,
|
|
203
|
+
2453635748,
|
|
204
|
+
2870763221,
|
|
205
|
+
3624381080,
|
|
206
|
+
310598401,
|
|
207
|
+
607225278,
|
|
208
|
+
1426881987,
|
|
209
|
+
1925078388,
|
|
210
|
+
2162078206,
|
|
211
|
+
2614888103,
|
|
212
|
+
3248222580,
|
|
213
|
+
3835390401,
|
|
214
|
+
4022224774,
|
|
215
|
+
264347078,
|
|
216
|
+
604807628,
|
|
217
|
+
770255983,
|
|
218
|
+
1249150122,
|
|
219
|
+
1555081692,
|
|
220
|
+
1996064986,
|
|
221
|
+
2554220882,
|
|
222
|
+
2821834349,
|
|
223
|
+
2952996808,
|
|
224
|
+
3210313671,
|
|
225
|
+
3336571891,
|
|
226
|
+
3584528711,
|
|
227
|
+
113926993,
|
|
228
|
+
338241895,
|
|
229
|
+
666307205,
|
|
230
|
+
773529912,
|
|
231
|
+
1294757372,
|
|
232
|
+
1396182291,
|
|
233
|
+
1695183700,
|
|
234
|
+
1986661051,
|
|
235
|
+
2177026350,
|
|
236
|
+
2456956037,
|
|
237
|
+
2730485921,
|
|
238
|
+
2820302411,
|
|
239
|
+
3259730800,
|
|
240
|
+
3345764771,
|
|
241
|
+
3516065817,
|
|
242
|
+
3600352804,
|
|
243
|
+
4094571909,
|
|
244
|
+
275423344,
|
|
245
|
+
430227734,
|
|
246
|
+
506948616,
|
|
247
|
+
659060556,
|
|
248
|
+
883997877,
|
|
249
|
+
958139571,
|
|
250
|
+
1322822218,
|
|
251
|
+
1537002063,
|
|
252
|
+
1747873779,
|
|
253
|
+
1955562222,
|
|
254
|
+
2024104815,
|
|
255
|
+
2227730452,
|
|
256
|
+
2361852424,
|
|
257
|
+
2428436474,
|
|
258
|
+
2756734187,
|
|
259
|
+
3204031479,
|
|
260
|
+
3329325298
|
|
261
|
+
].map((x) => x | 0);
|
|
262
|
+
const sha256 = (input) => {
|
|
263
|
+
const m = pad(utf8(input), 64, 8, false);
|
|
264
|
+
let h0 = 1779033703;
|
|
265
|
+
let h1 = -1150833019;
|
|
266
|
+
let h2 = 1013904242;
|
|
267
|
+
let h3 = -1521486534;
|
|
268
|
+
let h4 = 1359893119;
|
|
269
|
+
let h5 = -1694144372;
|
|
270
|
+
let h6 = 528734635;
|
|
271
|
+
let h7 = 1541459225;
|
|
272
|
+
const view = new DataView(m.buffer);
|
|
273
|
+
const w = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(256));
|
|
274
|
+
const word = (i) => w.getInt32(i * 4);
|
|
275
|
+
blocks(m, 64).forEach((off) => {
|
|
276
|
+
ROUNDS_16.forEach((i) => w.setInt32(i * 4, view.getUint32(off + i * 4) | 0));
|
|
277
|
+
SCHEDULE_64.forEach((i) => {
|
|
278
|
+
const x = word(i - 15);
|
|
279
|
+
const y = word(i - 2);
|
|
280
|
+
const s0 = rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;
|
|
281
|
+
const s1 = rotr(y, 17) ^ rotr(y, 19) ^ y >>> 10;
|
|
282
|
+
w.setInt32(i * 4, word(i - 16) + s0 + word(i - 7) + s1 | 0);
|
|
283
|
+
});
|
|
284
|
+
let a = h0;
|
|
285
|
+
let b = h1;
|
|
286
|
+
let c = h2;
|
|
287
|
+
let d = h3;
|
|
288
|
+
let e = h4;
|
|
289
|
+
let f = h5;
|
|
290
|
+
let g = h6;
|
|
291
|
+
let hh = h7;
|
|
292
|
+
K256.forEach((k, i) => {
|
|
293
|
+
const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
|
|
294
|
+
const ch = e & f ^ ~e & g;
|
|
295
|
+
const t1 = hh + S1 + ch + k + word(i) | 0;
|
|
296
|
+
const t2 = (rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + (a & b ^ a & c ^ b & c) | 0;
|
|
297
|
+
hh = g;
|
|
298
|
+
g = f;
|
|
299
|
+
f = e;
|
|
300
|
+
e = d + t1 | 0;
|
|
301
|
+
d = c;
|
|
302
|
+
c = b;
|
|
303
|
+
b = a;
|
|
304
|
+
a = t1 + t2 | 0;
|
|
305
|
+
});
|
|
306
|
+
h0 = h0 + a | 0;
|
|
307
|
+
h1 = h1 + b | 0;
|
|
308
|
+
h2 = h2 + c | 0;
|
|
309
|
+
h3 = h3 + d | 0;
|
|
310
|
+
h4 = h4 + e | 0;
|
|
311
|
+
h5 = h5 + f | 0;
|
|
312
|
+
h6 = h6 + g | 0;
|
|
313
|
+
h7 = h7 + hh | 0;
|
|
314
|
+
});
|
|
315
|
+
return hexWords([
|
|
316
|
+
h0,
|
|
317
|
+
h1,
|
|
318
|
+
h2,
|
|
319
|
+
h3,
|
|
320
|
+
h4,
|
|
321
|
+
h5,
|
|
322
|
+
h6,
|
|
323
|
+
h7
|
|
324
|
+
]);
|
|
325
|
+
};
|
|
326
|
+
const K512 = [
|
|
327
|
+
"428a2f98d728ae22",
|
|
328
|
+
"7137449123ef65cd",
|
|
329
|
+
"b5c0fbcfec4d3b2f",
|
|
330
|
+
"e9b5dba58189dbbc",
|
|
331
|
+
"3956c25bf348b538",
|
|
332
|
+
"59f111f1b605d019",
|
|
333
|
+
"923f82a4af194f9b",
|
|
334
|
+
"ab1c5ed5da6d8118",
|
|
335
|
+
"d807aa98a3030242",
|
|
336
|
+
"12835b0145706fbe",
|
|
337
|
+
"243185be4ee4b28c",
|
|
338
|
+
"550c7dc3d5ffb4e2",
|
|
339
|
+
"72be5d74f27b896f",
|
|
340
|
+
"80deb1fe3b1696b1",
|
|
341
|
+
"9bdc06a725c71235",
|
|
342
|
+
"c19bf174cf692694",
|
|
343
|
+
"e49b69c19ef14ad2",
|
|
344
|
+
"efbe4786384f25e3",
|
|
345
|
+
"0fc19dc68b8cd5b5",
|
|
346
|
+
"240ca1cc77ac9c65",
|
|
347
|
+
"2de92c6f592b0275",
|
|
348
|
+
"4a7484aa6ea6e483",
|
|
349
|
+
"5cb0a9dcbd41fbd4",
|
|
350
|
+
"76f988da831153b5",
|
|
351
|
+
"983e5152ee66dfab",
|
|
352
|
+
"a831c66d2db43210",
|
|
353
|
+
"b00327c898fb213f",
|
|
354
|
+
"bf597fc7beef0ee4",
|
|
355
|
+
"c6e00bf33da88fc2",
|
|
356
|
+
"d5a79147930aa725",
|
|
357
|
+
"06ca6351e003826f",
|
|
358
|
+
"142929670a0e6e70",
|
|
359
|
+
"27b70a8546d22ffc",
|
|
360
|
+
"2e1b21385c26c926",
|
|
361
|
+
"4d2c6dfc5ac42aed",
|
|
362
|
+
"53380d139d95b3df",
|
|
363
|
+
"650a73548baf63de",
|
|
364
|
+
"766a0abb3c77b2a8",
|
|
365
|
+
"81c2c92e47edaee6",
|
|
366
|
+
"92722c851482353b",
|
|
367
|
+
"a2bfe8a14cf10364",
|
|
368
|
+
"a81a664bbc423001",
|
|
369
|
+
"c24b8b70d0f89791",
|
|
370
|
+
"c76c51a30654be30",
|
|
371
|
+
"d192e819d6ef5218",
|
|
372
|
+
"d69906245565a910",
|
|
373
|
+
"f40e35855771202a",
|
|
374
|
+
"106aa07032bbd1b8",
|
|
375
|
+
"19a4c116b8d2d0c8",
|
|
376
|
+
"1e376c085141ab53",
|
|
377
|
+
"2748774cdf8eeb99",
|
|
378
|
+
"34b0bcb5e19b48a8",
|
|
379
|
+
"391c0cb3c5c95a63",
|
|
380
|
+
"4ed8aa4ae3418acb",
|
|
381
|
+
"5b9cca4f7763e373",
|
|
382
|
+
"682e6ff3d6b2b8a3",
|
|
383
|
+
"748f82ee5defb2fc",
|
|
384
|
+
"78a5636f43172f60",
|
|
385
|
+
"84c87814a1f0ab72",
|
|
386
|
+
"8cc702081a6439ec",
|
|
387
|
+
"90befffa23631e28",
|
|
388
|
+
"a4506cebde82bde9",
|
|
389
|
+
"bef9a3f7b2c67915",
|
|
390
|
+
"c67178f2e372532b",
|
|
391
|
+
"ca273eceea26619c",
|
|
392
|
+
"d186b8c721c0c207",
|
|
393
|
+
"eada7dd6cde0eb1e",
|
|
394
|
+
"f57d4f7fee6ed178",
|
|
395
|
+
"06f067aa72176fba",
|
|
396
|
+
"0a637dc5a2c898a6",
|
|
397
|
+
"113f9804bef90dae",
|
|
398
|
+
"1b710b35131c471b",
|
|
399
|
+
"28db77f523047d84",
|
|
400
|
+
"32caab7b40c72493",
|
|
401
|
+
"3c9ebe0a15c9bebc",
|
|
402
|
+
"431d67c49c100d4c",
|
|
403
|
+
"4cc5d4becb3e42b6",
|
|
404
|
+
"597f299cfc657e2a",
|
|
405
|
+
"5fcb6fab3ad6faec",
|
|
406
|
+
"6c44198c4a475817"
|
|
407
|
+
].map((h) => BigInt(`0x${h}`));
|
|
408
|
+
const MASK64 = (1n << 64n) - 1n;
|
|
409
|
+
const rotr64 = (x, n) => (x >> n | x << 64n - n) & MASK64;
|
|
410
|
+
const SCHEDULE_512 = range(80).slice(16);
|
|
411
|
+
const sha512core = (input, init, outWords) => {
|
|
412
|
+
const m = pad(utf8(input), 128, 16, false);
|
|
413
|
+
let h = init;
|
|
414
|
+
const view = new DataView(m.buffer);
|
|
415
|
+
const w = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(640));
|
|
416
|
+
const word = (i) => w.getBigUint64(i * 8);
|
|
417
|
+
blocks(m, 128).forEach((off) => {
|
|
418
|
+
ROUNDS_16.forEach((i) => w.setBigUint64(i * 8, view.getBigUint64(off + i * 8)));
|
|
419
|
+
SCHEDULE_512.forEach((i) => {
|
|
420
|
+
const x = word(i - 15);
|
|
421
|
+
const y = word(i - 2);
|
|
422
|
+
const s0 = rotr64(x, 1n) ^ rotr64(x, 8n) ^ x >> 7n;
|
|
423
|
+
const s1 = rotr64(y, 19n) ^ rotr64(y, 61n) ^ y >> 6n;
|
|
424
|
+
w.setBigUint64(i * 8, word(i - 16) + s0 + word(i - 7) + s1 & MASK64);
|
|
425
|
+
});
|
|
426
|
+
let [a, b, c, d, e, f, g, hh] = h;
|
|
427
|
+
K512.forEach((k, i) => {
|
|
428
|
+
const S1 = rotr64(e, 14n) ^ rotr64(e, 18n) ^ rotr64(e, 41n);
|
|
429
|
+
const ch = e & f ^ ~e & MASK64 & g;
|
|
430
|
+
const t1 = hh + S1 + ch + k + word(i) & MASK64;
|
|
431
|
+
const t2 = (rotr64(a, 28n) ^ rotr64(a, 34n) ^ rotr64(a, 39n)) + (a & b ^ a & c ^ b & c) & MASK64;
|
|
432
|
+
hh = g;
|
|
433
|
+
g = f;
|
|
434
|
+
f = e;
|
|
435
|
+
e = d + t1 & MASK64;
|
|
436
|
+
d = c;
|
|
437
|
+
c = b;
|
|
438
|
+
b = a;
|
|
439
|
+
a = t1 + t2 & MASK64;
|
|
440
|
+
});
|
|
441
|
+
const [h0, h1, h2, h3, h4, h5, h6, h7] = h;
|
|
442
|
+
h = [
|
|
443
|
+
h0 + a & MASK64,
|
|
444
|
+
h1 + b & MASK64,
|
|
445
|
+
h2 + c & MASK64,
|
|
446
|
+
h3 + d & MASK64,
|
|
447
|
+
h4 + e & MASK64,
|
|
448
|
+
h5 + f & MASK64,
|
|
449
|
+
h6 + g & MASK64,
|
|
450
|
+
h7 + hh & MASK64
|
|
451
|
+
];
|
|
452
|
+
});
|
|
453
|
+
return h.slice(0, outWords).map((x) => x.toString(16).padStart(16, "0")).join("");
|
|
454
|
+
};
|
|
455
|
+
const big = (x) => BigInt(`0x${x}`);
|
|
456
|
+
/** A SHA-512 initial state, from its hex words. */
|
|
457
|
+
const state512 = (...[a, b, c, d, e, f, g, h]) => [
|
|
458
|
+
big(a),
|
|
459
|
+
big(b),
|
|
460
|
+
big(c),
|
|
461
|
+
big(d),
|
|
462
|
+
big(e),
|
|
463
|
+
big(f),
|
|
464
|
+
big(g),
|
|
465
|
+
big(h)
|
|
466
|
+
];
|
|
467
|
+
const sha512 = (input) => sha512core(input, state512("6a09e667f3bcc908", "bb67ae8584caa73b", "3c6ef372fe94f82b", "a54ff53a5f1d36f1", "510e527fade682d1", "9b05688c2b3e6c1f", "1f83d9abfb41bd6b", "5be0cd19137e2179"), 8);
|
|
468
|
+
const sha384 = (input) => sha512core(input, state512("cbbb9d5dc1059ed8", "629a292a367cd507", "9159015a3070dd17", "152fecd8f70e5939", "67332667ffc00b31", "8eb44a8768581511", "db0c2e0d64f98fa7", "47b5481dbefa4fa4"), 6);
|
|
469
|
+
// src/sparql/internal/values.ts
|
|
470
|
+
/**
|
|
471
|
+
* Value-level helpers for expression evaluation: numeric type promotion and
|
|
472
|
+
* arithmetic, comparisons, effective boolean value and the ORDER BY term
|
|
473
|
+
* ordering.
|
|
474
|
+
*
|
|
475
|
+
* Errors are signalled by throwing `EvalFailure` (a cheap, stack-less
|
|
476
|
+
* object); the public API converts them to `ExpressionError`s.
|
|
477
|
+
*
|
|
478
|
+
* @internal
|
|
479
|
+
*/
|
|
480
|
+
const XSD = "http://www.w3.org/2001/XMLSchema#";
|
|
481
|
+
const RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
|
|
482
|
+
/** A thrown expression evaluation error. */
|
|
483
|
+
var EvalFailure = class {
|
|
484
|
+
message;
|
|
485
|
+
constructor(message) {
|
|
486
|
+
this.message = message;
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
/**
|
|
490
|
+
* Runs `f`, returning a thrown `EvalFailure` (an expression error) as the
|
|
491
|
+
* failure; any other exception is a defect and propagates.
|
|
492
|
+
*/
|
|
493
|
+
const catchEvalFailure = (f) => Result.try({
|
|
494
|
+
try: f,
|
|
495
|
+
catch: (cause) => {
|
|
496
|
+
if (cause instanceof EvalFailure) return cause;
|
|
497
|
+
throw cause;
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
const fail = (message) => {
|
|
501
|
+
throw new EvalFailure(message);
|
|
502
|
+
};
|
|
503
|
+
const dt = {
|
|
504
|
+
string: namedNode(`${XSD}string`),
|
|
505
|
+
boolean: namedNode(`${XSD}boolean`),
|
|
506
|
+
integer: namedNode(`${XSD}integer`),
|
|
507
|
+
decimal: namedNode(`${XSD}decimal`),
|
|
508
|
+
float: namedNode(`${XSD}float`),
|
|
509
|
+
double: namedNode(`${XSD}double`),
|
|
510
|
+
dateTime: namedNode(`${XSD}dateTime`),
|
|
511
|
+
dayTimeDuration: namedNode(`${XSD}dayTimeDuration`),
|
|
512
|
+
langString: namedNode(`${RDF}langString`),
|
|
513
|
+
dirLangString: namedNode(`${RDF}dirLangString`)
|
|
514
|
+
};
|
|
515
|
+
const TRUE = new Literal("true", dt.boolean);
|
|
516
|
+
const FALSE = new Literal("false", dt.boolean);
|
|
517
|
+
const bool = (b) => b ? TRUE : FALSE;
|
|
518
|
+
/** A simple literal or `xsd:string` (no language tag). */
|
|
519
|
+
const isSimpleString = (t) => isLiteral(t) && t.language === "" && t.datatype.value === "http://www.w3.org/2001/XMLSchema#string";
|
|
520
|
+
/** A string literal: simple, `xsd:string` or language-tagged. */
|
|
521
|
+
const isStringLiteral = (t) => isLiteral(t) && (t.language !== "" || t.datatype.value === "http://www.w3.org/2001/XMLSchema#string");
|
|
522
|
+
const stringLike = (value, like) => like.language === "" ? new Literal(value, dt.string) : like.direction === void 0 ? new Literal(value, dt.langString, like.language) : new Literal(value, dt.dirLangString, like.language, like.direction);
|
|
523
|
+
const simple = (value) => new Literal(value, dt.string);
|
|
524
|
+
/** The numeric value of each literal met, `None` for a non-numeric one. */
|
|
525
|
+
const numCache = /* @__PURE__ */ new WeakMap();
|
|
526
|
+
const numOfValue = (v) => Predicate.isTagged(v, "Integer") ? Option.some({
|
|
527
|
+
kind: 0,
|
|
528
|
+
v: v.value
|
|
529
|
+
}) : Predicate.isTagged(v, "Decimal") ? Option.some({
|
|
530
|
+
kind: 1,
|
|
531
|
+
v: v.value
|
|
532
|
+
}) : Predicate.isTagged(v, "Float") ? Option.some({
|
|
533
|
+
kind: 2,
|
|
534
|
+
v: v.value
|
|
535
|
+
}) : Predicate.isTagged(v, "Double") ? Option.some({
|
|
536
|
+
kind: 3,
|
|
537
|
+
v: v.value
|
|
538
|
+
}) : Option.none();
|
|
539
|
+
/** The numeric value of a literal, `None` if it is not a valid numeric literal. */
|
|
540
|
+
const numeric = (t) => {
|
|
541
|
+
if (!isLiteral(t) || t.language !== "") return Option.none();
|
|
542
|
+
const cached = numCache.get(t);
|
|
543
|
+
if (cached !== void 0) return cached;
|
|
544
|
+
const d = t.datatype.value;
|
|
545
|
+
const result = isNumericDatatype(d) && isValidLexical(d, t.value) ? numOfValue(toValue(t)) : Option.none();
|
|
546
|
+
numCache.set(t, result);
|
|
547
|
+
return result;
|
|
548
|
+
};
|
|
549
|
+
const isNumeric = (t) => Option.isSome(numeric(t));
|
|
550
|
+
const toNumber = (n) => n.kind === 0 ? Number(n.v) : n.kind === 1 ? BigDecimal.toNumberUnsafe(n.v) : n.v;
|
|
551
|
+
const toDecimal = (n) => n.kind === 0 ? BigDecimal.fromBigInt(n.v) : n.kind === 1 ? n.v : fail("Not a decimal");
|
|
552
|
+
/** Promotes a numeric value to (at least) the given kind. */
|
|
553
|
+
const promote = (n, kind) => {
|
|
554
|
+
if (n.kind >= kind) return n;
|
|
555
|
+
return kind === 1 ? {
|
|
556
|
+
kind: 1,
|
|
557
|
+
v: toDecimal(n)
|
|
558
|
+
} : kind === 2 ? {
|
|
559
|
+
kind: 2,
|
|
560
|
+
v: Math.fround(toNumber(n))
|
|
561
|
+
} : {
|
|
562
|
+
kind: 3,
|
|
563
|
+
v: toNumber(n)
|
|
564
|
+
};
|
|
565
|
+
};
|
|
566
|
+
const numLiteral = (n) => n.kind === 0 ? new Literal(n.v.toString(), dt.integer) : n.kind === 1 ? new Literal(canonicalDecimal(n.v), dt.decimal) : n.kind === 2 ? new Literal(canonicalDouble(Math.fround(n.v)), dt.float) : new Literal(canonicalDouble(n.v), dt.double);
|
|
567
|
+
/** The numeric value of a literal; an evaluation error if it has none. */
|
|
568
|
+
const requireNum = (t) => {
|
|
569
|
+
const n = numeric(t);
|
|
570
|
+
return Option.isSome(n) ? n.value : fail("Expected a numeric literal");
|
|
571
|
+
};
|
|
572
|
+
const DIVISION_SCALE = 18;
|
|
573
|
+
/** `op` on two values already promoted to the common `kind`. */
|
|
574
|
+
const arithmeticAt = (kind, op, px, py) => {
|
|
575
|
+
if (px.kind === 0 && py.kind === 0) {
|
|
576
|
+
const u = px.v;
|
|
577
|
+
const v = py.v;
|
|
578
|
+
return numLiteral({
|
|
579
|
+
kind: 0,
|
|
580
|
+
v: op === "+" ? u + v : op === "-" ? u - v : u * v
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
if (px.kind === 1 && py.kind === 1) {
|
|
584
|
+
const u = px.v;
|
|
585
|
+
const v = py.v;
|
|
586
|
+
if (op === "/") {
|
|
587
|
+
if (BigDecimal.isZero(v)) return fail("Division by zero");
|
|
588
|
+
return numLiteral({
|
|
589
|
+
kind: 1,
|
|
590
|
+
v: divideDecimal(u, v)
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
return numLiteral({
|
|
594
|
+
kind: 1,
|
|
595
|
+
v: op === "+" ? BigDecimal.sum(u, v) : op === "-" ? BigDecimal.subtract(u, v) : BigDecimal.multiply(u, v)
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
const u = toNumber(px);
|
|
599
|
+
const v = toNumber(py);
|
|
600
|
+
const r = op === "+" ? u + v : op === "-" ? u - v : op === "*" ? u * v : u / v;
|
|
601
|
+
return numLiteral(kind === 2 ? {
|
|
602
|
+
kind: 2,
|
|
603
|
+
v: Math.fround(r)
|
|
604
|
+
} : {
|
|
605
|
+
kind: 3,
|
|
606
|
+
v: r
|
|
607
|
+
});
|
|
608
|
+
};
|
|
609
|
+
const arithmetic = (op, a, b) => {
|
|
610
|
+
const x = requireNum(a);
|
|
611
|
+
const y = requireNum(b);
|
|
612
|
+
let kind = Math.max(x.kind, y.kind);
|
|
613
|
+
if (op === "/" && kind === 0) kind = 1;
|
|
614
|
+
const px = promote(x, kind);
|
|
615
|
+
const py = promote(y, kind);
|
|
616
|
+
return arithmeticAt(kind, op, px, py);
|
|
617
|
+
};
|
|
618
|
+
/** Decimal division with a fixed number of fractional digits (rounded half-even). */
|
|
619
|
+
const divideDecimal = (u, v) => {
|
|
620
|
+
const exact = BigDecimal.divide(u, v);
|
|
621
|
+
const scaled = BigDecimal.round(Option.getOrElse(exact, () => BigDecimal.fromBigInt(0n)), {
|
|
622
|
+
scale: DIVISION_SCALE,
|
|
623
|
+
mode: "half-even"
|
|
624
|
+
});
|
|
625
|
+
return BigDecimal.normalize(scaled);
|
|
626
|
+
};
|
|
627
|
+
const negate = (a) => {
|
|
628
|
+
return negateNum(requireNum(a));
|
|
629
|
+
};
|
|
630
|
+
const negateNum = (x) => numLiteral(x.kind === 0 ? {
|
|
631
|
+
kind: 0,
|
|
632
|
+
v: -x.v
|
|
633
|
+
} : x.kind === 1 ? {
|
|
634
|
+
kind: 1,
|
|
635
|
+
v: BigDecimal.negate(x.v)
|
|
636
|
+
} : x.kind === 2 ? {
|
|
637
|
+
kind: 2,
|
|
638
|
+
v: -x.v
|
|
639
|
+
} : {
|
|
640
|
+
kind: 3,
|
|
641
|
+
v: -x.v
|
|
642
|
+
});
|
|
643
|
+
/** Compares two numerics; returns NaN when unordered (NaN operands). */
|
|
644
|
+
const compareNum = (x, y) => {
|
|
645
|
+
const kind = Math.max(x.kind, y.kind);
|
|
646
|
+
if (kind <= 1) {
|
|
647
|
+
if (x.kind === 0 && y.kind === 0) {
|
|
648
|
+
const u = x.v;
|
|
649
|
+
const v = y.v;
|
|
650
|
+
return u < v ? -1 : u > v ? 1 : 0;
|
|
651
|
+
}
|
|
652
|
+
const u = toDecimal(x);
|
|
653
|
+
const v = toDecimal(y);
|
|
654
|
+
return BigDecimal.isLessThan(u, v) ? -1 : BigDecimal.isGreaterThan(u, v) ? 1 : 0;
|
|
655
|
+
}
|
|
656
|
+
const u = toNumber(promote(x, kind));
|
|
657
|
+
const v = toNumber(promote(y, kind));
|
|
658
|
+
if (Number.isNaN(u) || Number.isNaN(v)) return NaN;
|
|
659
|
+
return u < v ? -1 : u > v ? 1 : 0;
|
|
660
|
+
};
|
|
661
|
+
const DATE_KINDS = setOf([
|
|
662
|
+
"dateTime",
|
|
663
|
+
"dateTimeStamp",
|
|
664
|
+
"date",
|
|
665
|
+
"time",
|
|
666
|
+
"gYear",
|
|
667
|
+
"gYearMonth",
|
|
668
|
+
"gMonth",
|
|
669
|
+
"gMonthDay",
|
|
670
|
+
"gDay"
|
|
671
|
+
]);
|
|
672
|
+
const dateValue = (t) => {
|
|
673
|
+
if (!isLiteral(t) || !t.datatype.value.startsWith("http://www.w3.org/2001/XMLSchema#")) return Option.none();
|
|
674
|
+
const local = t.datatype.value.slice(33);
|
|
675
|
+
if (!DATE_KINDS.has(local) || !isValidLexical(t.datatype.value, t.value)) return Option.none();
|
|
676
|
+
const v = toValue(t);
|
|
677
|
+
if (!Predicate.isTagged(v, "DateTime")) return Option.none();
|
|
678
|
+
return Option.some({
|
|
679
|
+
kind: local === "dateTimeStamp" ? "dateTime" : local,
|
|
680
|
+
millis: v.epochMillis,
|
|
681
|
+
zoned: v.timezone !== void 0
|
|
682
|
+
});
|
|
683
|
+
};
|
|
684
|
+
const FOURTEEN_HOURS = 504e5;
|
|
685
|
+
const BEFORE = Option.some(-1);
|
|
686
|
+
const SAME = Option.some(0);
|
|
687
|
+
const AFTER = Option.some(1);
|
|
688
|
+
/** Compares two date/time values of the same kind; `None` if indeterminate. */
|
|
689
|
+
const compareDates = (a, b) => {
|
|
690
|
+
if (a.kind !== b.kind) return Option.none();
|
|
691
|
+
if (a.zoned !== b.zoned) {
|
|
692
|
+
const diff = a.millis - b.millis;
|
|
693
|
+
if (Math.abs(diff) <= FOURTEEN_HOURS) return Option.none();
|
|
694
|
+
return diff < 0 ? BEFORE : AFTER;
|
|
695
|
+
}
|
|
696
|
+
return a.millis < b.millis ? BEFORE : a.millis > b.millis ? AFTER : SAME;
|
|
697
|
+
};
|
|
698
|
+
const durationValue = (t) => {
|
|
699
|
+
if (!isLiteral(t)) return Option.none();
|
|
700
|
+
const d = t.datatype.value;
|
|
701
|
+
if (d !== `http://www.w3.org/2001/XMLSchema#duration` && d !== `http://www.w3.org/2001/XMLSchema#dayTimeDuration` && d !== `http://www.w3.org/2001/XMLSchema#yearMonthDuration`) return Option.none();
|
|
702
|
+
if (!isValidLexical(d, t.value)) return Option.none();
|
|
703
|
+
const v = toValue(t);
|
|
704
|
+
return Predicate.isTagged(v, "Duration") ? Option.some({
|
|
705
|
+
kind: d.slice(33),
|
|
706
|
+
months: v.months,
|
|
707
|
+
seconds: v.seconds
|
|
708
|
+
}) : Option.none();
|
|
709
|
+
};
|
|
710
|
+
/** Compares strings by Unicode code points. */
|
|
711
|
+
const compareCodepoints = (a, b) => {
|
|
712
|
+
if (a === b) return 0;
|
|
713
|
+
const n = Math.min(a.length, b.length);
|
|
714
|
+
let i = 0;
|
|
715
|
+
loop(() => {
|
|
716
|
+
if (i >= n || a.charCodeAt(i) !== b.charCodeAt(i)) return false;
|
|
717
|
+
i++;
|
|
718
|
+
return true;
|
|
719
|
+
});
|
|
720
|
+
if (i < n) {
|
|
721
|
+
const x = a.charCodeAt(i);
|
|
722
|
+
const y = b.charCodeAt(i);
|
|
723
|
+
const xs = x >= 55296 && x <= 57343;
|
|
724
|
+
if (xs !== (y >= 55296 && y <= 57343)) return xs ? 1 : -1;
|
|
725
|
+
return x < y ? -1 : 1;
|
|
726
|
+
}
|
|
727
|
+
return a.length < b.length ? -1 : a.length > b.length ? 1 : 0;
|
|
728
|
+
};
|
|
729
|
+
const isBooleanLiteral = (t) => isLiteral(t) && t.datatype.value === `http://www.w3.org/2001/XMLSchema#boolean` && isValidLexical(t.datatype.value, t.value);
|
|
730
|
+
const booleanValue = (t) => t.value === "true" || t.value === "1";
|
|
731
|
+
/**
|
|
732
|
+
* Compares two literals by value (for `<`, `>`, …). Returns a number (NaN for
|
|
733
|
+
* unordered) or throws if they are not comparable.
|
|
734
|
+
*/
|
|
735
|
+
const compareLiterals = (a, b) => {
|
|
736
|
+
const x = numeric(a);
|
|
737
|
+
const y = numeric(b);
|
|
738
|
+
if (Option.isSome(x) && Option.isSome(y)) return compareNum(x.value, y.value);
|
|
739
|
+
if (isSimpleString(a) && isSimpleString(b)) return compareCodepoints(a.value, b.value);
|
|
740
|
+
if (isLiteral(a) && isLiteral(b) && a.language !== "" && a.language === b.language && a.direction === b.direction) return compareCodepoints(a.value, b.value);
|
|
741
|
+
if (isBooleanLiteral(a) && isBooleanLiteral(b)) return Number(booleanValue(a)) - Number(booleanValue(b));
|
|
742
|
+
const da = dateValue(a);
|
|
743
|
+
const db = dateValue(b);
|
|
744
|
+
if (Option.isSome(da) && Option.isSome(db)) {
|
|
745
|
+
const c = compareDates(da.value, db.value);
|
|
746
|
+
if (Option.isSome(c)) return c.value;
|
|
747
|
+
return fail("Indeterminate date comparison");
|
|
748
|
+
}
|
|
749
|
+
const ua = durationValue(a);
|
|
750
|
+
const ub = durationValue(b);
|
|
751
|
+
if (Option.isSome(ua) && Option.isSome(ub)) {
|
|
752
|
+
const u = ua.value;
|
|
753
|
+
const v = ub.value;
|
|
754
|
+
if (u.months === v.months) return Math.sign(u.seconds - v.seconds);
|
|
755
|
+
if (u.seconds === v.seconds) return Math.sign(u.months - v.months);
|
|
756
|
+
return fail("Indeterminate duration comparison");
|
|
757
|
+
}
|
|
758
|
+
return fail("Incomparable values");
|
|
759
|
+
};
|
|
760
|
+
const isKnownLiteral = (t) => t.language !== "" || isKnownDatatype(t.datatype.value);
|
|
761
|
+
/** RDF term equality with value semantics (`=`). Throws on type errors. */
|
|
762
|
+
const equals = (a, b) => {
|
|
763
|
+
const ta = isTriple(a);
|
|
764
|
+
const tb = isTriple(b);
|
|
765
|
+
if (ta || tb) {
|
|
766
|
+
if (!ta || !tb) return false;
|
|
767
|
+
return equals(a.subject, b.subject) && equals(a.predicate, b.predicate) && equals(a.object, b.object);
|
|
768
|
+
}
|
|
769
|
+
if (!isLiteral(a) || !isLiteral(b)) return a.key === b.key;
|
|
770
|
+
const x = numeric(a);
|
|
771
|
+
const y = numeric(b);
|
|
772
|
+
if (Option.isSome(x) && Option.isSome(y)) return compareNum(x.value, y.value) === 0;
|
|
773
|
+
if (a.key === b.key) return true;
|
|
774
|
+
if (isSimpleString(a) && isSimpleString(b)) return a.value === b.value;
|
|
775
|
+
if (isBooleanLiteral(a) && isBooleanLiteral(b)) return booleanValue(a) === booleanValue(b);
|
|
776
|
+
const da = dateValue(a);
|
|
777
|
+
const db = dateValue(b);
|
|
778
|
+
if (Option.isSome(da) && Option.isSome(db)) {
|
|
779
|
+
if (da.value.kind !== db.value.kind) return false;
|
|
780
|
+
const c = compareDates(da.value, db.value);
|
|
781
|
+
if (Option.isNone(c)) return fail("Indeterminate date comparison");
|
|
782
|
+
return c.value === 0;
|
|
783
|
+
}
|
|
784
|
+
const ua = durationValue(a);
|
|
785
|
+
const ub = durationValue(b);
|
|
786
|
+
if (Option.isSome(ua) && Option.isSome(ub)) return ua.value.months === ub.value.months && ua.value.seconds === ub.value.seconds;
|
|
787
|
+
if (a.language !== "" || b.language !== "") return false;
|
|
788
|
+
if (isKnownLiteral(a) && isKnownLiteral(b) && isWellFormed(a) && isWellFormed(b) && a.datatype.value !== b.datatype.value) return false;
|
|
789
|
+
return fail("Cannot compare literals");
|
|
790
|
+
};
|
|
791
|
+
/** Effective boolean value. */
|
|
792
|
+
const numEbv = (n) => n.kind === 0 ? n.v !== 0n : n.kind === 1 ? !BigDecimal.isZero(n.v) : !(n.v === 0 || Number.isNaN(n.v));
|
|
793
|
+
const ebv = (t) => {
|
|
794
|
+
if (!isLiteral(t)) return fail("EBV of a non-literal");
|
|
795
|
+
const d = t.datatype.value;
|
|
796
|
+
if (d === `http://www.w3.org/2001/XMLSchema#boolean`) {
|
|
797
|
+
if (!isValidLexical(d, t.value)) return fail("Invalid boolean");
|
|
798
|
+
return booleanValue(t);
|
|
799
|
+
}
|
|
800
|
+
if (t.language === "" && d === "http://www.w3.org/2001/XMLSchema#string") return Str.isNonEmpty(t.value);
|
|
801
|
+
if (isNumericDatatype(d)) {
|
|
802
|
+
const n = numeric(t);
|
|
803
|
+
return Option.isSome(n) && numEbv(n.value);
|
|
804
|
+
}
|
|
805
|
+
return fail("EBV is not defined for this literal");
|
|
806
|
+
};
|
|
807
|
+
/** The `ORDER BY` rank of a bound term: blank nodes < IRIs < literals < triple terms. */
|
|
808
|
+
const termRank = (t) => isBlankNode(t) ? 1 : isNamedNode(t) ? 2 : isLiteral(t) ? 3 : isTriple(t) ? 4 : 5;
|
|
809
|
+
/** Orders two literals: by value where comparable, else syntactically. */
|
|
810
|
+
const compareLiteralOrder = (a, l) => {
|
|
811
|
+
const compared = Result.try(() => compareLiterals(a, l));
|
|
812
|
+
if (Result.isSuccess(compared)) {
|
|
813
|
+
const c = compared.success;
|
|
814
|
+
if (!Number.isNaN(c) && c !== 0) return c;
|
|
815
|
+
if (c === 0 && a.key === l.key) return 0;
|
|
816
|
+
}
|
|
817
|
+
const ka = a.language !== "" ? 1 : a.datatype.value === "http://www.w3.org/2001/XMLSchema#string" ? 0 : 2;
|
|
818
|
+
const kb = l.language !== "" ? 1 : l.datatype.value === "http://www.w3.org/2001/XMLSchema#string" ? 0 : 2;
|
|
819
|
+
if (ka !== kb) return ka - kb;
|
|
820
|
+
return compareCodepoints(a.datatype.value, l.datatype.value) || compareCodepoints(a.language, l.language) || compareCodepoints(a.value, l.value);
|
|
821
|
+
};
|
|
822
|
+
/**
|
|
823
|
+
* The total ordering used by `ORDER BY` on bound terms: blank nodes < IRIs <
|
|
824
|
+
* literals < triple terms; literals are ordered by value where comparable
|
|
825
|
+
* and otherwise by datatype, language and lexical form.
|
|
826
|
+
*/
|
|
827
|
+
const compareTerms = (a, b) => {
|
|
828
|
+
const ra = termRank(a);
|
|
829
|
+
const rb = termRank(b);
|
|
830
|
+
if (ra !== rb) return ra - rb;
|
|
831
|
+
if (isLiteral(a) && isLiteral(b)) return compareLiteralOrder(a, b);
|
|
832
|
+
if (isTriple(a) && isTriple(b)) return compareTerms(a.subject, b.subject) || compareTerms(a.predicate, b.predicate) || compareTerms(a.object, b.object);
|
|
833
|
+
if ((isBlankNode(a) || isNamedNode(a)) && (isBlankNode(b) || isNamedNode(b))) return compareCodepoints(a.value, b.value);
|
|
834
|
+
return 0;
|
|
835
|
+
};
|
|
836
|
+
/** `compareTerms` on possibly unbound terms (`None`), with unbound first. */
|
|
837
|
+
const orderCompare = (a, b) => Option.isNone(a) ? Option.isNone(b) ? 0 : -1 : Option.isNone(b) ? 1 : compareTerms(a.value, b.value);
|
|
838
|
+
// src/sparql/Functions.ts
|
|
839
|
+
/**
|
|
840
|
+
* SPARQL built-in functions, XSD casts and the registry of extension
|
|
841
|
+
* functions.
|
|
842
|
+
*
|
|
843
|
+
* Extension functions are plain synchronous functions from argument terms
|
|
844
|
+
* to a term, registered by IRI and passed to the engine (see
|
|
845
|
+
* `Engine.EngineOptions.functions`). They signal type errors by throwing
|
|
846
|
+
* `ExpressionError` (or calling `Functions.error`).
|
|
847
|
+
*
|
|
848
|
+
* @since 0.1.0
|
|
849
|
+
*/
|
|
850
|
+
var Functions_exports = /* @__PURE__ */ __exportAll({
|
|
851
|
+
ExpressionError: () => ExpressionError,
|
|
852
|
+
builtIns: () => builtIns,
|
|
853
|
+
cast: () => cast,
|
|
854
|
+
compileRegex: () => compileRegex,
|
|
855
|
+
error: () => error,
|
|
856
|
+
isCast: () => isCast,
|
|
857
|
+
registry: () => registry
|
|
858
|
+
});
|
|
859
|
+
/**
|
|
860
|
+
* An expression evaluation error (a SPARQL "type error"): unbound
|
|
861
|
+
* variables, wrong argument types, division by zero, …
|
|
862
|
+
*
|
|
863
|
+
* @since 0.1.0
|
|
864
|
+
* @category errors
|
|
865
|
+
*/
|
|
866
|
+
var ExpressionError = class extends Schema.TaggedError()("ExpressionError", { message: Schema.String }) {};
|
|
867
|
+
/**
|
|
868
|
+
* Signals an expression error from inside a function implementation.
|
|
869
|
+
*
|
|
870
|
+
* @since 0.1.0
|
|
871
|
+
* @category errors
|
|
872
|
+
*/
|
|
873
|
+
const error = (message) => fail(message);
|
|
874
|
+
/**
|
|
875
|
+
* Creates a registry from a record of IRI → function.
|
|
876
|
+
*
|
|
877
|
+
* @since 0.1.0
|
|
878
|
+
* @category constructors
|
|
879
|
+
*/
|
|
880
|
+
const registry = (functions) => fromEntries(Record.toEntries(functions));
|
|
881
|
+
const literalArg = (t) => isLiteral(t) ? t : fail("Expected a literal");
|
|
882
|
+
const stringArg = (t) => isStringLiteral(t) ? t : fail("Expected a string literal");
|
|
883
|
+
const simpleArg = (t) => isSimpleString(t) ? t : fail("Expected a simple literal");
|
|
884
|
+
/** Argument compatibility (SPARQL 1.1 §17.4.3.1.2). */
|
|
885
|
+
const compatible = (a, b) => b.language === "" || a.language === b.language && a.direction === b.direction;
|
|
886
|
+
const codepoints = (s) => Array.from(s);
|
|
887
|
+
const intLiteral = (n) => new Literal(BigInt(n).toString(), dt.integer);
|
|
888
|
+
const numArg = requireNum;
|
|
889
|
+
const roundNum = (t, mode, fn) => {
|
|
890
|
+
const n = numArg(t);
|
|
891
|
+
return numLiteral(n.kind === 0 ? n : n.kind === 1 ? {
|
|
892
|
+
kind: 1,
|
|
893
|
+
v: BigDecimal.round(n.v, {
|
|
894
|
+
scale: 0,
|
|
895
|
+
mode
|
|
896
|
+
})
|
|
897
|
+
} : n.kind === 2 ? {
|
|
898
|
+
kind: 2,
|
|
899
|
+
v: fn(n.v)
|
|
900
|
+
} : {
|
|
901
|
+
kind: 3,
|
|
902
|
+
v: fn(n.v)
|
|
903
|
+
});
|
|
904
|
+
};
|
|
905
|
+
const xpathRound = (x) => {
|
|
906
|
+
if (!Number.isFinite(x) || Object.is(x, -0)) return x;
|
|
907
|
+
const r = Math.floor(x + .5);
|
|
908
|
+
return r === 0 && x < 0 ? -0 : r;
|
|
909
|
+
};
|
|
910
|
+
/** Compiled regular expressions by flags and pattern (read on every `REGEX` / `REPLACE` call). */
|
|
911
|
+
const regexCache = empty();
|
|
912
|
+
/** Compiles an XPath regular expression with XPath flags to a JS RegExp. */
|
|
913
|
+
const compileRegex = (pattern, flags, global = false) => {
|
|
914
|
+
const key = `${global ? "g" : ""}${flags}/${pattern}`;
|
|
915
|
+
const cached = regexCache.get(key);
|
|
916
|
+
if (cached !== void 0) return cached;
|
|
917
|
+
let source = pattern;
|
|
918
|
+
let jsFlags = global ? "g" : "";
|
|
919
|
+
Array.from(flags).forEach((flag) => {
|
|
920
|
+
if (flag === "i" || flag === "s" || flag === "m") {
|
|
921
|
+
if (!jsFlags.includes(flag)) jsFlags += flag;
|
|
922
|
+
} else if (flag === "x") source = source.replace(/[\t\n\r ]/g, "");
|
|
923
|
+
else if (flag === "q") source = source.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
924
|
+
else fail(`Invalid regex flag '${flag}'`);
|
|
925
|
+
});
|
|
926
|
+
const compiled = Result.try(() => new RegExp(source, `${jsFlags}u`)).pipe(Result.orElse(() => Result.try(() => new RegExp(source, jsFlags))));
|
|
927
|
+
if (Result.isFailure(compiled)) return fail("Invalid regular expression");
|
|
928
|
+
const re = compiled.success;
|
|
929
|
+
if (regexCache.size > 1e3) regexCache.clear();
|
|
930
|
+
regexCache.set(key, re);
|
|
931
|
+
return re;
|
|
932
|
+
};
|
|
933
|
+
/** The flags argument of `REGEX` / `REPLACE`, absent beyond the arguments given. */
|
|
934
|
+
const regexFlags = (args, i) => {
|
|
935
|
+
const t = Option.fromUndefinedOr(args[i]);
|
|
936
|
+
return Option.isSome(t) ? simpleArg(t.value).value : "";
|
|
937
|
+
};
|
|
938
|
+
const parseDateParts = (t) => {
|
|
939
|
+
const lit = literalArg(t);
|
|
940
|
+
const d = lit.datatype.value;
|
|
941
|
+
if (!(d === `http://www.w3.org/2001/XMLSchema#dateTime` || d === `http://www.w3.org/2001/XMLSchema#date` || d === `http://www.w3.org/2001/XMLSchema#time` || d === `http://www.w3.org/2001/XMLSchema#dateTimeStamp`) || !isValidLexical(d, lit.value)) return fail("Expected an xsd:dateTime");
|
|
942
|
+
const m = /^(?:(-?\d{4,})-(\d\d)-(\d\d))?T?(?:(\d\d):(\d\d):(\d\d(?:\.\d+)?))?(Z|[+-]\d\d:\d\d)?$/.exec(lit.value);
|
|
943
|
+
if (m === null) return fail("Invalid date/time");
|
|
944
|
+
return {
|
|
945
|
+
year: m[1],
|
|
946
|
+
month: m[2],
|
|
947
|
+
day: m[3],
|
|
948
|
+
hours: m[4],
|
|
949
|
+
minutes: m[5],
|
|
950
|
+
seconds: m[6],
|
|
951
|
+
tz: m[7]
|
|
952
|
+
};
|
|
953
|
+
};
|
|
954
|
+
const timezoneDuration = (tz) => {
|
|
955
|
+
if (tz === "Z") return "PT0S";
|
|
956
|
+
const sign = tz.startsWith("-") ? "-" : "";
|
|
957
|
+
const h = Number(tz.slice(1, 3));
|
|
958
|
+
const mi = Number(tz.slice(4, 6));
|
|
959
|
+
if (h === 0 && mi === 0) return "PT0S";
|
|
960
|
+
return `${sign}PT${h > 0 ? `${h}H` : ""}${mi > 0 ? `${mi}M` : ""}`;
|
|
961
|
+
};
|
|
962
|
+
const encodeForUri = (s) => encodeURIComponent(s).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
963
|
+
const uuid = (random) => {
|
|
964
|
+
const h = Array.from({ length: 16 }, (_, i) => {
|
|
965
|
+
const b = Math.floor(random() * 256);
|
|
966
|
+
return i === 6 ? b & 15 | 64 : i === 8 ? b & 63 | 128 : b;
|
|
967
|
+
}).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
968
|
+
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;
|
|
969
|
+
};
|
|
970
|
+
const LANG_TAG = /^[a-zA-Z]{1,8}(?:-[a-zA-Z0-9]{1,8})*$/;
|
|
971
|
+
/** The two string arguments of a string function, which must be compatible (§17.4.3.1.2). */
|
|
972
|
+
const compatibleStrings = ([a, b]) => {
|
|
973
|
+
const x = stringArg(a);
|
|
974
|
+
const y = stringArg(b);
|
|
975
|
+
return compatible(x, y) ? [x, y] : fail("Incompatible arguments");
|
|
976
|
+
};
|
|
977
|
+
/**
|
|
978
|
+
* `STRBEFORE` / `STRAFTER`: `part` of the first string around the first
|
|
979
|
+
* occurrence of the second, or the empty simple literal if there is none.
|
|
980
|
+
*/
|
|
981
|
+
const around = (args, part) => {
|
|
982
|
+
const [x, y] = compatibleStrings(args);
|
|
983
|
+
const i = x.value.indexOf(y.value);
|
|
984
|
+
return i === -1 ? simple("") : stringLike(part(x.value, y.value, i), x);
|
|
985
|
+
};
|
|
986
|
+
const iriFn = ([a], ctx) => {
|
|
987
|
+
if (isNamedNode(a)) return a;
|
|
988
|
+
const s = simpleArg(a).value;
|
|
989
|
+
return namedNode(ctx.baseIri !== void 0 ? resolve(s, ctx.baseIri) : s);
|
|
990
|
+
};
|
|
991
|
+
const hashFn = (f) => ([a]) => simple(f(simpleArg(a).value));
|
|
992
|
+
/**
|
|
993
|
+
* The strict built-in functions, keyed by canonical name. Functional forms
|
|
994
|
+
* (`BOUND`, `IF`, `COALESCE`, `&&`, `||`, `IN`, `EXISTS`) are handled by the
|
|
995
|
+
* expression evaluator.
|
|
996
|
+
*
|
|
997
|
+
* @since 0.1.0
|
|
998
|
+
* @category built-ins
|
|
999
|
+
*/
|
|
1000
|
+
const builtIns = {
|
|
1001
|
+
STR: ([a]) => isNamedNode(a) || isLiteral(a) ? simple(a.value) : fail("STR of a blank node or triple term"),
|
|
1002
|
+
LANG: ([a]) => simple(literalArg(a).language),
|
|
1003
|
+
LANGDIR: ([a]) => simple(literalArg(a).direction ?? ""),
|
|
1004
|
+
LANGMATCHES: ([tag, range]) => {
|
|
1005
|
+
const t = simpleArg(tag).value.toLowerCase();
|
|
1006
|
+
const r = simpleArg(range).value.toLowerCase();
|
|
1007
|
+
if (r === "*") return bool(t !== "");
|
|
1008
|
+
return bool(t === r || t.startsWith(`${r}-`));
|
|
1009
|
+
},
|
|
1010
|
+
DATATYPE: ([a]) => literalArg(a).datatype,
|
|
1011
|
+
IRI: iriFn,
|
|
1012
|
+
URI: iriFn,
|
|
1013
|
+
BNODE: (args, ctx, sol) => ctx.blankNode(Arr.isReadonlyArrayEmpty(args) ? void 0 : simpleArg(args[0]).value, sol),
|
|
1014
|
+
RAND: (_, ctx) => numLiteral({
|
|
1015
|
+
kind: 3,
|
|
1016
|
+
v: ctx.random()
|
|
1017
|
+
}),
|
|
1018
|
+
ABS: ([a]) => {
|
|
1019
|
+
const n = numArg(a);
|
|
1020
|
+
return numLiteral(n.kind === 0 ? {
|
|
1021
|
+
kind: 0,
|
|
1022
|
+
v: n.v < 0n ? -n.v : n.v
|
|
1023
|
+
} : n.kind === 1 ? {
|
|
1024
|
+
kind: 1,
|
|
1025
|
+
v: BigDecimal.abs(n.v)
|
|
1026
|
+
} : n.kind === 2 ? {
|
|
1027
|
+
kind: 2,
|
|
1028
|
+
v: Math.abs(n.v)
|
|
1029
|
+
} : {
|
|
1030
|
+
kind: 3,
|
|
1031
|
+
v: Math.abs(n.v)
|
|
1032
|
+
});
|
|
1033
|
+
},
|
|
1034
|
+
CEIL: ([a]) => roundNum(a, "ceil", Math.ceil),
|
|
1035
|
+
FLOOR: ([a]) => roundNum(a, "floor", Math.floor),
|
|
1036
|
+
ROUND: ([a]) => roundNum(a, "half-ceil", xpathRound),
|
|
1037
|
+
CONCAT: (args) => {
|
|
1038
|
+
const lits = args.map(stringArg);
|
|
1039
|
+
const first = lits[0];
|
|
1040
|
+
const sameLang = first !== void 0 && first.language !== "" && lits.every((l) => l.language === first.language && l.direction === first.direction);
|
|
1041
|
+
const value = lits.map((l) => l.value).join("");
|
|
1042
|
+
return sameLang ? stringLike(value, first) : simple(value);
|
|
1043
|
+
},
|
|
1044
|
+
SUBSTR: ([s, start, len]) => {
|
|
1045
|
+
const str = stringArg(s);
|
|
1046
|
+
const chars = codepoints(str.value);
|
|
1047
|
+
const st = toNumber(numArg(start));
|
|
1048
|
+
const from = xpathRound(st);
|
|
1049
|
+
let to = Infinity;
|
|
1050
|
+
if (len !== void 0) to = from + xpathRound(toNumber(numArg(len)));
|
|
1051
|
+
if (Number.isNaN(from) || Number.isNaN(to)) return stringLike("", str);
|
|
1052
|
+
const out = chars.filter((_, i) => i + 1 >= from && i + 1 < to).join("");
|
|
1053
|
+
return stringLike(out, str);
|
|
1054
|
+
},
|
|
1055
|
+
STRLEN: ([a]) => intLiteral(codepoints(stringArg(a).value).length),
|
|
1056
|
+
REPLACE: (args) => {
|
|
1057
|
+
const [s, pattern, replacement] = args;
|
|
1058
|
+
const str = stringArg(s);
|
|
1059
|
+
const re = compileRegex(simpleArg(pattern).value, regexFlags(args, 3), true);
|
|
1060
|
+
if (re.test("")) {
|
|
1061
|
+
re.lastIndex = 0;
|
|
1062
|
+
return fail("REPLACE pattern matches the empty string");
|
|
1063
|
+
}
|
|
1064
|
+
re.lastIndex = 0;
|
|
1065
|
+
const repl = simpleArg(replacement).value.replace(/\\(\$|\\)|\$/g, (m, esc) => esc === "$" ? "$$" : esc === "\\" ? "\\" : m);
|
|
1066
|
+
return stringLike(str.value.replace(re, repl), str);
|
|
1067
|
+
},
|
|
1068
|
+
UCASE: ([a]) => {
|
|
1069
|
+
const s = stringArg(a);
|
|
1070
|
+
return stringLike(s.value.toUpperCase(), s);
|
|
1071
|
+
},
|
|
1072
|
+
LCASE: ([a]) => {
|
|
1073
|
+
const s = stringArg(a);
|
|
1074
|
+
return stringLike(s.value.toLowerCase(), s);
|
|
1075
|
+
},
|
|
1076
|
+
ENCODE_FOR_URI: ([a]) => simple(encodeForUri(stringArg(a).value)),
|
|
1077
|
+
CONTAINS: (args) => {
|
|
1078
|
+
const [x, y] = compatibleStrings(args);
|
|
1079
|
+
return bool(x.value.includes(y.value));
|
|
1080
|
+
},
|
|
1081
|
+
STRSTARTS: (args) => {
|
|
1082
|
+
const [x, y] = compatibleStrings(args);
|
|
1083
|
+
return bool(x.value.startsWith(y.value));
|
|
1084
|
+
},
|
|
1085
|
+
STRENDS: (args) => {
|
|
1086
|
+
const [x, y] = compatibleStrings(args);
|
|
1087
|
+
return bool(x.value.endsWith(y.value));
|
|
1088
|
+
},
|
|
1089
|
+
STRBEFORE: (args) => around(args, (x, _y, i) => x.slice(0, i)),
|
|
1090
|
+
STRAFTER: (args) => around(args, (x, y, i) => x.slice(i + y.length)),
|
|
1091
|
+
YEAR: ([a]) => {
|
|
1092
|
+
const p = parseDateParts(a);
|
|
1093
|
+
return p.year !== void 0 ? intLiteral(BigInt(p.year)) : fail("No year");
|
|
1094
|
+
},
|
|
1095
|
+
MONTH: ([a]) => {
|
|
1096
|
+
const p = parseDateParts(a);
|
|
1097
|
+
return p.month !== void 0 ? intLiteral(Number(p.month)) : fail("No month");
|
|
1098
|
+
},
|
|
1099
|
+
DAY: ([a]) => {
|
|
1100
|
+
const p = parseDateParts(a);
|
|
1101
|
+
return p.day !== void 0 ? intLiteral(Number(p.day)) : fail("No day");
|
|
1102
|
+
},
|
|
1103
|
+
HOURS: ([a]) => {
|
|
1104
|
+
const p = parseDateParts(a);
|
|
1105
|
+
return p.hours !== void 0 ? intLiteral(Number(p.hours)) : fail("No hours");
|
|
1106
|
+
},
|
|
1107
|
+
MINUTES: ([a]) => {
|
|
1108
|
+
const p = parseDateParts(a);
|
|
1109
|
+
return p.minutes !== void 0 ? intLiteral(Number(p.minutes)) : fail("No minutes");
|
|
1110
|
+
},
|
|
1111
|
+
SECONDS: ([a]) => {
|
|
1112
|
+
const p = parseDateParts(a);
|
|
1113
|
+
if (p.seconds === void 0) return fail("No seconds");
|
|
1114
|
+
return numLiteral({
|
|
1115
|
+
kind: 1,
|
|
1116
|
+
v: BigDecimal.fromStringUnsafe(p.seconds)
|
|
1117
|
+
});
|
|
1118
|
+
},
|
|
1119
|
+
TIMEZONE: ([a]) => {
|
|
1120
|
+
const p = parseDateParts(a);
|
|
1121
|
+
if (p.tz === void 0) return fail("No timezone");
|
|
1122
|
+
return new Literal(timezoneDuration(p.tz), dt.dayTimeDuration);
|
|
1123
|
+
},
|
|
1124
|
+
TZ: ([a]) => simple(parseDateParts(a).tz ?? ""),
|
|
1125
|
+
NOW: (_, ctx) => new Literal(ctx.now.toISOString(), dt.dateTime),
|
|
1126
|
+
UUID: (_, ctx) => namedNode(`urn:uuid:${uuid(ctx.random)}`),
|
|
1127
|
+
STRUUID: (_, ctx) => simple(uuid(ctx.random)),
|
|
1128
|
+
MD5: hashFn(md5),
|
|
1129
|
+
SHA1: hashFn(sha1),
|
|
1130
|
+
SHA256: hashFn(sha256),
|
|
1131
|
+
SHA384: hashFn(sha384),
|
|
1132
|
+
SHA512: hashFn(sha512),
|
|
1133
|
+
STRLANG: ([s, lang]) => {
|
|
1134
|
+
const lex = simpleArg(s).value;
|
|
1135
|
+
const tag = simpleArg(lang).value;
|
|
1136
|
+
if (!LANG_TAG.test(tag)) return fail("Invalid language tag");
|
|
1137
|
+
return literal(lex, tag);
|
|
1138
|
+
},
|
|
1139
|
+
STRLANGDIR: ([s, lang, dir]) => {
|
|
1140
|
+
const lex = simpleArg(s).value;
|
|
1141
|
+
const tag = simpleArg(lang).value;
|
|
1142
|
+
const d = simpleArg(dir).value;
|
|
1143
|
+
if (!LANG_TAG.test(tag)) return fail("Invalid language tag");
|
|
1144
|
+
if (d !== "ltr" && d !== "rtl") return fail("Invalid base direction");
|
|
1145
|
+
return literal(lex, {
|
|
1146
|
+
language: tag,
|
|
1147
|
+
direction: d
|
|
1148
|
+
});
|
|
1149
|
+
},
|
|
1150
|
+
STRDT: ([s, datatype]) => {
|
|
1151
|
+
const lex = simpleArg(s).value;
|
|
1152
|
+
if (!isNamedNode(datatype)) return fail("STRDT requires an IRI");
|
|
1153
|
+
if (datatype.value === dt.langString.value || datatype.value === dt.dirLangString.value) return fail("STRDT cannot create language-tagged strings");
|
|
1154
|
+
return new Literal(lex, datatype);
|
|
1155
|
+
},
|
|
1156
|
+
SAMETERM: ([a, b]) => bool(a.key === b.key),
|
|
1157
|
+
ISIRI: ([a]) => bool(isNamedNode(a)),
|
|
1158
|
+
ISURI: ([a]) => bool(isNamedNode(a)),
|
|
1159
|
+
ISBLANK: ([a]) => bool(isBlankNode(a)),
|
|
1160
|
+
ISLITERAL: ([a]) => bool(isLiteral(a)),
|
|
1161
|
+
ISNUMERIC: ([a]) => bool(isNumeric(a)),
|
|
1162
|
+
HASLANG: ([a]) => bool(isLiteral(a) && a.language !== ""),
|
|
1163
|
+
HASLANGDIR: ([a]) => bool(isLiteral(a) && a.direction !== void 0),
|
|
1164
|
+
REGEX: (args) => {
|
|
1165
|
+
const [s, pattern] = args;
|
|
1166
|
+
const str = stringArg(s);
|
|
1167
|
+
const re = compileRegex(simpleArg(pattern).value, regexFlags(args, 2));
|
|
1168
|
+
return bool(re.test(str.value));
|
|
1169
|
+
},
|
|
1170
|
+
ISTRIPLE: ([a]) => bool(isTriple(a)),
|
|
1171
|
+
TRIPLE: ([s, p, o]) => {
|
|
1172
|
+
if (!isNamedNode(s) && !isBlankNode(s)) return fail("TRIPLE subject must be an IRI or blank node");
|
|
1173
|
+
if (!isNamedNode(p)) return fail("TRIPLE predicate must be an IRI");
|
|
1174
|
+
return triple(s, p, o);
|
|
1175
|
+
},
|
|
1176
|
+
SUBJECT: ([a]) => isTriple(a) ? a.subject : fail("Not a triple term"),
|
|
1177
|
+
PREDICATE: ([a]) => isTriple(a) ? a.predicate : fail("Not a triple term"),
|
|
1178
|
+
OBJECT: ([a]) => isTriple(a) ? a.object : fail("Not a triple term")
|
|
1179
|
+
};
|
|
1180
|
+
const XSD_INTEGER_TYPE_NAMES = [
|
|
1181
|
+
"integer",
|
|
1182
|
+
"long",
|
|
1183
|
+
"int",
|
|
1184
|
+
"short",
|
|
1185
|
+
"byte",
|
|
1186
|
+
"nonNegativeInteger",
|
|
1187
|
+
"positiveInteger",
|
|
1188
|
+
"nonPositiveInteger",
|
|
1189
|
+
"negativeInteger",
|
|
1190
|
+
"unsignedLong",
|
|
1191
|
+
"unsignedInt",
|
|
1192
|
+
"unsignedShort",
|
|
1193
|
+
"unsignedByte"
|
|
1194
|
+
].map((t) => XSD + t);
|
|
1195
|
+
const XSD_INTEGER_TYPES = setOf(XSD_INTEGER_TYPE_NAMES);
|
|
1196
|
+
/** The XPath string form of a float/double (`fn:string`). */
|
|
1197
|
+
const xpathDoubleString = (v) => {
|
|
1198
|
+
if (Number.isNaN(v)) return "NaN";
|
|
1199
|
+
if (!Number.isFinite(v)) return v > 0 ? "INF" : "-INF";
|
|
1200
|
+
const abs = Math.abs(v);
|
|
1201
|
+
if (abs === 0) return Object.is(v, -0) ? "-0" : "0";
|
|
1202
|
+
if (abs >= 1e-6 && abs < 1e6) return String(v);
|
|
1203
|
+
return canonicalDouble(v);
|
|
1204
|
+
};
|
|
1205
|
+
const castString = (a) => {
|
|
1206
|
+
if (isNamedNode(a)) return a.value;
|
|
1207
|
+
const l = literalArg(a);
|
|
1208
|
+
const numeric$1 = numeric(l);
|
|
1209
|
+
if (Option.isSome(numeric$1)) {
|
|
1210
|
+
const n = numeric$1.value;
|
|
1211
|
+
if (n.kind === 0) return n.v.toString();
|
|
1212
|
+
if (n.kind === 1) {
|
|
1213
|
+
const s = canonicalDecimal(n.v);
|
|
1214
|
+
return s.endsWith(".0") ? s.slice(0, -2) : s;
|
|
1215
|
+
}
|
|
1216
|
+
return xpathDoubleString(n.v);
|
|
1217
|
+
}
|
|
1218
|
+
if (l.datatype.value === dt.boolean.value && isValidLexical(l.datatype.value, l.value)) return l.value === "true" || l.value === "1" ? "true" : "false";
|
|
1219
|
+
return l.value;
|
|
1220
|
+
};
|
|
1221
|
+
const castBoolean = ({ l, numeric, isBool, boolValue, fromString, lexical }) => {
|
|
1222
|
+
if (isBool) return bool(boolValue);
|
|
1223
|
+
if (Option.isSome(numeric)) return bool(ebv(l));
|
|
1224
|
+
if (fromString && /^(true|false|1|0)$/.test(lexical)) return bool(lexical === "true" || lexical === "1");
|
|
1225
|
+
return fail("Invalid boolean cast");
|
|
1226
|
+
};
|
|
1227
|
+
const integerOf = (n) => {
|
|
1228
|
+
if (n.kind === 0) return n.v;
|
|
1229
|
+
if (n.kind === 1) return BigInt(BigDecimal.format(BigDecimal.truncate(n.v)).split(".")[0] ?? "0");
|
|
1230
|
+
if (!Number.isFinite(n.v)) return fail("Cannot cast NaN/INF to integer");
|
|
1231
|
+
return BigInt(Math.trunc(n.v));
|
|
1232
|
+
};
|
|
1233
|
+
const castInteger = (source) => {
|
|
1234
|
+
const { target, dtNode, numeric, isBool, boolValue, fromString, lexical } = source;
|
|
1235
|
+
const value = isBool ? boolValue ? 1n : 0n : Option.isSome(numeric) ? integerOf(numeric.value) : fromString && /^[+-]?\d+$/.test(lexical) ? BigInt(lexical) : fail("Invalid integer cast");
|
|
1236
|
+
const lit = new Literal(value.toString(), dtNode);
|
|
1237
|
+
return isValidLexical(target, lit.value) ? lit : fail("Integer out of range");
|
|
1238
|
+
};
|
|
1239
|
+
const castDecimal = ({ numeric, isBool, boolValue, fromString, lexical }) => {
|
|
1240
|
+
if (isBool) return numLiteral({
|
|
1241
|
+
kind: 1,
|
|
1242
|
+
v: BigDecimal.fromBigInt(boolValue ? 1n : 0n)
|
|
1243
|
+
});
|
|
1244
|
+
if (Option.isSome(numeric)) {
|
|
1245
|
+
const n = numeric.value;
|
|
1246
|
+
if (n.kind === 0 || n.kind === 1) return numLiteral({
|
|
1247
|
+
kind: 1,
|
|
1248
|
+
v: toDecimal(n)
|
|
1249
|
+
});
|
|
1250
|
+
if (!Number.isFinite(n.v)) return fail("Cannot cast NaN/INF to decimal");
|
|
1251
|
+
return numLiteral({
|
|
1252
|
+
kind: 1,
|
|
1253
|
+
v: BigDecimal.fromNumberUnsafe(n.v)
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
if (fromString && /^[+-]?(\d+(\.\d*)?|\.\d+)$/.test(lexical)) return numLiteral({
|
|
1257
|
+
kind: 1,
|
|
1258
|
+
v: BigDecimal.fromStringUnsafe(lexical.replace(/\.$/, ""))
|
|
1259
|
+
});
|
|
1260
|
+
return fail("Invalid decimal cast");
|
|
1261
|
+
};
|
|
1262
|
+
const floatingOf = (lexical) => lexical === "INF" || lexical === "+INF" ? Infinity : lexical === "-INF" ? -Infinity : Number(lexical);
|
|
1263
|
+
const castFloating = (source) => {
|
|
1264
|
+
const { target, numeric, isBool, boolValue, fromString, lexical } = source;
|
|
1265
|
+
const kind = target === dt.double.value ? 3 : 2;
|
|
1266
|
+
const value = isBool ? boolValue ? 1 : 0 : Option.isSome(numeric) ? toNumber(numeric.value) : fromString && isValidLexical(target, lexical) ? floatingOf(lexical) : fail("Invalid floating point cast");
|
|
1267
|
+
return numLiteral({
|
|
1268
|
+
kind,
|
|
1269
|
+
v: kind === 2 ? Math.fround(value) : value
|
|
1270
|
+
});
|
|
1271
|
+
};
|
|
1272
|
+
const castDateTime = ({ target, dtNode, l, fromString, lexical }) => {
|
|
1273
|
+
if (l.datatype.value === target && isValidLexical(target, l.value)) return l;
|
|
1274
|
+
if (l.datatype.value === `http://www.w3.org/2001/XMLSchema#date` && isValidLexical(l.datatype.value, l.value)) {
|
|
1275
|
+
const m = /^(-?\d+-\d\d-\d\d)(.*)$/.exec(l.value);
|
|
1276
|
+
if (m === null) return fail("Invalid date");
|
|
1277
|
+
return new Literal(`${m[1]}T00:00:00${m[2]}`, dtNode);
|
|
1278
|
+
}
|
|
1279
|
+
if (fromString && isValidLexical(target, lexical)) return new Literal(lexical, dtNode);
|
|
1280
|
+
return fail("Invalid dateTime cast");
|
|
1281
|
+
};
|
|
1282
|
+
/** Other XSD types: from strings with a valid lexical form, or the same type. */
|
|
1283
|
+
const castOther = ({ target, dtNode, l, fromString, lexical }) => {
|
|
1284
|
+
if (l.datatype.value === target) return l;
|
|
1285
|
+
if (fromString && isValidLexical(target, lexical)) return new Literal(lexical, dtNode);
|
|
1286
|
+
return fail(`Invalid cast to ${target}`);
|
|
1287
|
+
};
|
|
1288
|
+
const castTo = (target, a) => {
|
|
1289
|
+
if (target === "http://www.w3.org/2001/XMLSchema#string") {
|
|
1290
|
+
if (isLiteral(a) && a.language !== "") return fail("Cannot cast a language-tagged string");
|
|
1291
|
+
return simple(castString(a));
|
|
1292
|
+
}
|
|
1293
|
+
const l = literalArg(a);
|
|
1294
|
+
if (l.language !== "") return fail("Cannot cast a language-tagged string");
|
|
1295
|
+
const isBool = l.datatype.value === dt.boolean.value && isValidLexical(l.datatype.value, l.value);
|
|
1296
|
+
const source = {
|
|
1297
|
+
target,
|
|
1298
|
+
dtNode: namedNode(target),
|
|
1299
|
+
l,
|
|
1300
|
+
numeric: numeric(l),
|
|
1301
|
+
isBool,
|
|
1302
|
+
boolValue: isBool && (l.value === "true" || l.value === "1"),
|
|
1303
|
+
fromString: isSimpleString(l),
|
|
1304
|
+
lexical: l.value.trim()
|
|
1305
|
+
};
|
|
1306
|
+
if (target === dt.boolean.value) return castBoolean(source);
|
|
1307
|
+
if (XSD_INTEGER_TYPES.has(target)) return castInteger(source);
|
|
1308
|
+
if (target === dt.decimal.value) return castDecimal(source);
|
|
1309
|
+
if (target === dt.double.value || target === dt.float.value) return castFloating(source);
|
|
1310
|
+
if (target === dt.dateTime.value) return castDateTime(source);
|
|
1311
|
+
return castOther(source);
|
|
1312
|
+
};
|
|
1313
|
+
const CASTABLE = setOf([
|
|
1314
|
+
XSD_STRING,
|
|
1315
|
+
`${XSD}boolean`,
|
|
1316
|
+
`${XSD}decimal`,
|
|
1317
|
+
`${XSD}float`,
|
|
1318
|
+
`${XSD}double`,
|
|
1319
|
+
`${XSD}dateTime`,
|
|
1320
|
+
`${XSD}date`,
|
|
1321
|
+
`${XSD}time`,
|
|
1322
|
+
...XSD_INTEGER_TYPE_NAMES
|
|
1323
|
+
]);
|
|
1324
|
+
/**
|
|
1325
|
+
* Whether an IRI is an XSD constructor function (cast) supported by this
|
|
1326
|
+
* implementation.
|
|
1327
|
+
*
|
|
1328
|
+
* @since 0.1.0
|
|
1329
|
+
* @category casts
|
|
1330
|
+
*/
|
|
1331
|
+
const isCast = (iri) => CASTABLE.has(iri);
|
|
1332
|
+
/**
|
|
1333
|
+
* Casts a term to an XSD datatype (`xsd:integer(?x)` etc.). Throws an
|
|
1334
|
+
* expression error when the cast is not possible.
|
|
1335
|
+
*
|
|
1336
|
+
* @since 0.1.0
|
|
1337
|
+
* @category casts
|
|
1338
|
+
*/
|
|
1339
|
+
const cast = (datatype, term) => {
|
|
1340
|
+
if (isBlankNode(term) || isTriple(term)) return fail("Cannot cast");
|
|
1341
|
+
if (isNamedNode(term) && datatype !== "http://www.w3.org/2001/XMLSchema#string") return fail("Cannot cast an IRI");
|
|
1342
|
+
return castTo(datatype, term);
|
|
1343
|
+
};
|
|
1344
|
+
export { orderCompare as C, negate as S, dt as _, compileRegex as a, fail as b, registry as c, TRUE as d, arithmetic as f, compareTerms as g, compareLiterals as h, cast as i, EvalFailure as l, catchEvalFailure as m, Functions_exports as n, error as o, bool as p, builtIns as r, isCast as s, ExpressionError as t, FALSE as u, ebv as v, simple as w, isNumeric as x, equals as y };
|
|
1345
|
+
|
|
1346
|
+
//# sourceMappingURL=Functions-AvjNcId_.mjs.map
|