@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.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2250 -1
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +187 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1,703 @@
1
+ /**
2
+ * The XMP data model (ISO 16684-1 §6) on top of an RDF `Dataset`: one
3
+ * resource described by properties whose values are simple values,
4
+ * structures or arrays (`rdf:Bag`, `rdf:Seq`, `rdf:Alt`), each of which may
5
+ * carry qualifiers.
6
+ *
7
+ * `fromDataset` reads the RDF an XMP packet parses to into this model and
8
+ * `toDataset` writes it back. Values are immutable; `set` and `remove`
9
+ * return a new `Metadata`. Properties, fields and qualifiers are
10
+ * `[iri, value]` entries. Their order carries no meaning in XMP, so
11
+ * `fromDataset` sorts them by IRI and the serializer writes them in entry
12
+ * order, making output deterministic.
13
+ *
14
+ * @since 0.1.0
15
+ */
16
+ import * as Arr from 'effect/Array';
17
+ import * as Effect from 'effect/Effect';
18
+ import { dual } from 'effect/Function';
19
+ import * as HashSet from 'effect/HashSet';
20
+ import * as Option from 'effect/Option';
21
+ import * as Order from 'effect/Order';
22
+ import * as Predicate from 'effect/Predicate';
23
+ import * as Result from 'effect/Result';
24
+ import * as Schema from 'effect/Schema';
25
+ import * as Dataset from '../Dataset.ts';
26
+ import * as Term from '../Term.ts';
27
+ import { RDF } from './Namespaces.ts';
28
+
29
+ const RDF_VALUE = `${RDF}value`;
30
+ const RDF_TYPE = `${RDF}type`;
31
+ const MEMBER_RE = /^http:\/\/www\.w3\.org\/1999\/02\/22-rdf-syntax-ns#_([1-9][0-9]*)$/;
32
+
33
+ /**
34
+ * The `xml:lang` value of the default item of a language alternative.
35
+ *
36
+ * @since 0.1.0
37
+ * @category constants
38
+ */
39
+ export const X_DEFAULT = 'x-default';
40
+
41
+ /**
42
+ * A named value: a property, a structure field or a qualifier, keyed by its
43
+ * full IRI.
44
+ *
45
+ * @since 0.1.0
46
+ * @category models
47
+ */
48
+ export type Entry = readonly [iri: string, value: Value];
49
+
50
+ /**
51
+ * Named values, each IRI at most once.
52
+ *
53
+ * @since 0.1.0
54
+ * @category models
55
+ */
56
+ export type Entries = ReadonlyArray<Entry>;
57
+
58
+ /**
59
+ * A simple value: a text string, or a URI (written with `rdf:resource`).
60
+ *
61
+ * @since 0.1.0
62
+ * @category models
63
+ */
64
+ export interface Simple {
65
+ readonly _tag: 'Simple';
66
+ readonly value: string;
67
+ /** Whether the value is a URI rather than text. */
68
+ readonly isUri: boolean;
69
+ /** The `xml:lang` qualifier of a text value. */
70
+ readonly language: Option.Option<string>;
71
+ /** The other qualifiers (`xml:lang` is `language`). */
72
+ readonly qualifiers: Entries;
73
+ }
74
+
75
+ /**
76
+ * A structure: named fields, each keyed by its full IRI.
77
+ *
78
+ * @since 0.1.0
79
+ * @category models
80
+ */
81
+ export interface Struct {
82
+ readonly _tag: 'Struct';
83
+ readonly fields: Entries;
84
+ readonly qualifiers: Entries;
85
+ }
86
+
87
+ /**
88
+ * The form of an array: unordered (`Bag`), ordered (`Seq`) or alternatives
89
+ * (`Alt`, of which the first is the default).
90
+ *
91
+ * @since 0.1.0
92
+ * @category models
93
+ */
94
+ export type ArrayForm = 'Bag' | 'Seq' | 'Alt';
95
+
96
+ /**
97
+ * An array value (`rdf:Bag`, `rdf:Seq` or `rdf:Alt`).
98
+ *
99
+ * @since 0.1.0
100
+ * @category models
101
+ */
102
+ export interface ArrayValue {
103
+ readonly _tag: 'Array';
104
+ readonly form: ArrayForm;
105
+ readonly items: ReadonlyArray<Value>;
106
+ readonly qualifiers: Entries;
107
+ }
108
+
109
+ /**
110
+ * An XMP property or field value.
111
+ *
112
+ * @since 0.1.0
113
+ * @category models
114
+ */
115
+ export type Value = Simple | Struct | ArrayValue;
116
+
117
+ /**
118
+ * The metadata of one resource: the `rdf:about` value of its descriptions
119
+ * (usually `""`, the containing file) and its top-level properties.
120
+ *
121
+ * @since 0.1.0
122
+ * @category models
123
+ */
124
+ export interface Metadata {
125
+ readonly about: string;
126
+ readonly properties: Entries;
127
+ }
128
+
129
+ /**
130
+ * RDF that does not have the shape of the XMP data model: a cycle, a triple
131
+ * term, an array with non-member properties or a property given twice.
132
+ *
133
+ * @since 0.1.0
134
+ * @category errors
135
+ */
136
+ export class XmpModelError extends Schema.TaggedError<XmpModelError>()('XmpModelError', {
137
+ message: Schema.String,
138
+ }) {}
139
+
140
+ // -----------------------------------------------------------------------------
141
+ // Guards and entries
142
+ // -----------------------------------------------------------------------------
143
+
144
+ /**
145
+ * Whether a value is a simple value.
146
+ *
147
+ * @since 0.1.0
148
+ * @category guards
149
+ */
150
+ export const isSimple = (value: Value): value is Simple => Predicate.isTagged(value, 'Simple');
151
+
152
+ /**
153
+ * Whether a value is a structure.
154
+ *
155
+ * @since 0.1.0
156
+ * @category guards
157
+ */
158
+ export const isStruct = (value: Value): value is Struct => Predicate.isTagged(value, 'Struct');
159
+
160
+ /**
161
+ * Whether a value is an array.
162
+ *
163
+ * @since 0.1.0
164
+ * @category guards
165
+ */
166
+ export const isArray = (value: Value): value is ArrayValue => Predicate.isTagged(value, 'Array');
167
+
168
+ /**
169
+ * The value of the entry with the given IRI.
170
+ *
171
+ * @since 0.1.0
172
+ * @category accessors
173
+ */
174
+ export const lookup = (entries: Entries, iri: string): Option.Option<Value> =>
175
+ Option.map(
176
+ Arr.findFirst(entries, ([key]) => key === iri),
177
+ ([, value]) => value,
178
+ );
179
+
180
+ /** Replaces the entry with the same IRI in place, or appends it. */
181
+ const upsert = (entries: Entries, entry: Entry): Entries =>
182
+ Arr.some(entries, ([key]) => key === entry[0])
183
+ ? Arr.map(entries, (e) => (e[0] === entry[0] ? entry : e))
184
+ : [...entries, entry];
185
+
186
+ const entriesOf = (entries: Iterable<Entry>): Entries => Arr.reduce(entries, noEntries, upsert);
187
+
188
+ const noEntries: Entries = [];
189
+
190
+ // -----------------------------------------------------------------------------
191
+ // Constructors
192
+ // -----------------------------------------------------------------------------
193
+
194
+ /**
195
+ * Metadata with no properties, about the containing file (`rdf:about=""`).
196
+ *
197
+ * @since 0.1.0
198
+ * @category constructors
199
+ */
200
+ export const empty: Metadata = { about: '', properties: noEntries };
201
+
202
+ /**
203
+ * Builds metadata from `[iri, value]` entries (a later entry replaces an
204
+ * earlier one with the same IRI).
205
+ *
206
+ * @since 0.1.0
207
+ * @category constructors
208
+ */
209
+ export const make = (properties: Iterable<Entry>, about: string = ''): Metadata => ({
210
+ about,
211
+ properties: entriesOf(properties),
212
+ });
213
+
214
+ /**
215
+ * A text value, optionally with an `xml:lang` qualifier.
216
+ *
217
+ * @since 0.1.0
218
+ * @category constructors
219
+ */
220
+ export const text = (value: string, language?: string): Simple => ({
221
+ _tag: 'Simple',
222
+ value,
223
+ isUri: false,
224
+ language: Option.fromNullishOr(language),
225
+ qualifiers: noEntries,
226
+ });
227
+
228
+ /**
229
+ * A URI value, written with `rdf:resource`.
230
+ *
231
+ * @since 0.1.0
232
+ * @category constructors
233
+ */
234
+ export const uri = (value: string): Simple => ({
235
+ _tag: 'Simple',
236
+ value,
237
+ isUri: true,
238
+ language: Option.none(),
239
+ qualifiers: noEntries,
240
+ });
241
+
242
+ /**
243
+ * A structure from `[iri, value]` field entries.
244
+ *
245
+ * @since 0.1.0
246
+ * @category constructors
247
+ */
248
+ export const struct = (fields: Iterable<Entry>): Struct => ({
249
+ _tag: 'Struct',
250
+ fields: entriesOf(fields),
251
+ qualifiers: noEntries,
252
+ });
253
+
254
+ /**
255
+ * An array of the given form.
256
+ *
257
+ * @since 0.1.0
258
+ * @category constructors
259
+ */
260
+ export const array = (form: ArrayForm, items: Iterable<Value>): ArrayValue => ({
261
+ _tag: 'Array',
262
+ form,
263
+ items: Arr.fromIterable(items),
264
+ qualifiers: noEntries,
265
+ });
266
+
267
+ /**
268
+ * An unordered array (`rdf:Bag`) of text values.
269
+ *
270
+ * @since 0.1.0
271
+ * @category constructors
272
+ */
273
+ export const bag = (items: Iterable<string>): ArrayValue =>
274
+ array(
275
+ 'Bag',
276
+ Arr.map(Arr.fromIterable(items), (item) => text(item)),
277
+ );
278
+
279
+ /**
280
+ * An ordered array (`rdf:Seq`) of text values.
281
+ *
282
+ * @since 0.1.0
283
+ * @category constructors
284
+ */
285
+ export const seq = (items: Iterable<string>): ArrayValue =>
286
+ array(
287
+ 'Seq',
288
+ Arr.map(Arr.fromIterable(items), (item) => text(item)),
289
+ );
290
+
291
+ const isDefaultLanguage = ([language]: readonly [string, string]) => language === X_DEFAULT;
292
+
293
+ /**
294
+ * A language alternative: an `rdf:Alt` of text values each qualified by
295
+ * `xml:lang`, from `[language, text]` pairs. An `x-default` entry is moved
296
+ * first, as ISO 16684-1 requires.
297
+ *
298
+ * @since 0.1.0
299
+ * @category constructors
300
+ */
301
+ export const languageAlternative = (entries: Iterable<readonly [string, string]>): ArrayValue => {
302
+ const all = Arr.fromIterable(entries);
303
+ return array(
304
+ 'Alt',
305
+ Arr.map(
306
+ [
307
+ ...Arr.filter(all, isDefaultLanguage),
308
+ ...Arr.filter(all, (entry) => !isDefaultLanguage(entry)),
309
+ ],
310
+ ([language, value]) => text(value, language),
311
+ ),
312
+ );
313
+ };
314
+
315
+ /**
316
+ * Returns the value with the given qualifiers added (replacing qualifiers
317
+ * of the same IRI).
318
+ *
319
+ * @since 0.1.0
320
+ * @category combinators
321
+ */
322
+ export const withQualifiers: {
323
+ (qualifiers: Iterable<Entry>): <V extends Value>(self: V) => V;
324
+ <V extends Value>(self: V, qualifiers: Iterable<Entry>): V;
325
+ } = dual(2, <V extends Value>(self: V, qualifiers: Iterable<Entry>): V => ({
326
+ ...self,
327
+ qualifiers: Arr.reduce(qualifiers, self.qualifiers, upsert),
328
+ }));
329
+
330
+ // -----------------------------------------------------------------------------
331
+ // Access
332
+ // -----------------------------------------------------------------------------
333
+
334
+ /**
335
+ * The value of a top-level property.
336
+ *
337
+ * @since 0.1.0
338
+ * @category accessors
339
+ */
340
+ export const get: {
341
+ (iri: string): (self: Metadata) => Option.Option<Value>;
342
+ (self: Metadata, iri: string): Option.Option<Value>;
343
+ } = dual(2, (self: Metadata, iri: string): Option.Option<Value> => lookup(self.properties, iri));
344
+
345
+ /**
346
+ * Sets a top-level property, keeping its position if it was already set.
347
+ *
348
+ * @since 0.1.0
349
+ * @category combinators
350
+ */
351
+ export const set: {
352
+ (iri: string, value: Value): (self: Metadata) => Metadata;
353
+ (self: Metadata, iri: string, value: Value): Metadata;
354
+ } = dual(3, (self: Metadata, iri: string, value: Value): Metadata => ({
355
+ about: self.about,
356
+ properties: upsert(self.properties, [iri, value]),
357
+ }));
358
+
359
+ /**
360
+ * Removes a top-level property.
361
+ *
362
+ * @since 0.1.0
363
+ * @category combinators
364
+ */
365
+ export const remove: {
366
+ (iri: string): (self: Metadata) => Metadata;
367
+ (self: Metadata, iri: string): Metadata;
368
+ } = dual(2, (self: Metadata, iri: string): Metadata => ({
369
+ about: self.about,
370
+ properties: Arr.filter(self.properties, ([key]) => key !== iri),
371
+ }));
372
+
373
+ const asSimple = Option.liftPredicate(isSimple);
374
+
375
+ const asArray = Option.liftPredicate(isArray);
376
+
377
+ /**
378
+ * The string of a simple (text or URI) value.
379
+ *
380
+ * @since 0.1.0
381
+ * @category accessors
382
+ */
383
+ export const textOf = (value: Value): Option.Option<string> =>
384
+ Option.map(asSimple(value), (simple) => simple.value);
385
+
386
+ /**
387
+ * The strings of an array's simple items, in order; items that are not
388
+ * simple values are skipped.
389
+ *
390
+ * @since 0.1.0
391
+ * @category accessors
392
+ */
393
+ export const itemsOf = (value: Value): Option.Option<ReadonlyArray<string>> =>
394
+ Option.map(asArray(value), (arr) => Arr.getSomes(Arr.map(arr.items, textOf)));
395
+
396
+ const hasLanguage = (language: string) => (item: Simple) =>
397
+ Option.exists(item.language, (l) => l.toLowerCase() === language.toLowerCase());
398
+
399
+ /**
400
+ * Looks up a language alternative the way ISO 16684-1 §8.2.2.4 describes:
401
+ * the item whose `xml:lang` matches `language` (case-insensitively), else
402
+ * the `x-default` item, else the first item. A simple value is its own
403
+ * only alternative.
404
+ *
405
+ * @since 0.1.0
406
+ * @category accessors
407
+ */
408
+ export const localizedOf = (value: Value, language: string = X_DEFAULT): Option.Option<string> => {
409
+ if (isSimple(value)) return Option.some(value.value);
410
+ if (!isArray(value)) return Option.none();
411
+ const items = Arr.getSomes(Arr.map(value.items, asSimple));
412
+ return Option.map(
413
+ Option.firstSomeOf([
414
+ Arr.findFirst(items, hasLanguage(language)),
415
+ Arr.findFirst(items, hasLanguage(X_DEFAULT)),
416
+ Arr.head(items),
417
+ ]),
418
+ (item) => item.value,
419
+ );
420
+ };
421
+
422
+ /**
423
+ * The string of a simple top-level property.
424
+ *
425
+ * @since 0.1.0
426
+ * @category accessors
427
+ */
428
+ export const getText: {
429
+ (iri: string): (self: Metadata) => Option.Option<string>;
430
+ (self: Metadata, iri: string): Option.Option<string>;
431
+ } = dual(2, (self: Metadata, iri: string): Option.Option<string> =>
432
+ Option.flatMap(get(self, iri), textOf),
433
+ );
434
+
435
+ /**
436
+ * The strings of an array-valued top-level property.
437
+ *
438
+ * @since 0.1.0
439
+ * @category accessors
440
+ */
441
+ export const getItems: {
442
+ (iri: string): (self: Metadata) => Option.Option<ReadonlyArray<string>>;
443
+ (self: Metadata, iri: string): Option.Option<ReadonlyArray<string>>;
444
+ } = dual(2, (self: Metadata, iri: string): Option.Option<ReadonlyArray<string>> =>
445
+ Option.flatMap(get(self, iri), itemsOf),
446
+ );
447
+
448
+ /**
449
+ * A language-alternative top-level property in the given language (see
450
+ * `localizedOf`).
451
+ *
452
+ * @since 0.1.0
453
+ * @category accessors
454
+ */
455
+ export const getLocalized = (
456
+ self: Metadata,
457
+ iri: string,
458
+ language: string = X_DEFAULT,
459
+ ): Option.Option<string> => Option.flatMap(get(self, iri), (value) => localizedOf(value, language));
460
+
461
+ /**
462
+ * Sets one language of a language-alternative top-level property, keeping
463
+ * its other languages. Setting `x-default` puts that item first.
464
+ *
465
+ * @since 0.1.0
466
+ * @category combinators
467
+ */
468
+ export const setLocalized = (
469
+ self: Metadata,
470
+ iri: string,
471
+ value: string,
472
+ language: string = X_DEFAULT,
473
+ ): Metadata => {
474
+ const existing = Option.match(Option.flatMap(get(self, iri), asArray), {
475
+ onNone: () => [],
476
+ onSome: (alt) => Arr.getSomes(Arr.map(alt.items, asSimple)),
477
+ });
478
+ const kept = Arr.map(
479
+ Arr.filter(existing, (item) => !hasLanguage(language)(item)),
480
+ (item) => [Option.getOrElse(item.language, () => X_DEFAULT), item.value] as const,
481
+ );
482
+ return set(self, iri, languageAlternative([...kept, [language, value]]));
483
+ };
484
+
485
+ // -----------------------------------------------------------------------------
486
+ // RDF ⇄ model
487
+ // -----------------------------------------------------------------------------
488
+
489
+ const memberIndex = (iri: string): Option.Option<number> =>
490
+ Option.map(Option.fromNullishOr(MEMBER_RE.exec(iri)), (m) => Number(m[1]));
491
+
492
+ const ARRAY_FORMS: ReadonlyArray<ArrayForm> = ['Bag', 'Seq', 'Alt'];
493
+
494
+ const arrayForm = (type: Term.Object): Option.Option<ArrayForm> =>
495
+ Term.isNamedNode(type)
496
+ ? Arr.findFirst(ARRAY_FORMS, (form) => type.value === `${RDF}${form}`)
497
+ : Option.none();
498
+
499
+ const byMember = Order.mapInput(Order.Number, (entry: readonly [number, Term.Quad]) => entry[0]);
500
+
501
+ const byPredicate = Order.mapInput(Order.String, (q: Term.Quad) => q.predicate.value);
502
+
503
+ type Visiting = HashSet.HashSet<string>;
504
+
505
+ const isRdfValueQuad = (q: Term.Quad) => q.predicate.value === RDF_VALUE;
506
+
507
+ class ModelReader {
508
+ readonly dataset: Dataset.Dataset;
509
+ constructor(dataset: Dataset.Dataset) {
510
+ this.dataset = dataset;
511
+ }
512
+
513
+ fail(message: string): never {
514
+ throw new XmpModelError({ message });
515
+ }
516
+
517
+ properties(subject: Term.Subject): ReadonlyArray<Term.Quad> {
518
+ return Dataset.match(this.dataset, { subject });
519
+ }
520
+
521
+ /** Reads entries from quads, rejecting a property given twice. */
522
+ entries(quads: ReadonlyArray<Term.Quad>, visiting: Visiting): Entries {
523
+ const keys = Arr.map(quads, (q) => q.predicate.value);
524
+ Option.map(
525
+ Arr.findFirst(keys, (key, i) => keys.indexOf(key) !== i),
526
+ (key) => this.fail(`Property <${key}> is given more than once`),
527
+ );
528
+ return Arr.map(
529
+ Arr.sort(quads, byPredicate),
530
+ (q) => [q.predicate.value, this.value(q.object, visiting)] as const,
531
+ );
532
+ }
533
+
534
+ value(object: Term.Object, visiting: Visiting): Value {
535
+ if (Term.isLiteral(object)) {
536
+ return text(object.value, object.language === '' ? undefined : object.language);
537
+ }
538
+ if (Term.isNamedNode(object)) return uri(object.value);
539
+ if (Term.isTriple(object)) return this.fail('XMP values cannot be triple terms');
540
+ if (HashSet.has(visiting, object.key)) {
541
+ return this.fail(`Blank node ${object.key} contains itself`);
542
+ }
543
+ return this.node(object, HashSet.add(visiting, object.key));
544
+ }
545
+
546
+ node(node: Term.BlankNode, visiting: Visiting): Value {
547
+ const quads = this.properties(node);
548
+ const value = Arr.findFirst(quads, isRdfValueQuad);
549
+ if (Option.isSome(value)) {
550
+ const others = Arr.filter(quads, (q) => !isRdfValueQuad(q));
551
+ return withQualifiers(
552
+ this.value(value.value.object, visiting),
553
+ this.entries(others, visiting),
554
+ );
555
+ }
556
+ const form = Option.flatMap(
557
+ Arr.findFirst(quads, (q) => q.predicate.value === RDF_TYPE),
558
+ (q) => arrayForm(q.object),
559
+ );
560
+ if (Option.isNone(form)) return struct(this.entries(quads, visiting));
561
+ const members = Arr.filterMap(quads, (q) =>
562
+ Option.match(memberIndex(q.predicate.value), {
563
+ onNone: () =>
564
+ q.predicate.value === RDF_TYPE
565
+ ? Result.failVoid
566
+ : this.fail(`Array ${node.key} has the non-member property <${q.predicate.value}>`),
567
+ onSome: (i) => Result.succeed([i, q] as const),
568
+ }),
569
+ );
570
+ return array(
571
+ form.value,
572
+ Arr.map(Arr.sort(members, byMember), ([, q]) => this.value(q.object, visiting)),
573
+ );
574
+ }
575
+
576
+ /**
577
+ * Every top-level description: a subject that is an IRI or a blank node no
578
+ * other triple refers to. ISO 16684-1 §7.4 requires all of them to describe
579
+ * the same resource; readers accept differing or absent `rdf:about` values
580
+ * and merge them.
581
+ */
582
+ metadata(): Metadata {
583
+ const referenced = HashSet.fromIterable(
584
+ Arr.map(Arr.filter(Dataset.objects(this.dataset), Term.isBlankNode), (o) => o.key),
585
+ );
586
+ const roots = Arr.filter(Dataset.subjects(this.dataset), (s) => {
587
+ if (Term.isTriple(s)) return this.fail('XMP descriptions cannot be about triple terms');
588
+ return Term.isNamedNode(s) || !HashSet.has(referenced, s.key);
589
+ });
590
+ const about = Option.getOrElse(
591
+ Arr.findFirst(roots, (s) =>
592
+ Term.isNamedNode(s) && s.value !== '' ? Option.some(s.value) : Option.none(),
593
+ ),
594
+ () => '',
595
+ );
596
+ return make(
597
+ this.entries(
598
+ Arr.flatMap(roots, (s) => this.properties(s)),
599
+ HashSet.empty(),
600
+ ),
601
+ about,
602
+ );
603
+ }
604
+ }
605
+
606
+ /**
607
+ * Reads the XMP data model from the RDF of an XMP packet, returning a
608
+ * `Result`. Typed literals keep only their lexical form (XMP has no
609
+ * datatypes); named graphs are ignored.
610
+ *
611
+ * @since 0.1.0
612
+ * @category conversions
613
+ */
614
+ export const fromDatasetResult = (
615
+ dataset: Dataset.Dataset,
616
+ ): Result.Result<Metadata, XmpModelError> =>
617
+ Result.try({
618
+ try: () => new ModelReader(dataset).metadata(),
619
+ catch: (e) => {
620
+ if (e instanceof XmpModelError) return e;
621
+ throw e;
622
+ },
623
+ });
624
+
625
+ /**
626
+ * Reads the XMP data model from the RDF of an XMP packet.
627
+ *
628
+ * @since 0.1.0
629
+ * @category conversions
630
+ */
631
+ export const fromDataset = (dataset: Dataset.Dataset): Effect.Effect<Metadata, XmpModelError> =>
632
+ Effect.suspend(() => Effect.fromResult(fromDatasetResult(dataset)));
633
+
634
+ const rdf = (local: string) => new Term.NamedNode(`${RDF}${local}`);
635
+
636
+ const simpleTerm = (value: Simple): Term.Object =>
637
+ value.isUri
638
+ ? new Term.NamedNode(value.value)
639
+ : Term.literal(value.value, Option.getOrUndefined(value.language));
640
+
641
+ /**
642
+ * The RDF of the XMP data model: the properties of one `rdf:about` subject,
643
+ * structures and arrays as blank nodes, and qualified values in the
644
+ * `rdf:value` form.
645
+ *
646
+ * @since 0.1.0
647
+ * @category conversions
648
+ */
649
+ export const toDataset = (self: Metadata): Dataset.Dataset =>
650
+ Dataset.mutate(Dataset.empty, (builder) => {
651
+ const emit = (s: Term.Subject, p: string, o: Term.Object) => {
652
+ builder.add(new Term.Quad(s, new Term.NamedNode(p), o, Term.defaultGraph));
653
+ };
654
+ const emitAll = (s: Term.Subject, entries: Entries) => {
655
+ entries.forEach(([p, v]) => emit(s, p, term(v)));
656
+ };
657
+ const bare = (value: Value): Term.Object => {
658
+ if (isSimple(value)) return simpleTerm(value);
659
+ const node = Term.blankNode();
660
+ if (isStruct(value)) {
661
+ emitAll(node, value.fields);
662
+ } else {
663
+ emit(node, RDF_TYPE, rdf(value.form));
664
+ value.items.forEach((item, i) => emit(node, `${RDF}_${i + 1}`, term(item)));
665
+ }
666
+ return node;
667
+ };
668
+ const term = (value: Value): Term.Object => {
669
+ if (!Arr.isReadonlyArrayNonEmpty(value.qualifiers)) return bare(value);
670
+ const node = Term.blankNode();
671
+ emit(node, RDF_VALUE, bare(value));
672
+ emitAll(node, value.qualifiers);
673
+ return node;
674
+ };
675
+ emitAll(new Term.NamedNode(self.about), self.properties);
676
+ });
677
+
678
+ // -----------------------------------------------------------------------------
679
+ // Typed accessors
680
+ // -----------------------------------------------------------------------------
681
+
682
+ /**
683
+ * A typed setter of one property, data-first or data-last.
684
+ *
685
+ * @since 0.1.0
686
+ * @category models
687
+ */
688
+ export interface Setter<A> {
689
+ (value: A): (self: Metadata) => Metadata;
690
+ (self: Metadata, value: A): Metadata;
691
+ }
692
+
693
+ /**
694
+ * A typed setter of one language of a language-alternative property
695
+ * (`x-default` unless a language is given), data-first or data-last.
696
+ *
697
+ * @since 0.1.0
698
+ * @category models
699
+ */
700
+ export interface LocalizedSetter {
701
+ (value: string, language?: string): (self: Metadata) => Metadata;
702
+ (self: Metadata, value: string, language?: string): Metadata;
703
+ }