@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,696 @@
1
+ /**
2
+ * The Notation3 data model.
3
+ *
4
+ * N3 extends RDF with quoted graphs (formulas), first-class lists
5
+ * (collections), universally quantified variables and literals or other
6
+ * non-IRI terms in any position of a statement. Core RDF `Quad`s only allow
7
+ * ground terms, so this module defines an N3-specific model on top of the
8
+ * core term classes:
9
+ *
10
+ * - `N3Term` = core `NamedNode` | `BlankNode` | `Literal` | `Variable`, plus
11
+ * the N3-only `Collection` (an N3 list) and `Formula` (a graph term).
12
+ * - `Statement` — a triple of arbitrary `N3Term`s.
13
+ * - `Formula` — an unordered set of statements. Formulas are values: two
14
+ * formulas with the same statements are equal (`Equal.equals`), which
15
+ * matches the N3 semantics of graph terms.
16
+ * - `Document` — a parsed N3 document: its top-level formula together with
17
+ * the prefixes and base IRI it declared.
18
+ *
19
+ * Quick variables (`?x`) are represented by core `Term.Variable`s. Blank
20
+ * nodes keep their core representation; a blank node is implicitly
21
+ * existentially quantified in the innermost formula that contains all of its
22
+ * occurrences.
23
+ *
24
+ * Like core terms, `Collection`, `Formula` and `Statement` implement `Equal`
25
+ * and `Hash` through a canonical `key`.
26
+ *
27
+ * @since 0.1.0
28
+ */
29
+ import * as Arr from 'effect/Array';
30
+ import * as Equal from 'effect/Equal';
31
+ import * as Hash from 'effect/Hash';
32
+ import { NodeInspectSymbol } from 'effect/Inspectable';
33
+ import * as MutableHashMap from 'effect/MutableHashMap';
34
+ import { pipeArguments, type Pipeable } from 'effect/Pipeable';
35
+ import * as Order from 'effect/Order';
36
+ import { hasProperty } from 'effect/Predicate';
37
+ import * as Schema from 'effect/Schema';
38
+ import * as SchemaTransformation from 'effect/SchemaTransformation';
39
+ import * as PrefixMap from '../PrefixMap.ts';
40
+ import * as Term from '../Term.ts';
41
+ import * as Guards from './internal/guards.ts';
42
+ import { loop } from './internal/loop.ts';
43
+
44
+ /**
45
+ * @since 0.1.0
46
+ * @category symbols
47
+ */
48
+ export const TypeId: unique symbol = Symbol.for('@thomasfosterau/effect-rdf/n3/Model');
49
+
50
+ /**
51
+ * @since 0.1.0
52
+ * @category symbols
53
+ */
54
+ export type TypeId = typeof TypeId;
55
+
56
+ abstract class N3Base implements Equal.Equal, Pipeable {
57
+ readonly [TypeId]: TypeId = TypeId;
58
+ abstract readonly _tag: string;
59
+ /** The key once computed (no key is empty: the shortest are `()` and `{}`). */
60
+ #key = '';
61
+ /** The hash once computed (0 until then; a hash of 0 is merely computed again). */
62
+ #hash = 0;
63
+
64
+ /** A canonical, N3-like serialisation used for equality and hashing. */
65
+ get key(): string {
66
+ if (this.#key === '') this.#key = this.computeKey();
67
+ return this.#key;
68
+ }
69
+
70
+ protected abstract computeKey(): string;
71
+
72
+ /**
73
+ * Statements, collections and formulas override this to combine their
74
+ * parts' hashes, so that a formula deduplicating its statements builds no
75
+ * key; whatever the override, equal keys give equal hashes.
76
+ */
77
+ protected computeHash(): number {
78
+ return Hash.string(this.key);
79
+ }
80
+
81
+ /** RDF/JS-style alias of `_tag`. */
82
+ get termType(): this['_tag'] {
83
+ return this._tag;
84
+ }
85
+
86
+ equals(that: unknown): boolean {
87
+ return isN3Base(that) && that.key === this.key;
88
+ }
89
+
90
+ [Equal.symbol](that: Equal.Equal): boolean {
91
+ return this.equals(that);
92
+ }
93
+
94
+ [Hash.symbol](): number {
95
+ if (this.#hash === 0) this.#hash = this.computeHash();
96
+ return this.#hash;
97
+ }
98
+
99
+ pipe() {
100
+ return pipeArguments(this, arguments);
101
+ }
102
+
103
+ toString(): string {
104
+ return this.key;
105
+ }
106
+
107
+ toJSON(): unknown {
108
+ return { _tag: this._tag, value: this.key };
109
+ }
110
+
111
+ [NodeInspectSymbol](): string {
112
+ return `${this._tag}(${this.key})`;
113
+ }
114
+ }
115
+
116
+ /** Whether a value is an N3 collection, statement or formula (it carries the `TypeId`). */
117
+ const isN3Base = (u: unknown): u is N3Base => hasProperty(u, TypeId);
118
+
119
+ /**
120
+ * An N3 list (collection): an ordered, first-class sequence of terms,
121
+ * written `( a b c )`. The empty collection corresponds to `rdf:nil`.
122
+ *
123
+ * @since 0.1.0
124
+ * @category models
125
+ */
126
+ export class Collection extends N3Base {
127
+ readonly _tag = 'Collection' as const;
128
+ readonly items: ReadonlyArray<N3Term>;
129
+ constructor(items: ReadonlyArray<N3Term>) {
130
+ super();
131
+ this.items = items;
132
+ }
133
+ protected override computeHash(): number {
134
+ return this.items.reduce((h, item) => Hash.combine(h, item[Hash.symbol]()), Hash.string('()'));
135
+ }
136
+ protected computeKey(): string {
137
+ return Arr.isReadonlyArrayEmpty(this.items)
138
+ ? '()'
139
+ : `( ${this.items.map((t) => t.key).join(' ')} )`;
140
+ }
141
+ }
142
+
143
+ /**
144
+ * An N3 statement: a triple whose subject, predicate and object may be any
145
+ * `N3Term`.
146
+ *
147
+ * @since 0.1.0
148
+ * @category models
149
+ */
150
+ export class Statement<
151
+ out S extends N3Term = N3Term,
152
+ out P extends N3Term = N3Term,
153
+ out O extends N3Term = N3Term,
154
+ > extends N3Base {
155
+ readonly _tag = 'Statement' as const;
156
+ readonly subject: S;
157
+ readonly predicate: P;
158
+ readonly object: O;
159
+ constructor(subject: S, predicate: P, object: O) {
160
+ super();
161
+ this.subject = subject;
162
+ this.predicate = predicate;
163
+ this.object = object;
164
+ }
165
+ protected override computeHash(): number {
166
+ return Hash.combine(
167
+ Hash.combine(this.subject[Hash.symbol](), this.predicate[Hash.symbol]()),
168
+ this.object[Hash.symbol](),
169
+ );
170
+ }
171
+ protected computeKey(): string {
172
+ return `${this.subject.key} ${this.predicate.key} ${this.object.key}`;
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Whether two terms are equal (have the same key), compared by their parts
178
+ * where that avoids building keys: identical or differently hashed terms are
179
+ * decided at once, and statements, collections and formulas are compared
180
+ * part by part. Only leaf terms (IRIs, literals, blank nodes, variables) are
181
+ * compared by key.
182
+ */
183
+ const sameTerm = (a: N3Term, b: N3Term): boolean => {
184
+ if (a === b) return true;
185
+ if (a[Hash.symbol]() !== b[Hash.symbol]()) return false;
186
+ if (a instanceof Formula) return b instanceof Formula && sameFormula(a, b);
187
+ if (a instanceof Collection) {
188
+ return (
189
+ b instanceof Collection &&
190
+ a.items.length === b.items.length &&
191
+ a.items.every((item, i) => sameTerm(item, b.items[i] ?? item))
192
+ );
193
+ }
194
+ if (b instanceof Formula || b instanceof Collection) return false;
195
+ return a.key === b.key;
196
+ };
197
+
198
+ /** Whether two statements are equal: their terms are (`sameTerm`). */
199
+ const sameStatement = (a: Statement, b: Statement): boolean =>
200
+ sameTerm(a.subject, b.subject) &&
201
+ sameTerm(a.predicate, b.predicate) &&
202
+ sameTerm(a.object, b.object);
203
+
204
+ /** Whether two formulas have the same statements (searched for small ones, by key otherwise). */
205
+ const sameFormula = (a: Formula, b: Formula): boolean => {
206
+ const as = a.statements;
207
+ const bs = b.statements;
208
+ if (as.length !== bs.length) return false;
209
+ if (as.length > 8) return a.key === b.key;
210
+ return as.every((s) => bs.some((t) => sameStatement(s, t)));
211
+ };
212
+
213
+ /** A placeholder for the probe's statement before the first is placed. */
214
+ const emptyStatement: Statement = new Statement(
215
+ Term.namedNode(''),
216
+ Term.namedNode(''),
217
+ Term.namedNode(''),
218
+ );
219
+
220
+ /**
221
+ * The statements without duplicates, keeping the first of each: by their
222
+ * structural hashes, comparing keys only when two hashes are equal, so that
223
+ * no key is built for statements that differ.
224
+ */
225
+ const deduplicate = (all: ReadonlyArray<Statement>): ReadonlyArray<Statement> => {
226
+ const n = all.length;
227
+ if (n < 2) return all;
228
+ // Open addressing over a power-of-two table at most half full: each slot holds a statement's
229
+ // hash and its position + 1 (0 when empty), probed linearly
230
+ const mask = 2 ** Math.ceil(Math.log2(n * 2)) - 1;
231
+ const hashes = new Int32Array(mask + 1);
232
+ const slots = new Int32Array(mask + 1);
233
+ const unique: Array<Statement> = [];
234
+ // The probe of the statement being placed: one closure for the whole table
235
+ let current: Statement = emptyStatement;
236
+ let hash = 0;
237
+ let i = 0;
238
+ let duplicate = false;
239
+ const probe = (): boolean => {
240
+ const slot = slots[i] ?? 0;
241
+ if (slot === 0) return false;
242
+ if (hashes[i] === hash && sameStatement(current, all[slot - 1] ?? current)) {
243
+ duplicate = true;
244
+ return false;
245
+ }
246
+ i = (i + 1) & mask;
247
+ return true;
248
+ };
249
+ all.forEach((s, k) => {
250
+ current = s;
251
+ hash = s[Hash.symbol]() | 0;
252
+ i = hash & mask;
253
+ duplicate = false;
254
+ loop(probe);
255
+ if (duplicate) return;
256
+ hashes[i] = hash;
257
+ slots[i] = k + 1;
258
+ unique.push(s);
259
+ });
260
+ return unique.length === n ? all : unique;
261
+ };
262
+
263
+ /**
264
+ * An N3 formula (graph term): an unordered set of statements, written
265
+ * `{ ... }`. Duplicate statements are removed (when the statements are first
266
+ * read), and equality is set equality of the statements (blank node labels are compared
267
+ * literally; use `Isomorphism.isomorphic` for a blank-node-aware comparison).
268
+ *
269
+ * @since 0.1.0
270
+ * @category models
271
+ */
272
+ export class Formula extends N3Base {
273
+ readonly _tag = 'Formula' as const;
274
+ /** The statements as given (copied), then without duplicates once first read. */
275
+ #statements: ReadonlyArray<Statement>;
276
+ #deduplicated = false;
277
+ constructor(statements: Iterable<Statement>) {
278
+ super();
279
+ this.#statements = Array.from(statements);
280
+ }
281
+ /**
282
+ * The statements, without duplicates, in the order first given. They are
283
+ * deduplicated the first time they are read, not when the formula is
284
+ * made, so a formula that is never read (a parse whose result is only
285
+ * checked for errors, a formula a rule discards) costs nothing to dedupe.
286
+ */
287
+ get statements(): ReadonlyArray<Statement> {
288
+ if (!this.#deduplicated) {
289
+ this.#statements = deduplicate(this.#statements);
290
+ this.#deduplicated = true;
291
+ }
292
+ return this.#statements;
293
+ }
294
+ /** The sum of the statements' hashes: the same for the same set, whatever the order. */
295
+ protected override computeHash(): number {
296
+ return Hash.optimize(this.statements.reduce((h, st) => (h + st[Hash.symbol]()) | 0, 0x7b7d));
297
+ }
298
+ /** The number of statements in the formula. */
299
+ get size(): number {
300
+ // Fewer than two statements cannot hold a duplicate
301
+ return this.#statements.length < 2 ? this.#statements.length : this.statements.length;
302
+ }
303
+ protected computeKey(): string {
304
+ if (Arr.isReadonlyArrayEmpty(this.statements)) return '{}';
305
+ const keys = Arr.sort(
306
+ this.statements.map((s) => s.key),
307
+ Order.String,
308
+ );
309
+ return `{ ${keys.join(' . ')} }`;
310
+ }
311
+ [Symbol.iterator](): Iterator<Statement> {
312
+ return this.statements[Symbol.iterator]();
313
+ }
314
+ }
315
+
316
+ /**
317
+ * Any term that may appear in an N3 statement.
318
+ *
319
+ * @since 0.1.0
320
+ * @category models
321
+ */
322
+ export type N3Term =
323
+ | Term.NamedNode
324
+ | Term.BlankNode
325
+ | Term.Literal
326
+ | Term.Variable
327
+ | Collection
328
+ | Formula;
329
+
330
+ /**
331
+ * A parsed N3 document.
332
+ *
333
+ * @since 0.1.0
334
+ * @category models
335
+ */
336
+ export interface Document {
337
+ /** The top-level formula: every statement asserted by the document. */
338
+ readonly formula: Formula;
339
+ /** The prefixes declared by the document (in declaration order). */
340
+ readonly prefixes: PrefixMap.PrefixMap;
341
+ /** The final in-scope base IRI of the document, if any. */
342
+ readonly baseIri: string | undefined;
343
+ }
344
+
345
+ // -----------------------------------------------------------------------------
346
+ // Constructors
347
+ // -----------------------------------------------------------------------------
348
+
349
+ /**
350
+ * @since 0.1.0
351
+ * @category constructors
352
+ */
353
+ export const statement = <S extends N3Term, P extends N3Term, O extends N3Term>(
354
+ subject: S,
355
+ predicate: P,
356
+ object: O,
357
+ ): Statement<S, P, O> => new Statement(subject, predicate, object);
358
+
359
+ /**
360
+ * @since 0.1.0
361
+ * @category constructors
362
+ */
363
+ export const formula = (statements: Iterable<Statement> = []): Formula => new Formula(statements);
364
+
365
+ /**
366
+ * The empty formula `{}`.
367
+ *
368
+ * @since 0.1.0
369
+ * @category constructors
370
+ */
371
+ export const emptyFormula: Formula = new Formula([]);
372
+
373
+ /**
374
+ * @since 0.1.0
375
+ * @category constructors
376
+ */
377
+ export const collection = (items: Iterable<N3Term> = []): Collection =>
378
+ new Collection(Array.from(items));
379
+
380
+ /**
381
+ * Creates a document from a formula.
382
+ *
383
+ * @since 0.1.0
384
+ * @category constructors
385
+ */
386
+ export const document = (
387
+ formula: Formula,
388
+ options?: { readonly prefixes?: PrefixMap.PrefixMap; readonly baseIri?: string | undefined },
389
+ ): Document => ({
390
+ formula,
391
+ prefixes: options?.prefixes ?? PrefixMap.empty,
392
+ baseIri: options?.baseIri,
393
+ });
394
+
395
+ // -----------------------------------------------------------------------------
396
+ // Guards
397
+ // -----------------------------------------------------------------------------
398
+
399
+ /**
400
+ * @since 0.1.0
401
+ * @category guards
402
+ */
403
+ export const isFormula = (u: unknown): u is Formula => u instanceof Formula;
404
+
405
+ /**
406
+ * @since 0.1.0
407
+ * @category guards
408
+ */
409
+ export const isCollection = (u: unknown): u is Collection => u instanceof Collection;
410
+
411
+ /**
412
+ * @since 0.1.0
413
+ * @category guards
414
+ */
415
+ export const isStatement = (u: unknown): u is Statement => u instanceof Statement;
416
+
417
+ /**
418
+ * Whether a value is an `N3Term` (a core IRI, blank node, literal or
419
+ * variable, or an N3 collection or formula).
420
+ *
421
+ * @since 0.1.0
422
+ * @category guards
423
+ */
424
+ export const isN3Term = (u: unknown): u is N3Term =>
425
+ isFormula(u) ||
426
+ isCollection(u) ||
427
+ Term.isNamedNode(u) ||
428
+ Term.isBlankNode(u) ||
429
+ Term.isLiteral(u) ||
430
+ Term.isVariable(u);
431
+
432
+ // -----------------------------------------------------------------------------
433
+ // Inspection
434
+ // -----------------------------------------------------------------------------
435
+
436
+ /**
437
+ * Whether a term, statement or formula is free of variables (recursively).
438
+ *
439
+ * @since 0.1.0
440
+ * @category predicates
441
+ */
442
+ export const isGround = (self: N3Term | Statement): boolean => groundness(self);
443
+
444
+ // Plain refinements rather than `Match`: `isGround` runs for every term it visits.
445
+ const groundness = (self: N3Term | Statement): boolean =>
446
+ self instanceof Statement
447
+ ? groundness(self.subject) && groundness(self.predicate) && groundness(self.object)
448
+ : self instanceof Formula
449
+ ? self.statements.every(groundness)
450
+ : self instanceof Collection
451
+ ? self.items.every(groundness)
452
+ : !Guards.isVariable(self);
453
+
454
+ /** Adds the atoms of `self` that pass `test` to `out`, by key, in order of first occurrence. */
455
+ const collect = <A extends N3Term>(
456
+ self: N3Term | Statement,
457
+ test: (t: N3Term) => t is A,
458
+ out: MutableHashMap.MutableHashMap<string, A>,
459
+ ): void => {
460
+ if (self instanceof Statement) {
461
+ collect(self.subject, test, out);
462
+ collect(self.predicate, test, out);
463
+ collect(self.object, test, out);
464
+ } else if (self instanceof Formula) {
465
+ self.statements.forEach((s) => collect(s, test, out));
466
+ } else if (self instanceof Collection) {
467
+ self.items.forEach((i) => collect(i, test, out));
468
+ } else if (test(self)) {
469
+ MutableHashMap.set(out, self.key, self);
470
+ }
471
+ };
472
+
473
+ /**
474
+ * All distinct variables occurring in a term, statement or formula
475
+ * (including inside nested formulas and collections), in order of first
476
+ * occurrence.
477
+ *
478
+ * @since 0.1.0
479
+ * @category getters
480
+ */
481
+ export const variables = (self: N3Term | Statement): ReadonlyArray<Term.Variable> => {
482
+ const out = MutableHashMap.empty<string, Term.Variable>();
483
+ collect(self, Guards.isVariable, out);
484
+ return Arr.fromIterable(MutableHashMap.values(out));
485
+ };
486
+
487
+ /**
488
+ * All distinct blank nodes occurring in a term, statement or formula
489
+ * (including inside nested formulas and collections).
490
+ *
491
+ * @since 0.1.0
492
+ * @category getters
493
+ */
494
+ export const blankNodes = (self: N3Term | Statement): ReadonlyArray<Term.BlankNode> => {
495
+ const out = MutableHashMap.empty<string, Term.BlankNode>();
496
+ collect(self, Guards.isBlankNode, out);
497
+ return Arr.fromIterable(MutableHashMap.values(out));
498
+ };
499
+
500
+ // -----------------------------------------------------------------------------
501
+ // Combinators
502
+ // -----------------------------------------------------------------------------
503
+
504
+ /**
505
+ * Applies `f` to every atomic term (IRI, blank node, literal, variable),
506
+ * recursing into collections, statements and nested formulas.
507
+ *
508
+ * @since 0.1.0
509
+ * @category combinators
510
+ */
511
+ export function mapTerms<T extends N3Term | Statement>(
512
+ self: T,
513
+ f: (term: Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable) => N3Term,
514
+ ): T extends Statement ? Statement : T extends Formula ? Formula : N3Term;
515
+ export function mapTerms(
516
+ self: N3Term | Statement,
517
+ f: (term: Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable) => N3Term,
518
+ ): N3Term | Statement {
519
+ return self instanceof Statement ? mapStatement(self, f) : mapTerm(self, f);
520
+ }
521
+
522
+ type Atom = Term.NamedNode | Term.BlankNode | Term.Literal | Term.Variable;
523
+
524
+ // Plain refinements rather than `Match`: `mapTerms` runs for every term it visits.
525
+ const mapTerm = (t: N3Term, f: (term: Atom) => N3Term): N3Term =>
526
+ t instanceof Formula
527
+ ? new Formula(t.statements.map((s) => mapStatement(s, f)))
528
+ : t instanceof Collection
529
+ ? new Collection(t.items.map((i) => mapTerm(i, f)))
530
+ : f(t);
531
+
532
+ const mapStatement = (s: Statement, f: (term: Atom) => N3Term): Statement =>
533
+ new Statement(mapTerm(s.subject, f), mapTerm(s.predicate, f), mapTerm(s.object, f));
534
+
535
+ /**
536
+ * Replaces variables by the terms bound to them (by variable name); unbound
537
+ * variables are kept.
538
+ *
539
+ * @since 0.1.0
540
+ * @category combinators
541
+ */
542
+ export function substitute<T extends N3Term | Statement>(
543
+ self: T,
544
+ bindings: ReadonlyMap<string, N3Term>,
545
+ ): T extends Statement ? Statement : T extends Formula ? Formula : N3Term;
546
+ export function substitute(
547
+ self: N3Term | Statement,
548
+ bindings: ReadonlyMap<string, N3Term>,
549
+ ): N3Term | Statement {
550
+ return mapTerms(self, (t) => (Guards.isVariable(t) ? (bindings.get(t.value) ?? t) : t));
551
+ }
552
+
553
+ /**
554
+ * Adds statements to a formula.
555
+ *
556
+ * @since 0.1.0
557
+ * @category combinators
558
+ */
559
+ export const addStatements = (self: Formula, statements: Iterable<Statement>): Formula =>
560
+ new Formula([...self.statements, ...statements]);
561
+
562
+ /**
563
+ * Whether a formula contains a statement.
564
+ *
565
+ * @since 0.1.0
566
+ * @category predicates
567
+ */
568
+ export const hasStatement = (self: Formula, statement: Statement): boolean =>
569
+ self.statements.some((s) => s.key === statement.key);
570
+
571
+ // -----------------------------------------------------------------------------
572
+ // Schemas
573
+ // -----------------------------------------------------------------------------
574
+
575
+ /**
576
+ * Schema of a formula; its JSON codec is
577
+ * `{ "type": "formula", "statements": [{ subject, predicate, object }, …] }`
578
+ * over JSON N3 terms.
579
+ *
580
+ * @since 0.1.0
581
+ * @category schemas
582
+ */
583
+ export const FormulaSchema: Schema.declare<Formula> = Schema.declare(isFormula, {
584
+ identifier: 'Formula',
585
+ toCodecJson: () =>
586
+ Schema.link<Formula>()(
587
+ Schema.Struct({
588
+ type: Schema.tag('formula'),
589
+ statements: Schema.Array(Schema.suspend(() => StatementSchema)),
590
+ }),
591
+ SchemaTransformation.transform({
592
+ decode: (j) => new Formula(j.statements),
593
+ encode: (f) => ({ type: 'formula' as const, statements: f.statements }),
594
+ }),
595
+ ),
596
+ });
597
+
598
+ /**
599
+ * The value a `FormulaSchema` decodes to.
600
+ *
601
+ * @since 0.1.0
602
+ * @category schemas
603
+ */
604
+ export type FormulaSchema = typeof FormulaSchema.Type;
605
+
606
+ /**
607
+ * Schema of a collection; its JSON codec is
608
+ * `{ "type": "collection", "items": [ … ] }` over JSON N3 terms.
609
+ *
610
+ * @since 0.1.0
611
+ * @category schemas
612
+ */
613
+ export const CollectionSchema: Schema.declare<Collection> = Schema.declare(isCollection, {
614
+ identifier: 'Collection',
615
+ toCodecJson: () =>
616
+ Schema.link<Collection>()(
617
+ Schema.Struct({
618
+ type: Schema.tag('collection'),
619
+ items: Schema.Array(Schema.suspend(() => N3TermSchema)),
620
+ }),
621
+ SchemaTransformation.transform({
622
+ decode: (j) => new Collection(j.items),
623
+ encode: (c) => ({ type: 'collection' as const, items: c.items }),
624
+ }),
625
+ ),
626
+ });
627
+
628
+ /**
629
+ * The value a `CollectionSchema` decodes to.
630
+ *
631
+ * @since 0.1.0
632
+ * @category schemas
633
+ */
634
+ export type CollectionSchema = typeof CollectionSchema.Type;
635
+
636
+ /**
637
+ * Schema of a statement; its JSON codec is `{ subject, predicate, object }`
638
+ * over JSON N3 terms.
639
+ *
640
+ * @since 0.1.0
641
+ * @category schemas
642
+ */
643
+ export const StatementSchema: Schema.declare<Statement> = Schema.declare(isStatement, {
644
+ identifier: 'Statement',
645
+ toCodecJson: () =>
646
+ Schema.link<Statement>()(
647
+ Schema.Struct({
648
+ subject: Schema.suspend(() => N3TermSchema),
649
+ predicate: Schema.suspend(() => N3TermSchema),
650
+ object: Schema.suspend(() => N3TermSchema),
651
+ }),
652
+ SchemaTransformation.transform({
653
+ decode: (j) => new Statement(j.subject, j.predicate, j.object),
654
+ encode: (st) => ({ subject: st.subject, predicate: st.predicate, object: st.object }),
655
+ }),
656
+ ),
657
+ });
658
+
659
+ /**
660
+ * The value a `StatementSchema` decodes to.
661
+ *
662
+ * @since 0.1.0
663
+ * @category schemas
664
+ */
665
+ export type StatementSchema = typeof StatementSchema.Type;
666
+
667
+ /**
668
+ * Schema of any N3 term; its JSON codec is core's `TermJson` term (IRIs,
669
+ * blank nodes, literals, variables) or a JSON collection or formula.
670
+ *
671
+ * @since 0.1.0
672
+ * @category schemas
673
+ */
674
+ export const N3TermSchema: Schema.declare<N3Term> = Schema.declare(isN3Term, {
675
+ identifier: 'N3Term',
676
+ toCodecJson: () =>
677
+ Schema.link<N3Term>()(
678
+ Schema.Union([
679
+ Term.NamedNodeSchema,
680
+ Term.BlankNodeSchema,
681
+ Term.LiteralSchema,
682
+ Term.VariableSchema,
683
+ CollectionSchema,
684
+ FormulaSchema,
685
+ ]),
686
+ SchemaTransformation.passthrough(),
687
+ ),
688
+ });
689
+
690
+ /**
691
+ * The value a `N3TermSchema` decodes to.
692
+ *
693
+ * @since 0.1.0
694
+ * @category schemas
695
+ */
696
+ export type N3TermSchema = typeof N3TermSchema.Type;