@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2251 -2
- package/dist/Algebra-CGG4oae3.mjs +433 -0
- package/dist/Algebra-CGG4oae3.mjs.map +1 -0
- package/dist/Algebra-uGsIEOUA.d.mts +446 -0
- package/dist/Ast-CPRZmBvk.mjs +552 -0
- package/dist/Ast-CPRZmBvk.mjs.map +1 -0
- package/dist/Ast-vcw2W-lf.d.mts +827 -0
- package/dist/Bindings-Ck3m7JRC.mjs +249 -0
- package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
- package/dist/Bindings-DiKpBd7f.d.mts +153 -0
- package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
- package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
- package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
- package/dist/ClientFormats-CXomkXLV.mjs +73 -0
- package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
- package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
- package/dist/Csv2Json-DynEcwCh.mjs +194 -0
- package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
- package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
- package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
- package/dist/Dataset-BlmlcI7J.mjs +782 -0
- package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
- package/dist/Dataset-DS3ESOcO.d.mts +426 -0
- package/dist/Dataset.d.mts +2 -0
- package/dist/Dataset.mjs +1 -0
- package/dist/Datatype-CxMpamHC.d.mts +212 -0
- package/dist/Datatype-DQvkNkiH.mjs +1001 -0
- package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
- package/dist/Dialect-8ChFj5EX.d.mts +113 -0
- package/dist/Dialect-CzVH38uo.mjs +165 -0
- package/dist/Dialect-CzVH38uo.mjs.map +1 -0
- package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
- package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
- package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
- package/dist/DublinCore-AnwqxRx6.mjs +137 -0
- package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
- package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
- package/dist/Engine-CYPB3g4h.d.mts +144 -0
- package/dist/Engine-DF8PN7g-.mjs +872 -0
- package/dist/Engine-DF8PN7g-.mjs.map +1 -0
- package/dist/Errors-CMdV1RhU.mjs +37 -0
- package/dist/Errors-CMdV1RhU.mjs.map +1 -0
- package/dist/Errors-u2bDjUeM.d.mts +30 -0
- package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
- package/dist/Evaluator-DOY2-guC.mjs +281 -0
- package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
- package/dist/Exif-CpqniYQd.d.mts +78 -0
- package/dist/Exif-DjkCfEB-.mjs +89 -0
- package/dist/Exif-DjkCfEB-.mjs.map +1 -0
- package/dist/Expression-BIMMvduQ.mjs +230 -0
- package/dist/Expression-BIMMvduQ.mjs.map +1 -0
- package/dist/Expression-W8A9cyX7.d.mts +89 -0
- package/dist/Extract-Bop85jES.mjs +220 -0
- package/dist/Extract-Bop85jES.mjs.map +1 -0
- package/dist/Extract-C_pCvuTC.d.mts +88 -0
- package/dist/Federation-BcNrozc1.d.mts +52 -0
- package/dist/Federation-CHScBkaK.mjs +130 -0
- package/dist/Federation-CHScBkaK.mjs.map +1 -0
- package/dist/Functions-AvjNcId_.mjs +1346 -0
- package/dist/Functions-AvjNcId_.mjs.map +1 -0
- package/dist/Functions-OQJZP-F6.d.mts +111 -0
- package/dist/Generator-C52mmq01.d.mts +50 -0
- package/dist/Generator-D3utCJC7.mjs +205 -0
- package/dist/Generator-D3utCJC7.mjs.map +1 -0
- package/dist/Grammar-CPlSxGH6.mjs +200 -0
- package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
- package/dist/Grammar-CRhnRoCu.d.mts +148 -0
- package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
- package/dist/Grammar-mQ8CgE1M.mjs +258 -0
- package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
- package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
- package/dist/GraphStore-DvbqwKy1.mjs +212 -0
- package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
- package/dist/Iri-BB8Ks-BF.d.mts +84 -0
- package/dist/Iri-Cr92gsQV.mjs +232 -0
- package/dist/Iri-Cr92gsQV.mjs.map +1 -0
- package/dist/Iri.d.mts +2 -0
- package/dist/Iri.mjs +1 -0
- package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
- package/dist/Isomorphism-DInKnWIy.mjs +390 -0
- package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
- package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
- package/dist/Isomorphism.d.mts +2 -0
- package/dist/Isomorphism.mjs +1 -0
- package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
- package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
- package/dist/JsonLd-DobFrQNa.d.mts +242 -0
- package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
- package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
- package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
- package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
- package/dist/LanguageTag.d.mts +2 -0
- package/dist/LanguageTag.mjs +1 -0
- package/dist/Lexical-Cg0JHrf6.mjs +243 -0
- package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
- package/dist/Lexical-D3zySYVS.d.mts +163 -0
- package/dist/Manifest-B6xf6mUc.mjs +148 -0
- package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
- package/dist/Manifest-DQUMRBFr.d.mts +98 -0
- package/dist/Mapping-BgG74x3U.d.mts +63 -0
- package/dist/Mapping-Dc1ZGirk.mjs +259 -0
- package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
- package/dist/Mcp-1DwTTKOK.mjs +48 -0
- package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
- package/dist/Mcp-d-pX9erx.d.mts +25 -0
- package/dist/Message-CK_DGQuu.mjs +95 -0
- package/dist/Message-CK_DGQuu.mjs.map +1 -0
- package/dist/Message-fIvTJSXM.d.mts +49 -0
- package/dist/Metadata-BbffwGDZ.mjs +445 -0
- package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
- package/dist/Metadata-CEt3yc1-.d.mts +901 -0
- package/dist/Metadata-D4HsQNXr.mjs +1273 -0
- package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
- package/dist/Metadata-nzS7QKRj.d.mts +350 -0
- package/dist/Model-DaMmxurZ.d.mts +293 -0
- package/dist/Model-DlPzRYhF.mjs +528 -0
- package/dist/Model-DlPzRYhF.mjs.map +1 -0
- package/dist/N3-BzyV-KIH.mjs +974 -0
- package/dist/N3-BzyV-KIH.mjs.map +1 -0
- package/dist/N3-DSLnonDn.d.mts +100 -0
- package/dist/NQuads-C1VBOJ3-.mjs +117 -0
- package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
- package/dist/NQuads-FjFZikFg.d.mts +76 -0
- package/dist/NTriples-D-kLSEAf.mjs +120 -0
- package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
- package/dist/NTriples-D34OspfW.d.mts +76 -0
- package/dist/Namespace-ClTUO_ya.d.mts +42 -0
- package/dist/Namespace-DHFIsORd.mjs +75 -0
- package/dist/Namespace-DHFIsORd.mjs.map +1 -0
- package/dist/Namespace.d.mts +2 -0
- package/dist/Namespace.mjs +1 -0
- package/dist/Namespaces-Bz85vpjW.mjs +235 -0
- package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
- package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
- package/dist/Optimizer-BWWQRQPY.mjs +168 -0
- package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
- package/dist/Optimizer-DUpUow6k.d.mts +26 -0
- package/dist/Options-BLBGL4HE.mjs +72 -0
- package/dist/Options-BLBGL4HE.mjs.map +1 -0
- package/dist/Options-BommQwP9.d.mts +127 -0
- package/dist/Packet-CA76wVX3.mjs +197 -0
- package/dist/Packet-CA76wVX3.mjs.map +1 -0
- package/dist/Packet-Cy5g6XuW.d.mts +130 -0
- package/dist/Parser-p1Gyr0QN.d.mts +85 -0
- package/dist/Parser-xARsOWXk.mjs +1317 -0
- package/dist/Parser-xARsOWXk.mjs.map +1 -0
- package/dist/Path-B20Yp8KE.mjs +284 -0
- package/dist/Path-B20Yp8KE.mjs.map +1 -0
- package/dist/Path-DRB8e-Zn.d.mts +181 -0
- package/dist/Pdf-B9RZn--8.d.mts +77 -0
- package/dist/Pdf-CKK6dkZn.mjs +89 -0
- package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
- package/dist/PdfA-CUjSuntT.d.mts +109 -0
- package/dist/PdfA-CleOhuL6.mjs +124 -0
- package/dist/PdfA-CleOhuL6.mjs.map +1 -0
- package/dist/Photoshop-CiHo80qV.mjs +233 -0
- package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
- package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
- package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
- package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
- package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
- package/dist/PrefixMap.d.mts +2 -0
- package/dist/PrefixMap.mjs +1 -0
- package/dist/Processor-CMmecFsb.mjs +198 -0
- package/dist/Processor-CMmecFsb.mjs.map +1 -0
- package/dist/Processor-FJPvO0CB.d.mts +435 -0
- package/dist/Protocol-BA7OkNgp.mjs +202 -0
- package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
- package/dist/Protocol-DlSoiIKB.d.mts +108 -0
- package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
- package/dist/Query-D9A6LOpP.mjs +364 -0
- package/dist/Query-D9A6LOpP.mjs.map +1 -0
- package/dist/Query-KqSkTYyG.d.mts +96 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
- package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
- package/dist/RdfJs-D6-49XB5.mjs +86 -0
- package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
- package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
- package/dist/RdfJs.d.mts +2 -0
- package/dist/RdfJs.mjs +1 -0
- package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
- package/dist/RdfJson-BNocgW4f.mjs +548 -0
- package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
- package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
- package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
- package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
- package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
- package/dist/Rdfs-CyY2wVHI.mjs +167 -0
- package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
- package/dist/Rdfs.d.mts +2 -0
- package/dist/Rdfs.mjs +1 -0
- package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
- package/dist/Reasoner-Cw90zrjv.mjs +798 -0
- package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
- package/dist/Reification-BmN4EfnM.d.mts +40 -0
- package/dist/Reification-dpqQvjDE.mjs +82 -0
- package/dist/Reification-dpqQvjDE.mjs.map +1 -0
- package/dist/Reification.d.mts +2 -0
- package/dist/Reification.mjs +1 -0
- package/dist/Report-XHs8htzK.mjs +121 -0
- package/dist/Report-XHs8htzK.mjs.map +1 -0
- package/dist/Report-hcXsc_19.d.mts +115 -0
- package/dist/Resource-B1cI8FyJ.d.mts +218 -0
- package/dist/Resource-sIEeNh15.mjs +374 -0
- package/dist/Resource-sIEeNh15.mjs.map +1 -0
- package/dist/Resource.d.mts +2 -0
- package/dist/Resource.mjs +1 -0
- package/dist/Results-BVNEC-Wt.d.mts +277 -0
- package/dist/Results-peJjGA2V.mjs +621 -0
- package/dist/Results-peJjGA2V.mjs.map +1 -0
- package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
- package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
- package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
- package/dist/SemAct-CDchtk49.d.mts +96 -0
- package/dist/SemAct-CmyT4yI8.mjs +118 -0
- package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
- package/dist/Serialization-DP9H5bYQ.mjs +514 -0
- package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
- package/dist/Serialization-Df8iVauT.d.mts +392 -0
- package/dist/Serialization.d.mts +2 -0
- package/dist/Serialization.mjs +1 -0
- package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
- package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
- package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
- package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
- package/dist/ShExC-Ctf-06CL.d.mts +67 -0
- package/dist/ShExC-DJbB19i3.mjs +1181 -0
- package/dist/ShExC-DJbB19i3.mjs.map +1 -0
- package/dist/ShExError-BeYFD9rv.d.mts +61 -0
- package/dist/ShExError-CVtq2NnM.mjs +64 -0
- package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
- package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
- package/dist/ShExJ-COiPd9Xw.mjs +532 -0
- package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
- package/dist/ShExR-ByR4mCh-.mjs +480 -0
- package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
- package/dist/ShExR-CqONNNBz.d.mts +40 -0
- package/dist/ShapeMap-C422pxKl.d.mts +140 -0
- package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
- package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
- package/dist/Shapes-18GjfyBV.mjs +597 -0
- package/dist/Shapes-18GjfyBV.mjs.map +1 -0
- package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
- package/dist/Sparql-BiYFMSpl.mjs +29 -0
- package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
- package/dist/Sparql-DecpWTPh.d.mts +97 -0
- package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
- package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
- package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
- package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
- package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
- package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
- package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
- package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
- package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
- package/dist/Store-D0jmVfb3.d.mts +166 -0
- package/dist/Store-DH3Ow1GO.mjs +162 -0
- package/dist/Store-DH3Ow1GO.mjs.map +1 -0
- package/dist/Structure-BjMo4Bkc.mjs +334 -0
- package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
- package/dist/Structure-n4CmDiab.d.mts +63 -0
- package/dist/Table-BGgm9nbM.mjs +538 -0
- package/dist/Table-BGgm9nbM.mjs.map +1 -0
- package/dist/Table-C3reiVrb.d.mts +261 -0
- package/dist/Term-B_4ezyXq.d.mts +619 -0
- package/dist/Term-CFLG1qu4.mjs +991 -0
- package/dist/Term-CFLG1qu4.mjs.map +1 -0
- package/dist/Term.d.mts +2 -0
- package/dist/Term.mjs +1 -0
- package/dist/TermCodec-CDZiEztW.mjs +397 -0
- package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
- package/dist/TermCodec-_03bDXr0.d.mts +209 -0
- package/dist/TermCodec.d.mts +2 -0
- package/dist/TermCodec.mjs +1 -0
- package/dist/TermJson-BOPe0yve.d.mts +232 -0
- package/dist/TermJson-FAg3lvjl.mjs +142 -0
- package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
- package/dist/TermJson.d.mts +2 -0
- package/dist/TermJson.mjs +1 -0
- package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
- package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
- package/dist/TermSchema-DBO6MroX.d.mts +6 -0
- package/dist/Testing-B-aPCpmu.mjs +63 -0
- package/dist/Testing-B-aPCpmu.mjs.map +1 -0
- package/dist/Testing-CF6s8P3O.d.mts +53 -0
- package/dist/Tiff-CR-2QeSI.d.mts +148 -0
- package/dist/Tiff-DlsOlZPM.mjs +169 -0
- package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
- package/dist/Tools-7MdRKccr.d.mts +583 -0
- package/dist/Tools-ryxphZbI.mjs +329 -0
- package/dist/Tools-ryxphZbI.mjs.map +1 -0
- package/dist/Translate-B0YKKANS.d.mts +37 -0
- package/dist/Translate-gzWPq0Ia.mjs +308 -0
- package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
- package/dist/Translation-DC9rLm2y.mjs +1535 -0
- package/dist/Translation-DC9rLm2y.mjs.map +1 -0
- package/dist/Translation-K4L9XBqX.d.mts +103 -0
- package/dist/TriG-BkqtqZ6Y.mjs +125 -0
- package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
- package/dist/TriG-xDjdDatp.d.mts +86 -0
- package/dist/Turtle-Bv1_bisW.d.mts +85 -0
- package/dist/Turtle-CZVUOtwl.mjs +133 -0
- package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
- package/dist/ValidationReport-DBdJshW5.mjs +285 -0
- package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
- package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
- package/dist/Validator-227ff9Rn.d.mts +179 -0
- package/dist/Validator-BzXMKDeJ.mjs +1162 -0
- package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
- package/dist/Validator-Dl8cih5V.d.mts +207 -0
- package/dist/Validator-DmUfMbpL.mjs +568 -0
- package/dist/Validator-DmUfMbpL.mjs.map +1 -0
- package/dist/Vocab-DceKywpq.mjs +168 -0
- package/dist/Vocab-DceKywpq.mjs.map +1 -0
- package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
- package/dist/Vocab-Do56UgBX.d.mts +81 -0
- package/dist/Vocab-TfpWG1Ne.mjs +118 -0
- package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
- package/dist/Vocab.d.mts +2 -0
- package/dist/Vocab.mjs +1 -0
- package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
- package/dist/Xml-B7iihYCS.mjs +976 -0
- package/dist/Xml-B7iihYCS.mjs.map +1 -0
- package/dist/Xml-CmfHS7SW.d.mts +267 -0
- package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
- package/dist/Xmp-DCGN9pOD.mjs +307 -0
- package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
- package/dist/XmpBasic-CP38jpR_.mjs +73 -0
- package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
- package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
- package/dist/XmpMM-BfL_TgJF.mjs +73 -0
- package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
- package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
- package/dist/XmpRights-BKPtoI5L.mjs +73 -0
- package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
- package/dist/XmpRights-CaALZQz2.d.mts +63 -0
- package/dist/Xsd-Cdgx5zRB.mjs +405 -0
- package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
- package/dist/Xsd-D2elNhSm.d.mts +187 -0
- package/dist/Xsd.d.mts +2 -0
- package/dist/Xsd.mjs +1 -0
- package/dist/accessors-CEjaojuQ.mjs +28 -0
- package/dist/accessors-CEjaojuQ.mjs.map +1 -0
- package/dist/codec-Lb2T96rv.d.mts +20 -0
- package/dist/codec-QNo7IdJF.mjs +389 -0
- package/dist/codec-QNo7IdJF.mjs.map +1 -0
- package/dist/csvw/Csv2Json.d.mts +2 -0
- package/dist/csvw/Csv2Json.mjs +1 -0
- package/dist/csvw/Csv2Rdf.d.mts +2 -0
- package/dist/csvw/Csv2Rdf.mjs +1 -0
- package/dist/csvw/Datatype.d.mts +2 -0
- package/dist/csvw/Datatype.mjs +1 -0
- package/dist/csvw/Metadata.d.mts +2 -0
- package/dist/csvw/Metadata.mjs +1 -0
- package/dist/csvw/Processor.d.mts +2 -0
- package/dist/csvw/Processor.mjs +1 -0
- package/dist/csvw/Report.d.mts +2 -0
- package/dist/csvw/Report.mjs +1 -0
- package/dist/csvw/Table.d.mts +2 -0
- package/dist/csvw/Table.mjs +1 -0
- package/dist/csvw/index.d.mts +8 -0
- package/dist/csvw/index.mjs +8 -0
- package/dist/index-Cms2TYfC.d.mts +16 -0
- package/dist/index-Ct8xFmRs.d.mts +7 -0
- package/dist/index-D4QFwOjm.d.mts +28 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.mjs +17 -0
- package/dist/jsonld/DocumentLoader.d.mts +2 -0
- package/dist/jsonld/DocumentLoader.mjs +1 -0
- package/dist/jsonld/JsonLd.d.mts +2 -0
- package/dist/jsonld/JsonLd.mjs +1 -0
- package/dist/jsonld/JsonLdError.d.mts +2 -0
- package/dist/jsonld/JsonLdError.mjs +1 -0
- package/dist/jsonld/index.d.mts +4 -0
- package/dist/jsonld/index.mjs +4 -0
- package/dist/lists-D-OpQ0Ir.mjs +77 -0
- package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
- package/dist/loop-D5-gNx9K.mjs +21 -0
- package/dist/loop-D5-gNx9K.mjs.map +1 -0
- package/dist/loop-DZ2hXlr_.mjs +21 -0
- package/dist/loop-DZ2hXlr_.mjs.map +1 -0
- package/dist/n3/Isomorphism.d.mts +2 -0
- package/dist/n3/Isomorphism.mjs +1 -0
- package/dist/n3/Mapping.d.mts +2 -0
- package/dist/n3/Mapping.mjs +1 -0
- package/dist/n3/Model.d.mts +2 -0
- package/dist/n3/Model.mjs +1 -0
- package/dist/n3/N3.d.mts +2 -0
- package/dist/n3/N3.mjs +1 -0
- package/dist/n3/Reasoner.d.mts +2 -0
- package/dist/n3/Reasoner.mjs +2 -0
- package/dist/n3/Vocab.d.mts +2 -0
- package/dist/n3/Vocab.mjs +1 -0
- package/dist/n3/index.d.mts +7 -0
- package/dist/n3/index.mjs +7 -0
- package/dist/ntriples/Grammar.d.mts +2 -0
- package/dist/ntriples/Grammar.mjs +1 -0
- package/dist/ntriples/Lexical.d.mts +2 -0
- package/dist/ntriples/Lexical.mjs +1 -0
- package/dist/ntriples/NQuads.d.mts +2 -0
- package/dist/ntriples/NQuads.mjs +1 -0
- package/dist/ntriples/NTriples.d.mts +2 -0
- package/dist/ntriples/NTriples.mjs +1 -0
- package/dist/ntriples/index.d.mts +5 -0
- package/dist/ntriples/index.mjs +5 -0
- package/dist/rdfjson/RdfJson.d.mts +2 -0
- package/dist/rdfjson/RdfJson.mjs +1 -0
- package/dist/rdfjson/index.d.mts +2 -0
- package/dist/rdfjson/index.mjs +1 -0
- package/dist/rdfxml/RdfXml.d.mts +2 -0
- package/dist/rdfxml/RdfXml.mjs +1 -0
- package/dist/rdfxml/Xml.d.mts +2 -0
- package/dist/rdfxml/Xml.mjs +1 -0
- package/dist/rdfxml/index.d.mts +3 -0
- package/dist/rdfxml/index.mjs +3 -0
- package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
- package/dist/serialize-96KBvKaf.mjs +1463 -0
- package/dist/serialize-96KBvKaf.mjs.map +1 -0
- package/dist/serialize-DsoXdM6n.d.mts +37 -0
- package/dist/shacl/Message.d.mts +2 -0
- package/dist/shacl/Message.mjs +1 -0
- package/dist/shacl/Path.d.mts +2 -0
- package/dist/shacl/Path.mjs +1 -0
- package/dist/shacl/Shapes.d.mts +2 -0
- package/dist/shacl/Shapes.mjs +1 -0
- package/dist/shacl/Sparql.d.mts +2 -0
- package/dist/shacl/Sparql.mjs +1 -0
- package/dist/shacl/ValidationReport.d.mts +2 -0
- package/dist/shacl/ValidationReport.mjs +1 -0
- package/dist/shacl/Validator.d.mts +2 -0
- package/dist/shacl/Validator.mjs +1 -0
- package/dist/shacl/Vocabulary.d.mts +2 -0
- package/dist/shacl/Vocabulary.mjs +1 -0
- package/dist/shacl/index.d.mts +9 -0
- package/dist/shacl/index.mjs +8 -0
- package/dist/shex/SemAct.d.mts +2 -0
- package/dist/shex/SemAct.mjs +1 -0
- package/dist/shex/ShExC.d.mts +2 -0
- package/dist/shex/ShExC.mjs +1 -0
- package/dist/shex/ShExError.d.mts +2 -0
- package/dist/shex/ShExError.mjs +1 -0
- package/dist/shex/ShExJ.d.mts +2 -0
- package/dist/shex/ShExJ.mjs +2 -0
- package/dist/shex/ShExR.d.mts +2 -0
- package/dist/shex/ShExR.mjs +1 -0
- package/dist/shex/ShapeMap.d.mts +2 -0
- package/dist/shex/ShapeMap.mjs +1 -0
- package/dist/shex/Structure.d.mts +2 -0
- package/dist/shex/Structure.mjs +2 -0
- package/dist/shex/Validator.d.mts +2 -0
- package/dist/shex/Validator.mjs +4 -0
- package/dist/shex/index.d.mts +9 -0
- package/dist/shex/index.mjs +9 -0
- package/dist/sparql/Algebra.d.mts +2 -0
- package/dist/sparql/Algebra.mjs +1 -0
- package/dist/sparql/Ast.d.mts +2 -0
- package/dist/sparql/Ast.mjs +1 -0
- package/dist/sparql/Bindings.d.mts +2 -0
- package/dist/sparql/Bindings.mjs +1 -0
- package/dist/sparql/ClientErrors.d.mts +2 -0
- package/dist/sparql/ClientErrors.mjs +1 -0
- package/dist/sparql/ClientFormats.d.mts +2 -0
- package/dist/sparql/ClientFormats.mjs +1 -0
- package/dist/sparql/Engine.d.mts +2 -0
- package/dist/sparql/Engine.mjs +1 -0
- package/dist/sparql/Errors.d.mts +2 -0
- package/dist/sparql/Errors.mjs +1 -0
- package/dist/sparql/Expression.d.mts +2 -0
- package/dist/sparql/Expression.mjs +1 -0
- package/dist/sparql/Federation.d.mts +2 -0
- package/dist/sparql/Federation.mjs +1 -0
- package/dist/sparql/Functions.d.mts +2 -0
- package/dist/sparql/Functions.mjs +1 -0
- package/dist/sparql/Generator.d.mts +2 -0
- package/dist/sparql/Generator.mjs +1 -0
- package/dist/sparql/GraphStore.d.mts +2 -0
- package/dist/sparql/GraphStore.mjs +1 -0
- package/dist/sparql/Optimizer.d.mts +2 -0
- package/dist/sparql/Optimizer.mjs +1 -0
- package/dist/sparql/Options.d.mts +2 -0
- package/dist/sparql/Options.mjs +1 -0
- package/dist/sparql/Parser.d.mts +2 -0
- package/dist/sparql/Parser.mjs +1 -0
- package/dist/sparql/Protocol.d.mts +2 -0
- package/dist/sparql/Protocol.mjs +1 -0
- package/dist/sparql/ProtocolErrors.d.mts +2 -0
- package/dist/sparql/ProtocolErrors.mjs +1 -0
- package/dist/sparql/QueryBuilder.d.mts +2 -0
- package/dist/sparql/QueryBuilder.mjs +1 -0
- package/dist/sparql/Results.d.mts +2 -0
- package/dist/sparql/Results.mjs +1 -0
- package/dist/sparql/ResultsStream.d.mts +2 -0
- package/dist/sparql/ResultsStream.mjs +1 -0
- package/dist/sparql/ServerFormats.d.mts +2 -0
- package/dist/sparql/ServerFormats.mjs +1 -0
- package/dist/sparql/ServiceDescription.d.mts +2 -0
- package/dist/sparql/ServiceDescription.mjs +1 -0
- package/dist/sparql/SparqlClient.d.mts +2 -0
- package/dist/sparql/SparqlClient.mjs +1 -0
- package/dist/sparql/SparqlServer.d.mts +2 -0
- package/dist/sparql/SparqlServer.mjs +1 -0
- package/dist/sparql/Store.d.mts +2 -0
- package/dist/sparql/Store.mjs +1 -0
- package/dist/sparql/TermSchema.d.mts +3 -0
- package/dist/sparql/TermSchema.mjs +2 -0
- package/dist/sparql/Testing.d.mts +2 -0
- package/dist/sparql/Testing.mjs +1 -0
- package/dist/sparql/Translate.d.mts +2 -0
- package/dist/sparql/Translate.mjs +1 -0
- package/dist/sparql/ai/Mcp.d.mts +2 -0
- package/dist/sparql/ai/Mcp.mjs +1 -0
- package/dist/sparql/ai/Tools.d.mts +2 -0
- package/dist/sparql/ai/Tools.mjs +1 -0
- package/dist/sparql/ai/index.d.mts +3 -0
- package/dist/sparql/ai/index.mjs +3 -0
- package/dist/sparql/index.d.mts +30 -0
- package/dist/sparql/index.mjs +29 -0
- package/dist/sparql/shacl/Evaluator.d.mts +2 -0
- package/dist/sparql/shacl/Evaluator.mjs +1 -0
- package/dist/sparql/shacl/Query.d.mts +2 -0
- package/dist/sparql/shacl/Query.mjs +1 -0
- package/dist/sparql/shacl/index.d.mts +3 -0
- package/dist/sparql/shacl/index.mjs +3 -0
- package/dist/sparql/sql/Dialect.d.mts +2 -0
- package/dist/sparql/sql/Dialect.mjs +1 -0
- package/dist/sparql/sql/SqlStore.d.mts +2 -0
- package/dist/sparql/sql/SqlStore.mjs +1 -0
- package/dist/sparql/sql/Translation.d.mts +2 -0
- package/dist/sparql/sql/Translation.mjs +1 -0
- package/dist/sparql/sql/index.d.mts +4 -0
- package/dist/sparql/sql/index.mjs +4 -0
- package/dist/stringMap-D5YIpYtR.mjs +38 -0
- package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
- package/dist/tokens-C6BzeodQ.mjs +24 -0
- package/dist/tokens-C6BzeodQ.mjs.map +1 -0
- package/dist/turtle/Grammar.d.mts +3 -0
- package/dist/turtle/Grammar.mjs +3 -0
- package/dist/turtle/Manifest.d.mts +2 -0
- package/dist/turtle/Manifest.mjs +1 -0
- package/dist/turtle/TriG.d.mts +2 -0
- package/dist/turtle/TriG.mjs +1 -0
- package/dist/turtle/Turtle.d.mts +2 -0
- package/dist/turtle/Turtle.mjs +1 -0
- package/dist/turtle/index.d.mts +5 -0
- package/dist/turtle/index.mjs +5 -0
- package/dist/xmp/DublinCore.d.mts +2 -0
- package/dist/xmp/DublinCore.mjs +1 -0
- package/dist/xmp/Exif.d.mts +2 -0
- package/dist/xmp/Exif.mjs +1 -0
- package/dist/xmp/Extract.d.mts +2 -0
- package/dist/xmp/Extract.mjs +1 -0
- package/dist/xmp/Metadata.d.mts +2 -0
- package/dist/xmp/Metadata.mjs +1 -0
- package/dist/xmp/Namespaces.d.mts +2 -0
- package/dist/xmp/Namespaces.mjs +1 -0
- package/dist/xmp/Packet.d.mts +2 -0
- package/dist/xmp/Packet.mjs +1 -0
- package/dist/xmp/Pdf.d.mts +2 -0
- package/dist/xmp/Pdf.mjs +1 -0
- package/dist/xmp/PdfA.d.mts +2 -0
- package/dist/xmp/PdfA.mjs +1 -0
- package/dist/xmp/Photoshop.d.mts +2 -0
- package/dist/xmp/Photoshop.mjs +1 -0
- package/dist/xmp/Tiff.d.mts +2 -0
- package/dist/xmp/Tiff.mjs +1 -0
- package/dist/xmp/Xmp.d.mts +2 -0
- package/dist/xmp/Xmp.mjs +3 -0
- package/dist/xmp/XmpBasic.d.mts +2 -0
- package/dist/xmp/XmpBasic.mjs +1 -0
- package/dist/xmp/XmpMM.d.mts +2 -0
- package/dist/xmp/XmpMM.mjs +1 -0
- package/dist/xmp/XmpRights.d.mts +2 -0
- package/dist/xmp/XmpRights.mjs +1 -0
- package/dist/xmp/index.d.mts +15 -0
- package/dist/xmp/index.mjs +15 -0
- package/package.json +195 -3
- package/src/Dataset.ts +1085 -0
- package/src/Iri.ts +322 -0
- package/src/Isomorphism.ts +319 -0
- package/src/LanguageTag.ts +98 -0
- package/src/Namespace.ts +100 -0
- package/src/PrefixMap.ts +117 -0
- package/src/RdfJs.ts +146 -0
- package/src/Rdfs.ts +241 -0
- package/src/Reification.ts +103 -0
- package/src/Resource.ts +873 -0
- package/src/Serialization.ts +775 -0
- package/src/Term.ts +1300 -0
- package/src/TermCodec.ts +505 -0
- package/src/TermJson.ts +313 -0
- package/src/Vocab.ts +161 -0
- package/src/Xsd.ts +573 -0
- package/src/csvw/Csv2Json.ts +265 -0
- package/src/csvw/Csv2Rdf.ts +268 -0
- package/src/csvw/Datatype.ts +589 -0
- package/src/csvw/Metadata.ts +1523 -0
- package/src/csvw/Processor.ts +276 -0
- package/src/csvw/Report.ts +135 -0
- package/src/csvw/Table.ts +759 -0
- package/src/csvw/index.ts +22 -0
- package/src/csvw/internal/dateFormat.ts +202 -0
- package/src/csvw/internal/json.ts +104 -0
- package/src/csvw/internal/numberFormat.ts +369 -0
- package/src/csvw/internal/object.ts +23 -0
- package/src/csvw/internal/uriTemplate.ts +130 -0
- package/src/csvw/internal/url.ts +93 -0
- package/src/csvw/internal/vocab.ts +282 -0
- package/src/index.ts +40 -0
- package/src/internal/arbitrary.ts +148 -0
- package/src/internal/loop.ts +24 -0
- package/src/internal/pending.ts +20 -0
- package/src/internal/textDecoder.ts +183 -0
- package/src/jsonld/DocumentLoader.ts +512 -0
- package/src/jsonld/JsonLd.ts +847 -0
- package/src/jsonld/JsonLdError.ts +105 -0
- package/src/jsonld/index.ts +13 -0
- package/src/jsonld/internal/compact.ts +852 -0
- package/src/jsonld/internal/context.ts +781 -0
- package/src/jsonld/internal/expand.ts +614 -0
- package/src/jsonld/internal/flatten.ts +243 -0
- package/src/jsonld/internal/frame.ts +559 -0
- package/src/jsonld/internal/iri.ts +52 -0
- package/src/jsonld/internal/json.ts +19 -0
- package/src/jsonld/internal/linkHeader.ts +60 -0
- package/src/jsonld/internal/rdf.ts +481 -0
- package/src/jsonld/internal/util.ts +367 -0
- package/src/n3/Isomorphism.ts +476 -0
- package/src/n3/Mapping.ts +332 -0
- package/src/n3/Model.ts +696 -0
- package/src/n3/N3.ts +237 -0
- package/src/n3/Reasoner.ts +568 -0
- package/src/n3/Vocab.ts +111 -0
- package/src/n3/index.ts +21 -0
- package/src/n3/internal/builtins.ts +668 -0
- package/src/n3/internal/guards.ts +23 -0
- package/src/n3/internal/lists.ts +106 -0
- package/src/n3/internal/loop.ts +28 -0
- package/src/n3/internal/parser.ts +1032 -0
- package/src/n3/internal/writer.ts +344 -0
- package/src/ntriples/Grammar.ts +317 -0
- package/src/ntriples/Lexical.ts +321 -0
- package/src/ntriples/NQuads.ts +140 -0
- package/src/ntriples/NTriples.ts +143 -0
- package/src/ntriples/index.ts +14 -0
- package/src/ntriples/internal/codec.ts +229 -0
- package/src/ntriples/internal/lineParser.ts +326 -0
- package/src/ntriples/internal/loop.ts +14 -0
- package/src/rdfjson/RdfJson.ts +806 -0
- package/src/rdfjson/index.ts +9 -0
- package/src/rdfjson/internal/json.ts +19 -0
- package/src/rdfxml/RdfXml.ts +1408 -0
- package/src/rdfxml/Xml.ts +419 -0
- package/src/rdfxml/index.ts +11 -0
- package/src/rdfxml/internal/chars.ts +73 -0
- package/src/rdfxml/internal/loop.ts +24 -0
- package/src/rdfxml/internal/parser.ts +1265 -0
- package/src/shacl/Message.ts +102 -0
- package/src/shacl/Path.ts +483 -0
- package/src/shacl/Shapes.ts +913 -0
- package/src/shacl/Sparql.ts +128 -0
- package/src/shacl/ValidationReport.ts +438 -0
- package/src/shacl/Validator.ts +1156 -0
- package/src/shacl/Vocabulary.ts +180 -0
- package/src/shacl/index.ts +22 -0
- package/src/shacl/internal/compare.ts +128 -0
- package/src/shacl/internal/regex.ts +56 -0
- package/src/shex/SemAct.ts +197 -0
- package/src/shex/ShExC.ts +415 -0
- package/src/shex/ShExError.ts +71 -0
- package/src/shex/ShExJ.ts +893 -0
- package/src/shex/ShExR.ts +640 -0
- package/src/shex/ShapeMap.ts +385 -0
- package/src/shex/Structure.ts +467 -0
- package/src/shex/Validator.ts +395 -0
- package/src/shex/index.ts +24 -0
- package/src/shex/internal/engine.ts +682 -0
- package/src/shex/internal/iterate.ts +14 -0
- package/src/shex/internal/json.ts +12 -0
- package/src/shex/internal/lexer.ts +56 -0
- package/src/shex/internal/nodeConstraint.ts +368 -0
- package/src/shex/internal/shexcLexer.ts +387 -0
- package/src/shex/internal/shexcParser.ts +1312 -0
- package/src/shex/internal/tokens.ts +41 -0
- package/src/shex/internal/xpathRegex.ts +290 -0
- package/src/sparql/Algebra.ts +914 -0
- package/src/sparql/Ast.ts +1344 -0
- package/src/sparql/Bindings.ts +272 -0
- package/src/sparql/ClientErrors.ts +156 -0
- package/src/sparql/ClientFormats.ts +70 -0
- package/src/sparql/Engine.ts +699 -0
- package/src/sparql/Errors.ts +30 -0
- package/src/sparql/Expression.ts +360 -0
- package/src/sparql/Federation.ts +187 -0
- package/src/sparql/Functions.ts +689 -0
- package/src/sparql/Generator.ts +426 -0
- package/src/sparql/GraphStore.ts +341 -0
- package/src/sparql/Optimizer.ts +230 -0
- package/src/sparql/Options.ts +191 -0
- package/src/sparql/Parser.ts +173 -0
- package/src/sparql/Protocol.ts +342 -0
- package/src/sparql/ProtocolErrors.ts +113 -0
- package/src/sparql/QueryBuilder.ts +953 -0
- package/src/sparql/Results.ts +844 -0
- package/src/sparql/ResultsStream.ts +771 -0
- package/src/sparql/ServerFormats.ts +75 -0
- package/src/sparql/ServiceDescription.ts +130 -0
- package/src/sparql/SparqlClient.ts +947 -0
- package/src/sparql/SparqlServer.ts +528 -0
- package/src/sparql/Store.ts +311 -0
- package/src/sparql/TermSchema.ts +20 -0
- package/src/sparql/Testing.ts +114 -0
- package/src/sparql/Translate.ts +407 -0
- package/src/sparql/ai/Mcp.ts +43 -0
- package/src/sparql/ai/Tools.ts +481 -0
- package/src/sparql/ai/index.ts +11 -0
- package/src/sparql/index.ts +64 -0
- package/src/sparql/internal/evaluator.ts +947 -0
- package/src/sparql/internal/hash.ts +418 -0
- package/src/sparql/internal/json.ts +12 -0
- package/src/sparql/internal/lexer.ts +488 -0
- package/src/sparql/internal/loop.ts +24 -0
- package/src/sparql/internal/parser.ts +2215 -0
- package/src/sparql/internal/prefetch.ts +46 -0
- package/src/sparql/internal/stringMap.ts +39 -0
- package/src/sparql/internal/textResults.ts +226 -0
- package/src/sparql/internal/values.ts +550 -0
- package/src/sparql/shacl/Evaluator.ts +478 -0
- package/src/sparql/shacl/Query.ts +574 -0
- package/src/sparql/shacl/index.ts +12 -0
- package/src/sparql/sql/Dialect.ts +246 -0
- package/src/sparql/sql/SqlStore.ts +1080 -0
- package/src/sparql/sql/Translation.ts +1898 -0
- package/src/sparql/sql/index.ts +17 -0
- package/src/sparql/sql/internal/encoding.ts +313 -0
- package/src/turtle/Grammar.ts +286 -0
- package/src/turtle/Manifest.ts +215 -0
- package/src/turtle/TriG.ts +158 -0
- package/src/turtle/Turtle.ts +166 -0
- package/src/turtle/index.ts +14 -0
- package/src/turtle/internal/loop.ts +23 -0
- package/src/turtle/internal/parse.ts +112 -0
- package/src/turtle/internal/parser.ts +1303 -0
- package/src/turtle/internal/serialize.ts +79 -0
- package/src/turtle/internal/streamWriter.ts +128 -0
- package/src/turtle/internal/writer.ts +898 -0
- package/src/xmp/DublinCore.ts +147 -0
- package/src/xmp/Exif.ts +109 -0
- package/src/xmp/Extract.ts +351 -0
- package/src/xmp/Metadata.ts +703 -0
- package/src/xmp/Namespaces.ts +228 -0
- package/src/xmp/Packet.ts +297 -0
- package/src/xmp/Pdf.ts +99 -0
- package/src/xmp/PdfA.ts +280 -0
- package/src/xmp/Photoshop.ts +275 -0
- package/src/xmp/Tiff.ts +196 -0
- package/src/xmp/Xmp.ts +430 -0
- package/src/xmp/XmpBasic.ts +90 -0
- package/src/xmp/XmpMM.ts +82 -0
- package/src/xmp/XmpRights.ts +83 -0
- package/src/xmp/index.ts +36 -0
- package/src/xmp/internal/accessors.ts +72 -0
- package/src/xmp/internal/xml.ts +63 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { T as Term, d as NamedNode, l as Literal } from "./Term-B_4ezyXq.mjs";
|
|
2
|
+
import "./index-Cms2TYfC.mjs";
|
|
3
|
+
declare namespace Message_d_exports {
|
|
4
|
+
export { display, format, localName, substitute, variables };
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* A human-readable string for a term inside a message: the lexical form of
|
|
8
|
+
* literals, the IRI of named nodes, `_:label` for blank nodes and the
|
|
9
|
+
* N-Triples-like form of triple terms.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
* @category formatting
|
|
13
|
+
*/
|
|
14
|
+
declare const display: (term: Term) => string;
|
|
15
|
+
/**
|
|
16
|
+
* The variable names referenced by a template, in order of appearance.
|
|
17
|
+
*
|
|
18
|
+
* @since 0.1.0
|
|
19
|
+
* @category queries
|
|
20
|
+
*/
|
|
21
|
+
declare const variables: (template: string) => ReadonlyArray<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Replaces the `{?name}` / `{$name}` placeholders of a template string.
|
|
24
|
+
* Placeholders whose variable `lookup` does not know are left unchanged.
|
|
25
|
+
*
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
* @category substitution
|
|
28
|
+
*/
|
|
29
|
+
declare const format: (template: string, lookup: (name: string) => Term | undefined) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Substitutes the placeholders of a message literal, keeping its language
|
|
32
|
+
* tag (or datatype).
|
|
33
|
+
*
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
* @category substitution
|
|
36
|
+
*/
|
|
37
|
+
declare const substitute: (message: Literal, lookup: (name: string) => Term | undefined) => Literal;
|
|
38
|
+
/**
|
|
39
|
+
* The local name of an IRI: the longest NCName at its end (SHACL §6.2.1).
|
|
40
|
+
* SPARQL-based constraint components derive their parameter names (and
|
|
41
|
+
* thus the pre-bound variable names) this way. Returns an empty string when
|
|
42
|
+
* the IRI does not end with an NCName.
|
|
43
|
+
*
|
|
44
|
+
* @since 0.1.0
|
|
45
|
+
* @category utils
|
|
46
|
+
*/
|
|
47
|
+
declare const localName: (iri: NamedNode | string) => string;
|
|
48
|
+
export { substitute as a, localName as i, display as n, variables as o, format as r, Message_d_exports as t };
|
|
49
|
+
//# sourceMappingURL=Message-fIvTJSXM.d.mts.map
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode, K as isTriple, N as isBlankNode, O as defaultGraph, T as blankNode, Y as literal, c as NamedNode, d as Quad, z as isLiteral } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { D as mutate, E as match, I as subjects, c as empty$1, k as objects } from "./Dataset-BlmlcI7J.mjs";
|
|
4
|
+
import { m as RDF } from "./Namespaces-Bz85vpjW.mjs";
|
|
5
|
+
import * as Arr from "effect/Array";
|
|
6
|
+
import { dual } from "effect/Function";
|
|
7
|
+
import * as HashSet from "effect/HashSet";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import * as Predicate from "effect/Predicate";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as Order from "effect/Order";
|
|
13
|
+
import * as Result from "effect/Result";
|
|
14
|
+
// src/xmp/Metadata.ts
|
|
15
|
+
/**
|
|
16
|
+
* The XMP data model (ISO 16684-1 §6) on top of an RDF `Dataset`: one
|
|
17
|
+
* resource described by properties whose values are simple values,
|
|
18
|
+
* structures or arrays (`rdf:Bag`, `rdf:Seq`, `rdf:Alt`), each of which may
|
|
19
|
+
* carry qualifiers.
|
|
20
|
+
*
|
|
21
|
+
* `fromDataset` reads the RDF an XMP packet parses to into this model and
|
|
22
|
+
* `toDataset` writes it back. Values are immutable; `set` and `remove`
|
|
23
|
+
* return a new `Metadata`. Properties, fields and qualifiers are
|
|
24
|
+
* `[iri, value]` entries. Their order carries no meaning in XMP, so
|
|
25
|
+
* `fromDataset` sorts them by IRI and the serializer writes them in entry
|
|
26
|
+
* order, making output deterministic.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
*/
|
|
30
|
+
var Metadata_exports = /* @__PURE__ */ __exportAll({
|
|
31
|
+
X_DEFAULT: () => X_DEFAULT,
|
|
32
|
+
XmpModelError: () => XmpModelError,
|
|
33
|
+
array: () => array,
|
|
34
|
+
bag: () => bag,
|
|
35
|
+
empty: () => empty,
|
|
36
|
+
fromDataset: () => fromDataset,
|
|
37
|
+
fromDatasetResult: () => fromDatasetResult,
|
|
38
|
+
get: () => get,
|
|
39
|
+
getItems: () => getItems,
|
|
40
|
+
getLocalized: () => getLocalized,
|
|
41
|
+
getText: () => getText,
|
|
42
|
+
isArray: () => isArray,
|
|
43
|
+
isSimple: () => isSimple,
|
|
44
|
+
isStruct: () => isStruct,
|
|
45
|
+
itemsOf: () => itemsOf,
|
|
46
|
+
languageAlternative: () => languageAlternative,
|
|
47
|
+
localizedOf: () => localizedOf,
|
|
48
|
+
lookup: () => lookup,
|
|
49
|
+
make: () => make,
|
|
50
|
+
remove: () => remove,
|
|
51
|
+
seq: () => seq,
|
|
52
|
+
set: () => set,
|
|
53
|
+
setLocalized: () => setLocalized,
|
|
54
|
+
struct: () => struct,
|
|
55
|
+
text: () => text,
|
|
56
|
+
textOf: () => textOf,
|
|
57
|
+
toDataset: () => toDataset,
|
|
58
|
+
uri: () => uri,
|
|
59
|
+
withQualifiers: () => withQualifiers
|
|
60
|
+
});
|
|
61
|
+
const RDF_VALUE = `${RDF}value`;
|
|
62
|
+
const RDF_TYPE = `${RDF}type`;
|
|
63
|
+
const MEMBER_RE = /^http:\/\/www\.w3\.org\/1999\/02\/22-rdf-syntax-ns#_([1-9][0-9]*)$/;
|
|
64
|
+
/**
|
|
65
|
+
* The `xml:lang` value of the default item of a language alternative.
|
|
66
|
+
*
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
* @category constants
|
|
69
|
+
*/
|
|
70
|
+
const X_DEFAULT = "x-default";
|
|
71
|
+
/**
|
|
72
|
+
* RDF that does not have the shape of the XMP data model: a cycle, a triple
|
|
73
|
+
* term, an array with non-member properties or a property given twice.
|
|
74
|
+
*
|
|
75
|
+
* @since 0.1.0
|
|
76
|
+
* @category errors
|
|
77
|
+
*/
|
|
78
|
+
var XmpModelError = class extends Schema.TaggedError()("XmpModelError", { message: Schema.String }) {};
|
|
79
|
+
/**
|
|
80
|
+
* Whether a value is a simple value.
|
|
81
|
+
*
|
|
82
|
+
* @since 0.1.0
|
|
83
|
+
* @category guards
|
|
84
|
+
*/
|
|
85
|
+
const isSimple = (value) => Predicate.isTagged(value, "Simple");
|
|
86
|
+
/**
|
|
87
|
+
* Whether a value is a structure.
|
|
88
|
+
*
|
|
89
|
+
* @since 0.1.0
|
|
90
|
+
* @category guards
|
|
91
|
+
*/
|
|
92
|
+
const isStruct = (value) => Predicate.isTagged(value, "Struct");
|
|
93
|
+
/**
|
|
94
|
+
* Whether a value is an array.
|
|
95
|
+
*
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
* @category guards
|
|
98
|
+
*/
|
|
99
|
+
const isArray = (value) => Predicate.isTagged(value, "Array");
|
|
100
|
+
/**
|
|
101
|
+
* The value of the entry with the given IRI.
|
|
102
|
+
*
|
|
103
|
+
* @since 0.1.0
|
|
104
|
+
* @category accessors
|
|
105
|
+
*/
|
|
106
|
+
const lookup = (entries, iri) => Option.map(Arr.findFirst(entries, ([key]) => key === iri), ([, value]) => value);
|
|
107
|
+
/** Replaces the entry with the same IRI in place, or appends it. */
|
|
108
|
+
const upsert = (entries, entry) => Arr.some(entries, ([key]) => key === entry[0]) ? Arr.map(entries, (e) => e[0] === entry[0] ? entry : e) : [...entries, entry];
|
|
109
|
+
const entriesOf = (entries) => Arr.reduce(entries, noEntries, upsert);
|
|
110
|
+
const noEntries = [];
|
|
111
|
+
/**
|
|
112
|
+
* Metadata with no properties, about the containing file (`rdf:about=""`).
|
|
113
|
+
*
|
|
114
|
+
* @since 0.1.0
|
|
115
|
+
* @category constructors
|
|
116
|
+
*/
|
|
117
|
+
const empty = {
|
|
118
|
+
about: "",
|
|
119
|
+
properties: noEntries
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Builds metadata from `[iri, value]` entries (a later entry replaces an
|
|
123
|
+
* earlier one with the same IRI).
|
|
124
|
+
*
|
|
125
|
+
* @since 0.1.0
|
|
126
|
+
* @category constructors
|
|
127
|
+
*/
|
|
128
|
+
const make = (properties, about = "") => ({
|
|
129
|
+
about,
|
|
130
|
+
properties: entriesOf(properties)
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* A text value, optionally with an `xml:lang` qualifier.
|
|
134
|
+
*
|
|
135
|
+
* @since 0.1.0
|
|
136
|
+
* @category constructors
|
|
137
|
+
*/
|
|
138
|
+
const text = (value, language) => ({
|
|
139
|
+
_tag: "Simple",
|
|
140
|
+
value,
|
|
141
|
+
isUri: false,
|
|
142
|
+
language: Option.fromNullishOr(language),
|
|
143
|
+
qualifiers: noEntries
|
|
144
|
+
});
|
|
145
|
+
/**
|
|
146
|
+
* A URI value, written with `rdf:resource`.
|
|
147
|
+
*
|
|
148
|
+
* @since 0.1.0
|
|
149
|
+
* @category constructors
|
|
150
|
+
*/
|
|
151
|
+
const uri = (value) => ({
|
|
152
|
+
_tag: "Simple",
|
|
153
|
+
value,
|
|
154
|
+
isUri: true,
|
|
155
|
+
language: Option.none(),
|
|
156
|
+
qualifiers: noEntries
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* A structure from `[iri, value]` field entries.
|
|
160
|
+
*
|
|
161
|
+
* @since 0.1.0
|
|
162
|
+
* @category constructors
|
|
163
|
+
*/
|
|
164
|
+
const struct = (fields) => ({
|
|
165
|
+
_tag: "Struct",
|
|
166
|
+
fields: entriesOf(fields),
|
|
167
|
+
qualifiers: noEntries
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* An array of the given form.
|
|
171
|
+
*
|
|
172
|
+
* @since 0.1.0
|
|
173
|
+
* @category constructors
|
|
174
|
+
*/
|
|
175
|
+
const array = (form, items) => ({
|
|
176
|
+
_tag: "Array",
|
|
177
|
+
form,
|
|
178
|
+
items: Arr.fromIterable(items),
|
|
179
|
+
qualifiers: noEntries
|
|
180
|
+
});
|
|
181
|
+
/**
|
|
182
|
+
* An unordered array (`rdf:Bag`) of text values.
|
|
183
|
+
*
|
|
184
|
+
* @since 0.1.0
|
|
185
|
+
* @category constructors
|
|
186
|
+
*/
|
|
187
|
+
const bag = (items) => array("Bag", Arr.map(Arr.fromIterable(items), (item) => text(item)));
|
|
188
|
+
/**
|
|
189
|
+
* An ordered array (`rdf:Seq`) of text values.
|
|
190
|
+
*
|
|
191
|
+
* @since 0.1.0
|
|
192
|
+
* @category constructors
|
|
193
|
+
*/
|
|
194
|
+
const seq = (items) => array("Seq", Arr.map(Arr.fromIterable(items), (item) => text(item)));
|
|
195
|
+
const isDefaultLanguage = ([language]) => language === X_DEFAULT;
|
|
196
|
+
/**
|
|
197
|
+
* A language alternative: an `rdf:Alt` of text values each qualified by
|
|
198
|
+
* `xml:lang`, from `[language, text]` pairs. An `x-default` entry is moved
|
|
199
|
+
* first, as ISO 16684-1 requires.
|
|
200
|
+
*
|
|
201
|
+
* @since 0.1.0
|
|
202
|
+
* @category constructors
|
|
203
|
+
*/
|
|
204
|
+
const languageAlternative = (entries) => {
|
|
205
|
+
const all = Arr.fromIterable(entries);
|
|
206
|
+
return array("Alt", Arr.map([...Arr.filter(all, isDefaultLanguage), ...Arr.filter(all, (entry) => !isDefaultLanguage(entry))], ([language, value]) => text(value, language)));
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Returns the value with the given qualifiers added (replacing qualifiers
|
|
210
|
+
* of the same IRI).
|
|
211
|
+
*
|
|
212
|
+
* @since 0.1.0
|
|
213
|
+
* @category combinators
|
|
214
|
+
*/
|
|
215
|
+
const withQualifiers = dual(2, (self, qualifiers) => ({
|
|
216
|
+
...self,
|
|
217
|
+
qualifiers: Arr.reduce(qualifiers, self.qualifiers, upsert)
|
|
218
|
+
}));
|
|
219
|
+
/**
|
|
220
|
+
* The value of a top-level property.
|
|
221
|
+
*
|
|
222
|
+
* @since 0.1.0
|
|
223
|
+
* @category accessors
|
|
224
|
+
*/
|
|
225
|
+
const get = dual(2, (self, iri) => lookup(self.properties, iri));
|
|
226
|
+
/**
|
|
227
|
+
* Sets a top-level property, keeping its position if it was already set.
|
|
228
|
+
*
|
|
229
|
+
* @since 0.1.0
|
|
230
|
+
* @category combinators
|
|
231
|
+
*/
|
|
232
|
+
const set = dual(3, (self, iri, value) => ({
|
|
233
|
+
about: self.about,
|
|
234
|
+
properties: upsert(self.properties, [iri, value])
|
|
235
|
+
}));
|
|
236
|
+
/**
|
|
237
|
+
* Removes a top-level property.
|
|
238
|
+
*
|
|
239
|
+
* @since 0.1.0
|
|
240
|
+
* @category combinators
|
|
241
|
+
*/
|
|
242
|
+
const remove = dual(2, (self, iri) => ({
|
|
243
|
+
about: self.about,
|
|
244
|
+
properties: Arr.filter(self.properties, ([key]) => key !== iri)
|
|
245
|
+
}));
|
|
246
|
+
const asSimple = Option.liftPredicate(isSimple);
|
|
247
|
+
const asArray = Option.liftPredicate(isArray);
|
|
248
|
+
/**
|
|
249
|
+
* The string of a simple (text or URI) value.
|
|
250
|
+
*
|
|
251
|
+
* @since 0.1.0
|
|
252
|
+
* @category accessors
|
|
253
|
+
*/
|
|
254
|
+
const textOf = (value) => Option.map(asSimple(value), (simple) => simple.value);
|
|
255
|
+
/**
|
|
256
|
+
* The strings of an array's simple items, in order; items that are not
|
|
257
|
+
* simple values are skipped.
|
|
258
|
+
*
|
|
259
|
+
* @since 0.1.0
|
|
260
|
+
* @category accessors
|
|
261
|
+
*/
|
|
262
|
+
const itemsOf = (value) => Option.map(asArray(value), (arr) => Arr.getSomes(Arr.map(arr.items, textOf)));
|
|
263
|
+
const hasLanguage = (language) => (item) => Option.exists(item.language, (l) => l.toLowerCase() === language.toLowerCase());
|
|
264
|
+
/**
|
|
265
|
+
* Looks up a language alternative the way ISO 16684-1 §8.2.2.4 describes:
|
|
266
|
+
* the item whose `xml:lang` matches `language` (case-insensitively), else
|
|
267
|
+
* the `x-default` item, else the first item. A simple value is its own
|
|
268
|
+
* only alternative.
|
|
269
|
+
*
|
|
270
|
+
* @since 0.1.0
|
|
271
|
+
* @category accessors
|
|
272
|
+
*/
|
|
273
|
+
const localizedOf = (value, language = X_DEFAULT) => {
|
|
274
|
+
if (isSimple(value)) return Option.some(value.value);
|
|
275
|
+
if (!isArray(value)) return Option.none();
|
|
276
|
+
const items = Arr.getSomes(Arr.map(value.items, asSimple));
|
|
277
|
+
return Option.map(Option.firstSomeOf([
|
|
278
|
+
Arr.findFirst(items, hasLanguage(language)),
|
|
279
|
+
Arr.findFirst(items, hasLanguage(X_DEFAULT)),
|
|
280
|
+
Arr.head(items)
|
|
281
|
+
]), (item) => item.value);
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* The string of a simple top-level property.
|
|
285
|
+
*
|
|
286
|
+
* @since 0.1.0
|
|
287
|
+
* @category accessors
|
|
288
|
+
*/
|
|
289
|
+
const getText = dual(2, (self, iri) => Option.flatMap(get(self, iri), textOf));
|
|
290
|
+
/**
|
|
291
|
+
* The strings of an array-valued top-level property.
|
|
292
|
+
*
|
|
293
|
+
* @since 0.1.0
|
|
294
|
+
* @category accessors
|
|
295
|
+
*/
|
|
296
|
+
const getItems = dual(2, (self, iri) => Option.flatMap(get(self, iri), itemsOf));
|
|
297
|
+
/**
|
|
298
|
+
* A language-alternative top-level property in the given language (see
|
|
299
|
+
* `localizedOf`).
|
|
300
|
+
*
|
|
301
|
+
* @since 0.1.0
|
|
302
|
+
* @category accessors
|
|
303
|
+
*/
|
|
304
|
+
const getLocalized = (self, iri, language = X_DEFAULT) => Option.flatMap(get(self, iri), (value) => localizedOf(value, language));
|
|
305
|
+
/**
|
|
306
|
+
* Sets one language of a language-alternative top-level property, keeping
|
|
307
|
+
* its other languages. Setting `x-default` puts that item first.
|
|
308
|
+
*
|
|
309
|
+
* @since 0.1.0
|
|
310
|
+
* @category combinators
|
|
311
|
+
*/
|
|
312
|
+
const setLocalized = (self, iri, value, language = X_DEFAULT) => {
|
|
313
|
+
const existing = Option.match(Option.flatMap(get(self, iri), asArray), {
|
|
314
|
+
onNone: () => [],
|
|
315
|
+
onSome: (alt) => Arr.getSomes(Arr.map(alt.items, asSimple))
|
|
316
|
+
});
|
|
317
|
+
const kept = Arr.map(Arr.filter(existing, (item) => !hasLanguage(language)(item)), (item) => [Option.getOrElse(item.language, () => X_DEFAULT), item.value]);
|
|
318
|
+
return set(self, iri, languageAlternative([...kept, [language, value]]));
|
|
319
|
+
};
|
|
320
|
+
const memberIndex = (iri) => Option.map(Option.fromNullishOr(MEMBER_RE.exec(iri)), (m) => Number(m[1]));
|
|
321
|
+
const ARRAY_FORMS = [
|
|
322
|
+
"Bag",
|
|
323
|
+
"Seq",
|
|
324
|
+
"Alt"
|
|
325
|
+
];
|
|
326
|
+
const arrayForm = (type) => isNamedNode(type) ? Arr.findFirst(ARRAY_FORMS, (form) => type.value === `${RDF}${form}`) : Option.none();
|
|
327
|
+
const byMember = Order.mapInput(Order.Number, (entry) => entry[0]);
|
|
328
|
+
const byPredicate = Order.mapInput(Order.String, (q) => q.predicate.value);
|
|
329
|
+
const isRdfValueQuad = (q) => q.predicate.value === RDF_VALUE;
|
|
330
|
+
var ModelReader = class {
|
|
331
|
+
dataset;
|
|
332
|
+
constructor(dataset) {
|
|
333
|
+
this.dataset = dataset;
|
|
334
|
+
}
|
|
335
|
+
fail(message) {
|
|
336
|
+
throw new XmpModelError({ message });
|
|
337
|
+
}
|
|
338
|
+
properties(subject) {
|
|
339
|
+
return match(this.dataset, { subject });
|
|
340
|
+
}
|
|
341
|
+
/** Reads entries from quads, rejecting a property given twice. */
|
|
342
|
+
entries(quads, visiting) {
|
|
343
|
+
const keys = Arr.map(quads, (q) => q.predicate.value);
|
|
344
|
+
Option.map(Arr.findFirst(keys, (key, i) => keys.indexOf(key) !== i), (key) => this.fail(`Property <${key}> is given more than once`));
|
|
345
|
+
return Arr.map(Arr.sort(quads, byPredicate), (q) => [q.predicate.value, this.value(q.object, visiting)]);
|
|
346
|
+
}
|
|
347
|
+
value(object, visiting) {
|
|
348
|
+
if (isLiteral(object)) return text(object.value, object.language === "" ? void 0 : object.language);
|
|
349
|
+
if (isNamedNode(object)) return uri(object.value);
|
|
350
|
+
if (isTriple(object)) return this.fail("XMP values cannot be triple terms");
|
|
351
|
+
if (HashSet.has(visiting, object.key)) return this.fail(`Blank node ${object.key} contains itself`);
|
|
352
|
+
return this.node(object, HashSet.add(visiting, object.key));
|
|
353
|
+
}
|
|
354
|
+
node(node, visiting) {
|
|
355
|
+
const quads = this.properties(node);
|
|
356
|
+
const value = Arr.findFirst(quads, isRdfValueQuad);
|
|
357
|
+
if (Option.isSome(value)) {
|
|
358
|
+
const others = Arr.filter(quads, (q) => !isRdfValueQuad(q));
|
|
359
|
+
return withQualifiers(this.value(value.value.object, visiting), this.entries(others, visiting));
|
|
360
|
+
}
|
|
361
|
+
const form = Option.flatMap(Arr.findFirst(quads, (q) => q.predicate.value === RDF_TYPE), (q) => arrayForm(q.object));
|
|
362
|
+
if (Option.isNone(form)) return struct(this.entries(quads, visiting));
|
|
363
|
+
const members = Arr.filterMap(quads, (q) => Option.match(memberIndex(q.predicate.value), {
|
|
364
|
+
onNone: () => q.predicate.value === RDF_TYPE ? Result.failVoid : this.fail(`Array ${node.key} has the non-member property <${q.predicate.value}>`),
|
|
365
|
+
onSome: (i) => Result.succeed([i, q])
|
|
366
|
+
}));
|
|
367
|
+
return array(form.value, Arr.map(Arr.sort(members, byMember), ([, q]) => this.value(q.object, visiting)));
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Every top-level description: a subject that is an IRI or a blank node no
|
|
371
|
+
* other triple refers to. ISO 16684-1 §7.4 requires all of them to describe
|
|
372
|
+
* the same resource; readers accept differing or absent `rdf:about` values
|
|
373
|
+
* and merge them.
|
|
374
|
+
*/
|
|
375
|
+
metadata() {
|
|
376
|
+
const referenced = HashSet.fromIterable(Arr.map(Arr.filter(objects(this.dataset), isBlankNode), (o) => o.key));
|
|
377
|
+
const roots = Arr.filter(subjects(this.dataset), (s) => {
|
|
378
|
+
if (isTriple(s)) return this.fail("XMP descriptions cannot be about triple terms");
|
|
379
|
+
return isNamedNode(s) || !HashSet.has(referenced, s.key);
|
|
380
|
+
});
|
|
381
|
+
const about = Option.getOrElse(Arr.findFirst(roots, (s) => isNamedNode(s) && s.value !== "" ? Option.some(s.value) : Option.none()), () => "");
|
|
382
|
+
return make(this.entries(Arr.flatMap(roots, (s) => this.properties(s)), HashSet.empty()), about);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
/**
|
|
386
|
+
* Reads the XMP data model from the RDF of an XMP packet, returning a
|
|
387
|
+
* `Result`. Typed literals keep only their lexical form (XMP has no
|
|
388
|
+
* datatypes); named graphs are ignored.
|
|
389
|
+
*
|
|
390
|
+
* @since 0.1.0
|
|
391
|
+
* @category conversions
|
|
392
|
+
*/
|
|
393
|
+
const fromDatasetResult = (dataset) => Result.try({
|
|
394
|
+
try: () => new ModelReader(dataset).metadata(),
|
|
395
|
+
catch: (e) => {
|
|
396
|
+
if (e instanceof XmpModelError) return e;
|
|
397
|
+
throw e;
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
/**
|
|
401
|
+
* Reads the XMP data model from the RDF of an XMP packet.
|
|
402
|
+
*
|
|
403
|
+
* @since 0.1.0
|
|
404
|
+
* @category conversions
|
|
405
|
+
*/
|
|
406
|
+
const fromDataset = (dataset) => Effect.suspend(() => Effect.fromResult(fromDatasetResult(dataset)));
|
|
407
|
+
const rdf = (local) => new NamedNode(`${RDF}${local}`);
|
|
408
|
+
const simpleTerm = (value) => value.isUri ? new NamedNode(value.value) : literal(value.value, Option.getOrUndefined(value.language));
|
|
409
|
+
/**
|
|
410
|
+
* The RDF of the XMP data model: the properties of one `rdf:about` subject,
|
|
411
|
+
* structures and arrays as blank nodes, and qualified values in the
|
|
412
|
+
* `rdf:value` form.
|
|
413
|
+
*
|
|
414
|
+
* @since 0.1.0
|
|
415
|
+
* @category conversions
|
|
416
|
+
*/
|
|
417
|
+
const toDataset = (self) => mutate(empty$1, (builder) => {
|
|
418
|
+
const emit = (s, p, o) => {
|
|
419
|
+
builder.add(new Quad(s, new NamedNode(p), o, defaultGraph));
|
|
420
|
+
};
|
|
421
|
+
const emitAll = (s, entries) => {
|
|
422
|
+
entries.forEach(([p, v]) => emit(s, p, term(v)));
|
|
423
|
+
};
|
|
424
|
+
const bare = (value) => {
|
|
425
|
+
if (isSimple(value)) return simpleTerm(value);
|
|
426
|
+
const node = blankNode();
|
|
427
|
+
if (isStruct(value)) emitAll(node, value.fields);
|
|
428
|
+
else {
|
|
429
|
+
emit(node, RDF_TYPE, rdf(value.form));
|
|
430
|
+
value.items.forEach((item, i) => emit(node, `${RDF}_${i + 1}`, term(item)));
|
|
431
|
+
}
|
|
432
|
+
return node;
|
|
433
|
+
};
|
|
434
|
+
const term = (value) => {
|
|
435
|
+
if (!Arr.isReadonlyArrayNonEmpty(value.qualifiers)) return bare(value);
|
|
436
|
+
const node = blankNode();
|
|
437
|
+
emit(node, RDF_VALUE, bare(value));
|
|
438
|
+
emitAll(node, value.qualifiers);
|
|
439
|
+
return node;
|
|
440
|
+
};
|
|
441
|
+
emitAll(new NamedNode(self.about), self.properties);
|
|
442
|
+
});
|
|
443
|
+
export { withQualifiers as A, set as C, textOf as D, text as E, toDataset as O, seq as S, struct as T, languageAlternative as _, bag as a, make as b, fromDatasetResult as c, getLocalized as d, getText as f, itemsOf as g, isStruct as h, array as i, uri as k, get as l, isSimple as m, X_DEFAULT as n, empty as o, isArray as p, XmpModelError as r, fromDataset as s, Metadata_exports as t, getItems as u, localizedOf as v, setLocalized as w, remove as x, lookup as y };
|
|
444
|
+
|
|
445
|
+
//# sourceMappingURL=Metadata-BbffwGDZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metadata-BbffwGDZ.mjs","names":["Term.isNamedNode","Dataset.match","Term.isLiteral","Term.isTriple","Dataset.objects","Term.isBlankNode","Dataset.subjects","Term.NamedNode","Term.literal","Dataset.mutate","Dataset.empty","Term.Quad","Term.defaultGraph","Term.blankNode"],"sources":["../src/xmp/Metadata.ts"],"sourcesContent":["/**\n * The XMP data model (ISO 16684-1 §6) on top of an RDF `Dataset`: one\n * resource described by properties whose values are simple values,\n * structures or arrays (`rdf:Bag`, `rdf:Seq`, `rdf:Alt`), each of which may\n * carry qualifiers.\n *\n * `fromDataset` reads the RDF an XMP packet parses to into this model and\n * `toDataset` writes it back. Values are immutable; `set` and `remove`\n * return a new `Metadata`. Properties, fields and qualifiers are\n * `[iri, value]` entries. Their order carries no meaning in XMP, so\n * `fromDataset` sorts them by IRI and the serializer writes them in entry\n * order, making output deterministic.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport { dual } from 'effect/Function';\nimport * as HashSet from 'effect/HashSet';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Predicate from 'effect/Predicate';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as Dataset from '../Dataset.ts';\nimport * as Term from '../Term.ts';\nimport { RDF } from './Namespaces.ts';\n\nconst RDF_VALUE = `${RDF}value`;\nconst RDF_TYPE = `${RDF}type`;\nconst MEMBER_RE = /^http:\\/\\/www\\.w3\\.org\\/1999\\/02\\/22-rdf-syntax-ns#_([1-9][0-9]*)$/;\n\n/**\n * The `xml:lang` value of the default item of a language alternative.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const X_DEFAULT = 'x-default';\n\n/**\n * A named value: a property, a structure field or a qualifier, keyed by its\n * full IRI.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Entry = readonly [iri: string, value: Value];\n\n/**\n * Named values, each IRI at most once.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Entries = ReadonlyArray<Entry>;\n\n/**\n * A simple value: a text string, or a URI (written with `rdf:resource`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Simple {\n readonly _tag: 'Simple';\n readonly value: string;\n /** Whether the value is a URI rather than text. */\n readonly isUri: boolean;\n /** The `xml:lang` qualifier of a text value. */\n readonly language: Option.Option<string>;\n /** The other qualifiers (`xml:lang` is `language`). */\n readonly qualifiers: Entries;\n}\n\n/**\n * A structure: named fields, each keyed by its full IRI.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Struct {\n readonly _tag: 'Struct';\n readonly fields: Entries;\n readonly qualifiers: Entries;\n}\n\n/**\n * The form of an array: unordered (`Bag`), ordered (`Seq`) or alternatives\n * (`Alt`, of which the first is the default).\n *\n * @since 0.1.0\n * @category models\n */\nexport type ArrayForm = 'Bag' | 'Seq' | 'Alt';\n\n/**\n * An array value (`rdf:Bag`, `rdf:Seq` or `rdf:Alt`).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ArrayValue {\n readonly _tag: 'Array';\n readonly form: ArrayForm;\n readonly items: ReadonlyArray<Value>;\n readonly qualifiers: Entries;\n}\n\n/**\n * An XMP property or field value.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Value = Simple | Struct | ArrayValue;\n\n/**\n * The metadata of one resource: the `rdf:about` value of its descriptions\n * (usually `\"\"`, the containing file) and its top-level properties.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Metadata {\n readonly about: string;\n readonly properties: Entries;\n}\n\n/**\n * RDF that does not have the shape of the XMP data model: a cycle, a triple\n * term, an array with non-member properties or a property given twice.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class XmpModelError extends Schema.TaggedError<XmpModelError>()('XmpModelError', {\n message: Schema.String,\n}) {}\n\n// -----------------------------------------------------------------------------\n// Guards and entries\n// -----------------------------------------------------------------------------\n\n/**\n * Whether a value is a simple value.\n *\n * @since 0.1.0\n * @category guards\n */\nexport const isSimple = (value: Value): value is Simple => Predicate.isTagged(value, 'Simple');\n\n/**\n * Whether a value is a structure.\n *\n * @since 0.1.0\n * @category guards\n */\nexport const isStruct = (value: Value): value is Struct => Predicate.isTagged(value, 'Struct');\n\n/**\n * Whether a value is an array.\n *\n * @since 0.1.0\n * @category guards\n */\nexport const isArray = (value: Value): value is ArrayValue => Predicate.isTagged(value, 'Array');\n\n/**\n * The value of the entry with the given IRI.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const lookup = (entries: Entries, iri: string): Option.Option<Value> =>\n Option.map(\n Arr.findFirst(entries, ([key]) => key === iri),\n ([, value]) => value,\n );\n\n/** Replaces the entry with the same IRI in place, or appends it. */\nconst upsert = (entries: Entries, entry: Entry): Entries =>\n Arr.some(entries, ([key]) => key === entry[0])\n ? Arr.map(entries, (e) => (e[0] === entry[0] ? entry : e))\n : [...entries, entry];\n\nconst entriesOf = (entries: Iterable<Entry>): Entries => Arr.reduce(entries, noEntries, upsert);\n\nconst noEntries: Entries = [];\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * Metadata with no properties, about the containing file (`rdf:about=\"\"`).\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const empty: Metadata = { about: '', properties: noEntries };\n\n/**\n * Builds metadata from `[iri, value]` entries (a later entry replaces an\n * earlier one with the same IRI).\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (properties: Iterable<Entry>, about: string = ''): Metadata => ({\n about,\n properties: entriesOf(properties),\n});\n\n/**\n * A text value, optionally with an `xml:lang` qualifier.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const text = (value: string, language?: string): Simple => ({\n _tag: 'Simple',\n value,\n isUri: false,\n language: Option.fromNullishOr(language),\n qualifiers: noEntries,\n});\n\n/**\n * A URI value, written with `rdf:resource`.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const uri = (value: string): Simple => ({\n _tag: 'Simple',\n value,\n isUri: true,\n language: Option.none(),\n qualifiers: noEntries,\n});\n\n/**\n * A structure from `[iri, value]` field entries.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const struct = (fields: Iterable<Entry>): Struct => ({\n _tag: 'Struct',\n fields: entriesOf(fields),\n qualifiers: noEntries,\n});\n\n/**\n * An array of the given form.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const array = (form: ArrayForm, items: Iterable<Value>): ArrayValue => ({\n _tag: 'Array',\n form,\n items: Arr.fromIterable(items),\n qualifiers: noEntries,\n});\n\n/**\n * An unordered array (`rdf:Bag`) of text values.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const bag = (items: Iterable<string>): ArrayValue =>\n array(\n 'Bag',\n Arr.map(Arr.fromIterable(items), (item) => text(item)),\n );\n\n/**\n * An ordered array (`rdf:Seq`) of text values.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const seq = (items: Iterable<string>): ArrayValue =>\n array(\n 'Seq',\n Arr.map(Arr.fromIterable(items), (item) => text(item)),\n );\n\nconst isDefaultLanguage = ([language]: readonly [string, string]) => language === X_DEFAULT;\n\n/**\n * A language alternative: an `rdf:Alt` of text values each qualified by\n * `xml:lang`, from `[language, text]` pairs. An `x-default` entry is moved\n * first, as ISO 16684-1 requires.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const languageAlternative = (entries: Iterable<readonly [string, string]>): ArrayValue => {\n const all = Arr.fromIterable(entries);\n return array(\n 'Alt',\n Arr.map(\n [\n ...Arr.filter(all, isDefaultLanguage),\n ...Arr.filter(all, (entry) => !isDefaultLanguage(entry)),\n ],\n ([language, value]) => text(value, language),\n ),\n );\n};\n\n/**\n * Returns the value with the given qualifiers added (replacing qualifiers\n * of the same IRI).\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const withQualifiers: {\n (qualifiers: Iterable<Entry>): <V extends Value>(self: V) => V;\n <V extends Value>(self: V, qualifiers: Iterable<Entry>): V;\n} = dual(2, <V extends Value>(self: V, qualifiers: Iterable<Entry>): V => ({\n ...self,\n qualifiers: Arr.reduce(qualifiers, self.qualifiers, upsert),\n}));\n\n// -----------------------------------------------------------------------------\n// Access\n// -----------------------------------------------------------------------------\n\n/**\n * The value of a top-level property.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const get: {\n (iri: string): (self: Metadata) => Option.Option<Value>;\n (self: Metadata, iri: string): Option.Option<Value>;\n} = dual(2, (self: Metadata, iri: string): Option.Option<Value> => lookup(self.properties, iri));\n\n/**\n * Sets a top-level property, keeping its position if it was already set.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const set: {\n (iri: string, value: Value): (self: Metadata) => Metadata;\n (self: Metadata, iri: string, value: Value): Metadata;\n} = dual(3, (self: Metadata, iri: string, value: Value): Metadata => ({\n about: self.about,\n properties: upsert(self.properties, [iri, value]),\n}));\n\n/**\n * Removes a top-level property.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const remove: {\n (iri: string): (self: Metadata) => Metadata;\n (self: Metadata, iri: string): Metadata;\n} = dual(2, (self: Metadata, iri: string): Metadata => ({\n about: self.about,\n properties: Arr.filter(self.properties, ([key]) => key !== iri),\n}));\n\nconst asSimple = Option.liftPredicate(isSimple);\n\nconst asArray = Option.liftPredicate(isArray);\n\n/**\n * The string of a simple (text or URI) value.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const textOf = (value: Value): Option.Option<string> =>\n Option.map(asSimple(value), (simple) => simple.value);\n\n/**\n * The strings of an array's simple items, in order; items that are not\n * simple values are skipped.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const itemsOf = (value: Value): Option.Option<ReadonlyArray<string>> =>\n Option.map(asArray(value), (arr) => Arr.getSomes(Arr.map(arr.items, textOf)));\n\nconst hasLanguage = (language: string) => (item: Simple) =>\n Option.exists(item.language, (l) => l.toLowerCase() === language.toLowerCase());\n\n/**\n * Looks up a language alternative the way ISO 16684-1 §8.2.2.4 describes:\n * the item whose `xml:lang` matches `language` (case-insensitively), else\n * the `x-default` item, else the first item. A simple value is its own\n * only alternative.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const localizedOf = (value: Value, language: string = X_DEFAULT): Option.Option<string> => {\n if (isSimple(value)) return Option.some(value.value);\n if (!isArray(value)) return Option.none();\n const items = Arr.getSomes(Arr.map(value.items, asSimple));\n return Option.map(\n Option.firstSomeOf([\n Arr.findFirst(items, hasLanguage(language)),\n Arr.findFirst(items, hasLanguage(X_DEFAULT)),\n Arr.head(items),\n ]),\n (item) => item.value,\n );\n};\n\n/**\n * The string of a simple top-level property.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const getText: {\n (iri: string): (self: Metadata) => Option.Option<string>;\n (self: Metadata, iri: string): Option.Option<string>;\n} = dual(2, (self: Metadata, iri: string): Option.Option<string> =>\n Option.flatMap(get(self, iri), textOf),\n);\n\n/**\n * The strings of an array-valued top-level property.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const getItems: {\n (iri: string): (self: Metadata) => Option.Option<ReadonlyArray<string>>;\n (self: Metadata, iri: string): Option.Option<ReadonlyArray<string>>;\n} = dual(2, (self: Metadata, iri: string): Option.Option<ReadonlyArray<string>> =>\n Option.flatMap(get(self, iri), itemsOf),\n);\n\n/**\n * A language-alternative top-level property in the given language (see\n * `localizedOf`).\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const getLocalized = (\n self: Metadata,\n iri: string,\n language: string = X_DEFAULT,\n): Option.Option<string> => Option.flatMap(get(self, iri), (value) => localizedOf(value, language));\n\n/**\n * Sets one language of a language-alternative top-level property, keeping\n * its other languages. Setting `x-default` puts that item first.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const setLocalized = (\n self: Metadata,\n iri: string,\n value: string,\n language: string = X_DEFAULT,\n): Metadata => {\n const existing = Option.match(Option.flatMap(get(self, iri), asArray), {\n onNone: () => [],\n onSome: (alt) => Arr.getSomes(Arr.map(alt.items, asSimple)),\n });\n const kept = Arr.map(\n Arr.filter(existing, (item) => !hasLanguage(language)(item)),\n (item) => [Option.getOrElse(item.language, () => X_DEFAULT), item.value] as const,\n );\n return set(self, iri, languageAlternative([...kept, [language, value]]));\n};\n\n// -----------------------------------------------------------------------------\n// RDF ⇄ model\n// -----------------------------------------------------------------------------\n\nconst memberIndex = (iri: string): Option.Option<number> =>\n Option.map(Option.fromNullishOr(MEMBER_RE.exec(iri)), (m) => Number(m[1]));\n\nconst ARRAY_FORMS: ReadonlyArray<ArrayForm> = ['Bag', 'Seq', 'Alt'];\n\nconst arrayForm = (type: Term.Object): Option.Option<ArrayForm> =>\n Term.isNamedNode(type)\n ? Arr.findFirst(ARRAY_FORMS, (form) => type.value === `${RDF}${form}`)\n : Option.none();\n\nconst byMember = Order.mapInput(Order.Number, (entry: readonly [number, Term.Quad]) => entry[0]);\n\nconst byPredicate = Order.mapInput(Order.String, (q: Term.Quad) => q.predicate.value);\n\ntype Visiting = HashSet.HashSet<string>;\n\nconst isRdfValueQuad = (q: Term.Quad) => q.predicate.value === RDF_VALUE;\n\nclass ModelReader {\n readonly dataset: Dataset.Dataset;\n constructor(dataset: Dataset.Dataset) {\n this.dataset = dataset;\n }\n\n fail(message: string): never {\n throw new XmpModelError({ message });\n }\n\n properties(subject: Term.Subject): ReadonlyArray<Term.Quad> {\n return Dataset.match(this.dataset, { subject });\n }\n\n /** Reads entries from quads, rejecting a property given twice. */\n entries(quads: ReadonlyArray<Term.Quad>, visiting: Visiting): Entries {\n const keys = Arr.map(quads, (q) => q.predicate.value);\n Option.map(\n Arr.findFirst(keys, (key, i) => keys.indexOf(key) !== i),\n (key) => this.fail(`Property <${key}> is given more than once`),\n );\n return Arr.map(\n Arr.sort(quads, byPredicate),\n (q) => [q.predicate.value, this.value(q.object, visiting)] as const,\n );\n }\n\n value(object: Term.Object, visiting: Visiting): Value {\n if (Term.isLiteral(object)) {\n return text(object.value, object.language === '' ? undefined : object.language);\n }\n if (Term.isNamedNode(object)) return uri(object.value);\n if (Term.isTriple(object)) return this.fail('XMP values cannot be triple terms');\n if (HashSet.has(visiting, object.key)) {\n return this.fail(`Blank node ${object.key} contains itself`);\n }\n return this.node(object, HashSet.add(visiting, object.key));\n }\n\n node(node: Term.BlankNode, visiting: Visiting): Value {\n const quads = this.properties(node);\n const value = Arr.findFirst(quads, isRdfValueQuad);\n if (Option.isSome(value)) {\n const others = Arr.filter(quads, (q) => !isRdfValueQuad(q));\n return withQualifiers(\n this.value(value.value.object, visiting),\n this.entries(others, visiting),\n );\n }\n const form = Option.flatMap(\n Arr.findFirst(quads, (q) => q.predicate.value === RDF_TYPE),\n (q) => arrayForm(q.object),\n );\n if (Option.isNone(form)) return struct(this.entries(quads, visiting));\n const members = Arr.filterMap(quads, (q) =>\n Option.match(memberIndex(q.predicate.value), {\n onNone: () =>\n q.predicate.value === RDF_TYPE\n ? Result.failVoid\n : this.fail(`Array ${node.key} has the non-member property <${q.predicate.value}>`),\n onSome: (i) => Result.succeed([i, q] as const),\n }),\n );\n return array(\n form.value,\n Arr.map(Arr.sort(members, byMember), ([, q]) => this.value(q.object, visiting)),\n );\n }\n\n /**\n * Every top-level description: a subject that is an IRI or a blank node no\n * other triple refers to. ISO 16684-1 §7.4 requires all of them to describe\n * the same resource; readers accept differing or absent `rdf:about` values\n * and merge them.\n */\n metadata(): Metadata {\n const referenced = HashSet.fromIterable(\n Arr.map(Arr.filter(Dataset.objects(this.dataset), Term.isBlankNode), (o) => o.key),\n );\n const roots = Arr.filter(Dataset.subjects(this.dataset), (s) => {\n if (Term.isTriple(s)) return this.fail('XMP descriptions cannot be about triple terms');\n return Term.isNamedNode(s) || !HashSet.has(referenced, s.key);\n });\n const about = Option.getOrElse(\n Arr.findFirst(roots, (s) =>\n Term.isNamedNode(s) && s.value !== '' ? Option.some(s.value) : Option.none(),\n ),\n () => '',\n );\n return make(\n this.entries(\n Arr.flatMap(roots, (s) => this.properties(s)),\n HashSet.empty(),\n ),\n about,\n );\n }\n}\n\n/**\n * Reads the XMP data model from the RDF of an XMP packet, returning a\n * `Result`. Typed literals keep only their lexical form (XMP has no\n * datatypes); named graphs are ignored.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const fromDatasetResult = (\n dataset: Dataset.Dataset,\n): Result.Result<Metadata, XmpModelError> =>\n Result.try({\n try: () => new ModelReader(dataset).metadata(),\n catch: (e) => {\n if (e instanceof XmpModelError) return e;\n throw e;\n },\n });\n\n/**\n * Reads the XMP data model from the RDF of an XMP packet.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const fromDataset = (dataset: Dataset.Dataset): Effect.Effect<Metadata, XmpModelError> =>\n Effect.suspend(() => Effect.fromResult(fromDatasetResult(dataset)));\n\nconst rdf = (local: string) => new Term.NamedNode(`${RDF}${local}`);\n\nconst simpleTerm = (value: Simple): Term.Object =>\n value.isUri\n ? new Term.NamedNode(value.value)\n : Term.literal(value.value, Option.getOrUndefined(value.language));\n\n/**\n * The RDF of the XMP data model: the properties of one `rdf:about` subject,\n * structures and arrays as blank nodes, and qualified values in the\n * `rdf:value` form.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const toDataset = (self: Metadata): Dataset.Dataset =>\n Dataset.mutate(Dataset.empty, (builder) => {\n const emit = (s: Term.Subject, p: string, o: Term.Object) => {\n builder.add(new Term.Quad(s, new Term.NamedNode(p), o, Term.defaultGraph));\n };\n const emitAll = (s: Term.Subject, entries: Entries) => {\n entries.forEach(([p, v]) => emit(s, p, term(v)));\n };\n const bare = (value: Value): Term.Object => {\n if (isSimple(value)) return simpleTerm(value);\n const node = Term.blankNode();\n if (isStruct(value)) {\n emitAll(node, value.fields);\n } else {\n emit(node, RDF_TYPE, rdf(value.form));\n value.items.forEach((item, i) => emit(node, `${RDF}_${i + 1}`, term(item)));\n }\n return node;\n };\n const term = (value: Value): Term.Object => {\n if (!Arr.isReadonlyArrayNonEmpty(value.qualifiers)) return bare(value);\n const node = Term.blankNode();\n emit(node, RDF_VALUE, bare(value));\n emitAll(node, value.qualifiers);\n return node;\n };\n emitAll(new Term.NamedNode(self.about), self.properties);\n });\n\n// -----------------------------------------------------------------------------\n// Typed accessors\n// -----------------------------------------------------------------------------\n\n/**\n * A typed setter of one property, data-first or data-last.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Setter<A> {\n (value: A): (self: Metadata) => Metadata;\n (self: Metadata, value: A): Metadata;\n}\n\n/**\n * A typed setter of one language of a language-alternative property\n * (`x-default` unless a language is given), data-first or data-last.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface LocalizedSetter {\n (value: string, language?: string): (self: Metadata) => Metadata;\n (self: Metadata, value: string, language?: string): Metadata;\n}\n"],"mappings":"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"}
|