@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.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2251 -2
  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 +195 -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,806 @@
1
+ /**
2
+ * RDF/JSON (https://www.w3.org/TR/rdf-json/), media type
3
+ * `application/rdf+json`.
4
+ *
5
+ * The document structure is described with Effect `Schema`s, so decoding
6
+ * validates the JSON shape and reports precise errors. `RdfJsonFromString`
7
+ * decodes JSON text into a typed `Document`, and `DatasetFromRdfJson` /
8
+ * `DatasetFromString` transform documents into core `Dataset`s and back.
9
+ *
10
+ * ## RDF 1.2 extensions
11
+ *
12
+ * RDF/JSON predates RDF 1.2. This module defines two backwards-compatible
13
+ * extensions, accepted when parsing by default and written only when
14
+ * `extensions: true` is passed to the serializer:
15
+ *
16
+ * - **Base direction**: a literal object with a `"lang"` may carry
17
+ * `"direction": "ltr" | "rtl"`, denoting a directional language-tagged
18
+ * string (`rdf:dirLangString`).
19
+ * - **Triple terms**: an object value `{ "type": "triple", "value": { … } }`
20
+ * whose `value` has `"subject"` (a `uri` or `bnode` value), `"predicate"`
21
+ * (a `uri` value) and `"object"` (any object value, including another
22
+ * triple term) members.
23
+ *
24
+ * ```json
25
+ * {
26
+ * "http://example.org/s": {
27
+ * "http://example.org/says": [
28
+ * { "type": "literal", "value": "שלום", "lang": "he", "direction": "rtl" },
29
+ * { "type": "triple", "value": {
30
+ * "subject": { "type": "uri", "value": "http://example.org/a" },
31
+ * "predicate": { "type": "uri", "value": "http://example.org/b" },
32
+ * "object": { "type": "literal", "value": "c" } } }
33
+ * ]
34
+ * }
35
+ * }
36
+ * ```
37
+ *
38
+ * RDF/JSON describes a single graph: serialising quads in named graphs fails
39
+ * unless `mergeGraphs: true` is given.
40
+ *
41
+ * @since 0.1.0
42
+ */
43
+ import * as Arr from 'effect/Array';
44
+ import * as Effect from 'effect/Effect';
45
+ import { constVoid } from 'effect/Function';
46
+ import * as Iterable from 'effect/Iterable';
47
+ import * as Match from 'effect/Match';
48
+ import * as MutableHashSet from 'effect/MutableHashSet';
49
+ import * as Option from 'effect/Option';
50
+ import * as Order from 'effect/Order';
51
+ import * as Record from 'effect/Record';
52
+ import * as Result from 'effect/Result';
53
+ import * as Schema from 'effect/Schema';
54
+ import * as SchemaIssue from 'effect/SchemaIssue';
55
+ import * as SchemaTransformation from 'effect/SchemaTransformation';
56
+ import * as Dataset from '../Dataset.ts';
57
+ import * as PrefixMap from '../PrefixMap.ts';
58
+ import * as Serialization from '../Serialization.ts';
59
+ import * as Term from '../Term.ts';
60
+ import { parseJson } from './internal/json.ts';
61
+
62
+ const FORMAT_NAME = 'RDF/JSON';
63
+ const XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';
64
+ const RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString';
65
+ const RDF_DIR_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString';
66
+
67
+ /**
68
+ * The RDF/JSON format description.
69
+ *
70
+ * @since 0.1.0
71
+ * @category formats
72
+ */
73
+ export const format: Serialization.Format = Serialization.makeFormat({
74
+ name: FORMAT_NAME,
75
+ mediaType: 'application/rdf+json',
76
+ extensions: ['rj'],
77
+ datasets: false,
78
+ });
79
+
80
+ // Spans are named `RdfJson.parse`, `RdfJson.serialize`.
81
+ const trace: Serialization.SpanTarget = { module: 'RdfJson', format };
82
+
83
+ // -----------------------------------------------------------------------------
84
+ // Document model
85
+ // -----------------------------------------------------------------------------
86
+
87
+ /**
88
+ * An IRI value: `{ "type": "uri", "value": "http://…" }`.
89
+ *
90
+ * @since 0.1.0
91
+ * @category models
92
+ */
93
+ export type UriValue = {
94
+ readonly type: 'uri';
95
+ readonly value: string;
96
+ };
97
+
98
+ /**
99
+ * A blank node value: `{ "type": "bnode", "value": "_:label" }`.
100
+ *
101
+ * @since 0.1.0
102
+ * @category models
103
+ */
104
+ export type BlankNodeValue = {
105
+ readonly type: 'bnode';
106
+ readonly value: string;
107
+ };
108
+
109
+ /**
110
+ * A literal value. `lang` and `datatype` are mutually exclusive;
111
+ * `direction` is an RDF 1.2 extension that requires `lang`.
112
+ *
113
+ * @since 0.1.0
114
+ * @category models
115
+ */
116
+ export type LiteralValue = {
117
+ readonly type: 'literal';
118
+ readonly value: string;
119
+ readonly lang?: string;
120
+ readonly datatype?: string;
121
+ readonly direction?: Term.Direction;
122
+ };
123
+
124
+ /**
125
+ * An RDF 1.2 triple term value (extension).
126
+ *
127
+ * @since 0.1.0
128
+ * @category models
129
+ */
130
+ export type TripleTermValue = {
131
+ readonly type: 'triple';
132
+ readonly value: {
133
+ readonly subject: UriValue | BlankNodeValue;
134
+ readonly predicate: UriValue;
135
+ readonly object: ObjectValue;
136
+ };
137
+ };
138
+
139
+ /**
140
+ * Any value in the object position.
141
+ *
142
+ * @since 0.1.0
143
+ * @category models
144
+ */
145
+ export type ObjectValue = UriValue | BlankNodeValue | LiteralValue | TripleTermValue;
146
+
147
+ /**
148
+ * An RDF/JSON document: subject → predicate → array of object values.
149
+ * Subjects are IRIs or blank node labels (`"_:label"`).
150
+ *
151
+ * @since 0.1.0
152
+ * @category models
153
+ */
154
+ export interface Document {
155
+ readonly [subject: string]: { readonly [predicate: string]: ReadonlyArray<ObjectValue> };
156
+ }
157
+
158
+ // -----------------------------------------------------------------------------
159
+ // Schemas
160
+ // -----------------------------------------------------------------------------
161
+
162
+ /**
163
+ * @since 0.1.0
164
+ * @category schemas
165
+ */
166
+ export const UriValue: Schema.Codec<UriValue> = Schema.Struct({
167
+ type: Schema.Literal('uri'),
168
+ value: Schema.String,
169
+ }).annotate({ identifier: 'UriValue', description: 'An RDF/JSON IRI value' });
170
+
171
+ /**
172
+ * @since 0.1.0
173
+ * @category schemas
174
+ */
175
+ export const BlankNodeValue: Schema.Codec<BlankNodeValue> = Schema.Struct({
176
+ type: Schema.Literal('bnode'),
177
+ value: Schema.String.check(
178
+ Schema.isPattern(/^_:.+$/s, { message: 'Blank node values must have the form "_:label"' }),
179
+ ),
180
+ }).annotate({ identifier: 'BlankNodeValue', description: 'An RDF/JSON blank node value' });
181
+
182
+ const Direction = Schema.Literals(['ltr', 'rtl']);
183
+
184
+ /**
185
+ * @since 0.1.0
186
+ * @category schemas
187
+ */
188
+ export const LiteralValue: Schema.Codec<LiteralValue> = Schema.Struct({
189
+ type: Schema.Literal('literal'),
190
+ value: Schema.String,
191
+ lang: Schema.optionalKey(
192
+ Schema.String.check(
193
+ Schema.isPattern(/^[a-zA-Z]+(-[a-zA-Z0-9]+)*$/, { message: 'Invalid language tag' }),
194
+ ),
195
+ ),
196
+ datatype: Schema.optionalKey(Schema.String),
197
+ direction: Schema.optionalKey(Direction),
198
+ })
199
+ .check(
200
+ Schema.makeFilter(
201
+ (l) =>
202
+ l.lang !== undefined &&
203
+ l.datatype !== undefined &&
204
+ l.datatype !== RDF_LANG_STRING &&
205
+ l.datatype !== RDF_DIR_LANG_STRING
206
+ ? { path: ['datatype'], issue: '"datatype" cannot be combined with "lang"' }
207
+ : undefined,
208
+ {
209
+ identifier: 'LiteralLangDatatype',
210
+ title: 'Language or datatype',
211
+ description: 'A literal with a "lang" has no "datatype" other than rdf:langString',
212
+ },
213
+ ),
214
+ Schema.makeFilter(
215
+ (l) =>
216
+ l.direction !== undefined && l.lang === undefined
217
+ ? { path: ['direction'], issue: '"direction" requires "lang"' }
218
+ : undefined,
219
+ {
220
+ identifier: 'LiteralDirectionLang',
221
+ title: 'Direction requires language',
222
+ description: 'A literal with a "direction" also has a "lang"',
223
+ },
224
+ ),
225
+ )
226
+ .annotate({ identifier: 'LiteralValue', description: 'An RDF/JSON literal value' });
227
+
228
+ const SubjectValue = Schema.Union([UriValue, BlankNodeValue]);
229
+
230
+ /**
231
+ * An RDF 1.2 triple term (extension).
232
+ *
233
+ * @since 0.1.0
234
+ * @category schemas
235
+ */
236
+ export const TripleTermValue: Schema.Codec<TripleTermValue> = Schema.Struct({
237
+ type: Schema.Literal('triple'),
238
+ value: Schema.Struct({
239
+ subject: SubjectValue,
240
+ predicate: UriValue,
241
+ object: Schema.suspend((): Schema.Codec<ObjectValue> => ObjectValue),
242
+ }),
243
+ }).annotate({ identifier: 'TripleTermValue', description: 'An RDF 1.2 triple term (extension)' });
244
+
245
+ /**
246
+ * Any object value, including the RDF 1.2 extensions.
247
+ *
248
+ * @since 0.1.0
249
+ * @category schemas
250
+ */
251
+ export const ObjectValue: Schema.Codec<ObjectValue> = Schema.Union([
252
+ UriValue,
253
+ BlankNodeValue,
254
+ LiteralValue,
255
+ TripleTermValue,
256
+ ]).annotate({
257
+ expected: 'an RDF/JSON value ("type" must be "uri", "bnode", "literal" or "triple")',
258
+ });
259
+
260
+ /**
261
+ * The type of an object value in strict RDF/JSON (the `StrictObjectValue`
262
+ * schema's decoded type).
263
+ *
264
+ * @since 0.1.0
265
+ * @category models
266
+ */
267
+ export type StrictObjectValue = typeof StrictObjectValue.Type;
268
+
269
+ /**
270
+ * An object value in strict RDF/JSON: no triple terms and no base
271
+ * direction.
272
+ *
273
+ * @since 0.1.0
274
+ * @category schemas
275
+ */
276
+ export const StrictObjectValue: Schema.Codec<UriValue | BlankNodeValue | LiteralValue> =
277
+ Schema.Union([
278
+ UriValue,
279
+ BlankNodeValue,
280
+ LiteralValue.check(
281
+ Schema.makeFilter(
282
+ (l) =>
283
+ l.direction !== undefined
284
+ ? {
285
+ path: ['direction'],
286
+ issue: '"direction" is an RDF 1.2 extension (disabled in strict mode)',
287
+ }
288
+ : undefined,
289
+ {
290
+ identifier: 'StrictLiteralDirection',
291
+ title: 'No base direction',
292
+ description: 'A strict RDF/JSON literal has no "direction"',
293
+ },
294
+ ),
295
+ ),
296
+ ]).annotate({
297
+ expected: 'an RDF/JSON value ("type" must be "uri", "bnode" or "literal")',
298
+ });
299
+
300
+ const makeDocument = (value: Schema.Codec<ObjectValue>): Schema.Codec<Document> =>
301
+ Schema.Record(Schema.String, Schema.Record(Schema.String, Schema.Array(value)));
302
+
303
+ /**
304
+ * An RDF/JSON document, accepting the RDF 1.2 extensions.
305
+ *
306
+ * @since 0.1.0
307
+ * @category schemas
308
+ */
309
+ export const Document: Schema.Codec<Document> = makeDocument(ObjectValue).annotate({
310
+ description: 'An RDF/JSON document (with the RDF 1.2 extensions)',
311
+ });
312
+
313
+ /**
314
+ * A strict RDF/JSON document, rejecting the RDF 1.2 extensions.
315
+ *
316
+ * @since 0.1.0
317
+ * @category schemas
318
+ */
319
+ export const StrictDocument: Schema.Codec<Document> = makeDocument(StrictObjectValue).annotate({
320
+ description: 'A strict RDF/JSON document',
321
+ });
322
+
323
+ /**
324
+ * The decoded type of `RdfJsonFromString`: a validated `Document`.
325
+ *
326
+ * @since 0.1.0
327
+ * @category models
328
+ */
329
+ export type RdfJsonFromString = typeof RdfJsonFromString.Type;
330
+
331
+ /**
332
+ * Decodes RDF/JSON text into a validated `Document` (and encodes documents
333
+ * as JSON text).
334
+ *
335
+ * @since 0.1.0
336
+ * @category schemas
337
+ */
338
+ export const RdfJsonFromString: Schema.Codec<Document, string> = Schema.fromJsonString(Document);
339
+
340
+ // -----------------------------------------------------------------------------
341
+ // Conversions
342
+ // -----------------------------------------------------------------------------
343
+
344
+ /**
345
+ * Options for converting RDF/JSON documents to datasets.
346
+ *
347
+ * @since 0.1.0
348
+ * @category models
349
+ */
350
+ export interface ToDatasetOptions {
351
+ /** The graph to place triples in. Defaults to the default graph. */
352
+ readonly graph?: Term.Graph | undefined;
353
+ /**
354
+ * Prefix for blank node labels. Defaults to a fresh prefix per document,
355
+ * so that blank nodes from different documents never clash.
356
+ */
357
+ readonly blankNodePrefix?: string | undefined;
358
+ }
359
+
360
+ /**
361
+ * Converts a (validated) RDF/JSON document to a dataset.
362
+ *
363
+ * @since 0.1.0
364
+ * @category conversions
365
+ */
366
+ export const toDataset = (document: Document, options?: ToDatasetOptions): Dataset.Dataset => {
367
+ const prefix = options?.blankNodePrefix ?? Serialization.freshBlankNodePrefix();
368
+ const graph = options?.graph ?? Term.defaultGraph;
369
+ const blank = (label: string) => new Term.BlankNode(prefix + label.slice(2));
370
+ const subjectTerm = (key: string): Term.NamedNode | Term.BlankNode =>
371
+ key.startsWith('_:') ? blank(key) : new Term.NamedNode(key);
372
+ // Built once per document: `objectTerm` runs for every object value.
373
+ const objectTerm: (v: ObjectValue) => Term.Object = Match.type<ObjectValue>().pipe(
374
+ Match.withReturnType<Term.Object>(),
375
+ Match.when({ type: 'uri' }, (v) => new Term.NamedNode(v.value)),
376
+ Match.when({ type: 'bnode' }, (v) => blank(v.value)),
377
+ Match.when({ type: 'literal' }, (v) => {
378
+ if (v.lang !== undefined) {
379
+ return Term.literal(
380
+ v.value,
381
+ v.direction !== undefined ? { language: v.lang, direction: v.direction } : v.lang,
382
+ );
383
+ }
384
+ return Term.literal(v.value, new Term.NamedNode(v.datatype ?? XSD_STRING));
385
+ }),
386
+ Match.when(
387
+ { type: 'triple' },
388
+ (v) =>
389
+ new Term.Triple(
390
+ v.value.subject.type === 'uri'
391
+ ? new Term.NamedNode(v.value.subject.value)
392
+ : blank(v.value.subject.value),
393
+ new Term.NamedNode(v.value.predicate.value),
394
+ objectTerm(v.value.object),
395
+ ),
396
+ ),
397
+ Match.exhaustive,
398
+ );
399
+ return Dataset.mutate(Dataset.empty, (b) =>
400
+ Arr.forEach(Record.toEntries(document), ([s, predicates]) => {
401
+ const subject = subjectTerm(s);
402
+ Arr.forEach(Record.toEntries(predicates), ([p, objects]) => {
403
+ const predicate = new Term.NamedNode(p);
404
+ Arr.forEach(objects, (o) => b.add(new Term.Quad(subject, predicate, objectTerm(o), graph)));
405
+ });
406
+ }),
407
+ );
408
+ };
409
+
410
+ /**
411
+ * Options for converting quads to RDF/JSON.
412
+ *
413
+ * @since 0.1.0
414
+ * @category models
415
+ */
416
+ export interface FromQuadsOptions {
417
+ /**
418
+ * Whether to use the RDF 1.2 extensions (base direction and triple terms).
419
+ * When `false` (the default), data that needs them is rejected with an
420
+ * `RdfSerializeError`.
421
+ */
422
+ readonly extensions?: boolean | undefined;
423
+ /**
424
+ * Whether to merge quads from named graphs into the single RDF/JSON graph.
425
+ * When `false` (the default), quads in named graphs are rejected.
426
+ */
427
+ readonly mergeGraphs?: boolean | undefined;
428
+ }
429
+
430
+ class SerializeFailure {
431
+ readonly message: string;
432
+ constructor(message: string) {
433
+ this.message = message;
434
+ }
435
+ }
436
+
437
+ // Subject, predicate, object only — not `Term.QuadOrder`, which sorts by graph first: RDF/JSON
438
+ // has no graphs, so quads from every graph interleave by their triple.
439
+ const quadOrder: Order.Order<Term.Quad> = Order.combineAll([
440
+ Order.mapInput(Term.Order, (q: Term.Quad) => q.subject),
441
+ Order.mapInput(Term.Order, (q: Term.Quad) => q.predicate),
442
+ Order.mapInput(Term.Order, (q: Term.Quad) => q.object),
443
+ ]);
444
+
445
+ const failSerialize = (message: string): never => {
446
+ throw new SerializeFailure(message);
447
+ };
448
+
449
+ const resourceValue = (t: Term.NamedNode | Term.BlankNode): UriValue | BlankNodeValue =>
450
+ Term.isNamedNode(t) ? { type: 'uri', value: t.value } : { type: 'bnode', value: `_:${t.value}` };
451
+
452
+ const fromQuadsUnsafe = (quads: Iterable<Term.Quad>, options: FromQuadsOptions): Document => {
453
+ const extensions = options.extensions ?? false;
454
+ // Built once per serialisation: `objectValue` runs for every object term.
455
+ const objectValue: (t: Term.Object) => ObjectValue = Match.type<Term.Object>().pipe(
456
+ Match.withReturnType<ObjectValue>(),
457
+ Match.tag('NamedNode', 'BlankNode', (t) => resourceValue(t)),
458
+ Match.tag('Literal', (t) => {
459
+ if (t.language !== '') {
460
+ if (t.direction === undefined) return { type: 'literal', value: t.value, lang: t.language };
461
+ if (!extensions) {
462
+ failSerialize(
463
+ `The literal ${t.key} has a base direction, which requires the RDF/JSON extensions`,
464
+ );
465
+ }
466
+ return { type: 'literal', value: t.value, lang: t.language, direction: t.direction };
467
+ }
468
+ return t.datatype.value === XSD_STRING
469
+ ? { type: 'literal', value: t.value }
470
+ : { type: 'literal', value: t.value, datatype: t.datatype.value };
471
+ }),
472
+ Match.tag('Triple', (t) => {
473
+ if (!extensions) {
474
+ failSerialize(`The triple term ${t.key} requires the RDF/JSON extensions`);
475
+ }
476
+ const subject = t.subject;
477
+ if (Term.isTriple(subject)) {
478
+ throw new SerializeFailure(`Triple terms cannot have triple terms as subjects: ${t.key}`);
479
+ }
480
+ return {
481
+ type: 'triple',
482
+ value: {
483
+ subject: resourceValue(subject),
484
+ predicate: { type: 'uri', value: t.predicate.value },
485
+ object: objectValue(t.object),
486
+ },
487
+ };
488
+ }),
489
+ Match.exhaustive,
490
+ );
491
+ const merge = options.mergeGraphs ?? false;
492
+ const seen = MutableHashSet.empty<string>();
493
+ const sorted = Arr.sort(quads, quadOrder);
494
+ const document: { [subject: string]: { [predicate: string]: Array<ObjectValue> } } = {};
495
+ Arr.forEach(sorted, (q) => {
496
+ if (!Term.isDefaultGraph(q.graph) && !merge) {
497
+ failSerialize(`RDF/JSON cannot represent named graphs (found graph ${q.graph.key})`);
498
+ }
499
+ const tripleKey = `${q.subject.key} ${q.predicate.key} ${q.object.key}`;
500
+ if (MutableHashSet.has(seen, tripleKey)) return;
501
+ MutableHashSet.add(seen, tripleKey);
502
+ const subject = q.subject;
503
+ if (Term.isTriple(subject)) {
504
+ throw new SerializeFailure('RDF/JSON cannot represent triple terms as subjects');
505
+ }
506
+ const s = Term.isNamedNode(subject) ? subject.value : `_:${subject.value}`;
507
+ const predicates = (document[s] ??= {});
508
+ (predicates[q.predicate.value] ??= []).push(objectValue(q.object));
509
+ });
510
+ return document;
511
+ };
512
+
513
+ /**
514
+ * Converts quads to an RDF/JSON document.
515
+ *
516
+ * @since 0.1.0
517
+ * @category conversions
518
+ */
519
+ export const fromQuads = (
520
+ quads: Iterable<Term.Quad>,
521
+ options?: FromQuadsOptions,
522
+ ): Effect.Effect<Document, Serialization.RdfSerializeError> =>
523
+ Effect.try({
524
+ try: () => fromQuadsUnsafe(quads, options ?? {}),
525
+ // Anything but a `SerializeFailure` is a bug: rethrown, it becomes a defect.
526
+ catch: (e) => {
527
+ if (e instanceof SerializeFailure) {
528
+ return new Serialization.RdfSerializeError({ format: FORMAT_NAME, message: e.message });
529
+ }
530
+ throw e;
531
+ },
532
+ });
533
+
534
+ /**
535
+ * Builds a schema transforming RDF/JSON documents into datasets and back,
536
+ * with the given conversion options.
537
+ *
538
+ * @since 0.1.0
539
+ * @category schemas
540
+ */
541
+ export const makeDatasetSchema = (
542
+ options?: ToDatasetOptions & FromQuadsOptions & { readonly strict?: boolean | undefined },
543
+ ): Schema.Codec<Dataset.Dataset, Document> =>
544
+ (options?.strict === true ? StrictDocument : Document).pipe(
545
+ Schema.decodeTo(
546
+ Dataset.DatasetSchema,
547
+ SchemaTransformation.transformEffect({
548
+ decode: (document: Document) => Effect.sync(() => toDataset(document, options)),
549
+ encode: (dataset: Dataset.Dataset) =>
550
+ fromQuads(dataset, options).pipe(
551
+ Effect.mapError((e) => new SchemaIssue.InvalidValue({ message: e.message }, dataset)),
552
+ ),
553
+ }),
554
+ ),
555
+ );
556
+
557
+ /**
558
+ * A schema transforming RDF/JSON documents into datasets and back. Decoding
559
+ * accepts the RDF 1.2 extensions; encoding writes strict RDF/JSON and fails
560
+ * for data that needs the extensions or uses named graphs.
561
+ *
562
+ * @since 0.1.0
563
+ * @category schemas
564
+ */
565
+ export const DatasetFromRdfJson: Schema.Codec<Dataset.Dataset, Document> = makeDatasetSchema();
566
+
567
+ /**
568
+ * The decoded type of `DatasetFromString`: a `Dataset`.
569
+ *
570
+ * @since 0.1.0
571
+ * @category models
572
+ */
573
+ export type DatasetFromString = typeof DatasetFromString.Type;
574
+
575
+ /**
576
+ * A schema transforming RDF/JSON text into datasets and back.
577
+ *
578
+ * @since 0.1.0
579
+ * @category schemas
580
+ */
581
+ export const DatasetFromString: Schema.Codec<Dataset.Dataset, string> = Schema.fromJsonString(
582
+ DatasetFromRdfJson,
583
+ { space: 2 },
584
+ );
585
+
586
+ // -----------------------------------------------------------------------------
587
+ // Parser / serializer
588
+ // -----------------------------------------------------------------------------
589
+
590
+ /**
591
+ * Options for parsing RDF/JSON.
592
+ *
593
+ * @since 0.1.0
594
+ * @category models
595
+ */
596
+ export interface ParseOptions extends Serialization.ParseOptions {
597
+ /** Reject the RDF 1.2 extensions. Defaults to `false`. */
598
+ readonly strict?: boolean | undefined;
599
+ }
600
+
601
+ /**
602
+ * Finds the offset of the first JSON syntax error (JavaScript engines do not
603
+ * always report one). Only used once `JSON.parse` has failed.
604
+ */
605
+ const jsonErrorOffset = (input: string): number => {
606
+ let i = 0;
607
+ const ws = () => {
608
+ WHITESPACE.lastIndex = i;
609
+ i += WHITESPACE.exec(input)?.[0].length ?? 0;
610
+ };
611
+ const fail = (): never => {
612
+ throw i;
613
+ };
614
+ const string = () => {
615
+ // The longest well-formed prefix of the string; it fails where it stops
616
+ // unless a closing quote follows.
617
+ STRING_PREFIX.lastIndex = i;
618
+ i += STRING_PREFIX.exec(input)?.[0].length ?? 0;
619
+ if (input[i] !== '"') fail();
620
+ i++;
621
+ };
622
+ const NUMBER = /-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/y;
623
+ /** The members of an object or the items of an array, up to the closing `end`. */
624
+ const elements = (end: string, element: () => void) => {
625
+ i++;
626
+ ws();
627
+ if (input[i] === end) {
628
+ i++;
629
+ return;
630
+ }
631
+ repeat(() => {
632
+ element();
633
+ ws();
634
+ if (input[i] === ',') {
635
+ i++;
636
+ return true;
637
+ }
638
+ if (input[i] !== end) fail();
639
+ i++;
640
+ return false;
641
+ });
642
+ };
643
+ const member = () => {
644
+ ws();
645
+ if (input[i] !== '"') fail();
646
+ string();
647
+ ws();
648
+ if (input[i] !== ':') fail();
649
+ i++;
650
+ value();
651
+ };
652
+ const value = (): void => {
653
+ ws();
654
+ const c = input[i];
655
+ if (c === '{') elements('}', member);
656
+ else if (c === '[') elements(']', value);
657
+ else if (c === '"') string();
658
+ else if (input.startsWith('true', i)) i += 4;
659
+ else if (input.startsWith('false', i)) i += 5;
660
+ else if (input.startsWith('null', i)) i += 4;
661
+ else {
662
+ NUMBER.lastIndex = i;
663
+ const m = NUMBER.exec(input);
664
+ if (m === null) return fail();
665
+ i += m[0].length;
666
+ }
667
+ };
668
+ const scan = () => {
669
+ value();
670
+ ws();
671
+ return i;
672
+ };
673
+ // `fail` throws at the offending offset, which is `i`.
674
+ return Result.getOrElse(Result.try(scan), () => i);
675
+ };
676
+
677
+ const WHITESPACE = /[ \t\n\r]*/y;
678
+
679
+ /**
680
+ * The longest well-formed prefix of a JSON string, from its opening quote:
681
+ * any character but `"`, `\` and U+0000–U+001F (the C0 controls; DEL and the
682
+ * C1 controls are allowed), or an escape.
683
+ */
684
+ const STRING_PREFIX = /"(?:[^"\\\p{Cc}]|[\x7f-\x9f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*/uy;
685
+
686
+ /** Runs `step` until it returns `false`. */
687
+ const repeat = (step: () => boolean): void =>
688
+ Iterable.forEach(
689
+ Iterable.unfold(true, (again) =>
690
+ again ? Option.some([undefined, step()] as const) : Option.none(),
691
+ ),
692
+ constVoid,
693
+ );
694
+
695
+ const jsonErrorPosition = (input: string) => {
696
+ const offset = jsonErrorOffset(input);
697
+ const before = input.slice(0, offset);
698
+ const line = before.split('\n').length;
699
+ return { line, column: offset - before.lastIndexOf('\n') };
700
+ };
701
+
702
+ /**
703
+ * Parses RDF/JSON text into a dataset. The document shape is validated with
704
+ * the `Document` schema (or `StrictDocument` when `strict` is set), and
705
+ * validation failures are reported as `RdfParseError`s.
706
+ *
707
+ * @since 0.1.0
708
+ * @category parsing
709
+ */
710
+ export const parse = (
711
+ input: string,
712
+ options?: ParseOptions,
713
+ ): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>
714
+ Effect.gen(function* () {
715
+ const json = yield* Effect.fromResult(parseJson(input)).pipe(
716
+ Effect.mapError(
717
+ (e) =>
718
+ new Serialization.RdfParseError({
719
+ format: FORMAT_NAME,
720
+ message: `Invalid JSON: ${e.message}`,
721
+ ...jsonErrorPosition(input),
722
+ }),
723
+ ),
724
+ );
725
+ const document = yield* Schema.decodeUnknownEffect(
726
+ options?.strict === true ? StrictDocument : Document,
727
+ )(json).pipe(
728
+ Effect.mapError(
729
+ (e) => new Serialization.RdfParseError({ format: FORMAT_NAME, message: e.message }),
730
+ ),
731
+ );
732
+ return {
733
+ dataset: toDataset(document, options),
734
+ prefixes: PrefixMap.empty,
735
+ baseIri: options?.baseIri,
736
+ };
737
+ }).pipe(Serialization.withParseSpan(trace, input));
738
+
739
+ /**
740
+ * Options for serialising RDF/JSON.
741
+ *
742
+ * @since 0.1.0
743
+ * @category models
744
+ */
745
+ export interface SerializeOptions extends Serialization.SerializeOptions, FromQuadsOptions {
746
+ /** Indentation passed to `JSON.stringify`. Defaults to 2 spaces. */
747
+ readonly space?: number | string | undefined;
748
+ }
749
+
750
+ /**
751
+ * Serialises quads as RDF/JSON text.
752
+ *
753
+ * @since 0.1.0
754
+ * @category serializing
755
+ */
756
+ export const serialize = (
757
+ quads: Iterable<Term.Quad>,
758
+ options?: SerializeOptions,
759
+ ): Effect.Effect<string, Serialization.RdfSerializeError> =>
760
+ fromQuads(quads, options).pipe(
761
+ Effect.flatMap((document) =>
762
+ Schema.encodeEffect(Schema.fromJsonString(Schema.Unknown, { space: options?.space ?? 2 }))(
763
+ document,
764
+ ).pipe(
765
+ Effect.mapError(
766
+ (e) => new Serialization.RdfSerializeError({ format: FORMAT_NAME, message: e.message }),
767
+ ),
768
+ ),
769
+ ),
770
+ Effect.map((text) => `${text}\n`),
771
+ Serialization.withSerializeSpan(trace),
772
+ );
773
+
774
+ /**
775
+ * The RDF/JSON parser.
776
+ *
777
+ * @since 0.1.0
778
+ * @category parsing
779
+ */
780
+ export const parser: Serialization.Parser<ParseOptions> = Serialization.makeParser({
781
+ format,
782
+ parse,
783
+ });
784
+
785
+ /**
786
+ * The RDF/JSON serializer.
787
+ *
788
+ * @since 0.1.0
789
+ * @category serializing
790
+ */
791
+ export const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({
792
+ format,
793
+ serialize,
794
+ });
795
+
796
+ /**
797
+ * The RDF/JSON codec. Its `schema` is `DatasetFromString`, so decoding
798
+ * errors carry the precise schema issue.
799
+ *
800
+ * @since 0.1.0
801
+ * @category codecs
802
+ */
803
+ export const codec: Serialization.Codec<ParseOptions, SerializeOptions> = {
804
+ ...Serialization.makeCodec(parser, serializer),
805
+ schema: DatasetFromString,
806
+ };