@thomasfosterau/effect-rdf 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2250 -1
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +187 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1,568 @@
1
+ /**
2
+ * A simple forward-chaining N3 reasoner.
3
+ *
4
+ * Rules are the top-level statements `{ premise } => { conclusion }` (and
5
+ * `{ conclusion } <= { premise }`). The reasoner repeatedly matches every
6
+ * rule premise against the current statements — joining triple patterns with
7
+ * backtracking and evaluating builtins — and adds the instantiated
8
+ * conclusions, until a fixpoint is reached.
9
+ *
10
+ * - Variables (`?x`) and blank nodes in a premise are matched like query
11
+ * variables; blank nodes that occur only in a conclusion are instantiated
12
+ * with fresh blank nodes for each distinct set of bindings (so the closure
13
+ * is finite whenever the rules do not keep inventing new terms).
14
+ * - Rules inferred by other rules are applied too.
15
+ * - A conclusion `false` signals an inconsistency and fails with
16
+ * `ReasonerError`.
17
+ * - Builtins: a pragmatic subset of `math:` (arithmetic, comparisons,
18
+ * trigonometry), `string:` (concatenation, comparisons, regular
19
+ * expressions), `list:` (`in`, `member`, `length`, `first`, `last`, `rest`,
20
+ * `append`, `iterate`, `memberAt`, `remove`) and `log:` (`equalTo`,
21
+ * `notEqualTo`, `includes`, `notIncludes`, `conjunction`, `uri`, `dtlit`,
22
+ * `langlit`, `rawType`, `collectAllIn`, `forAllIn`). Builtins whose inputs
23
+ * are not yet bound are deferred until the other premise statements have
24
+ * been matched.
25
+ *
26
+ * @since 0.1.0
27
+ */
28
+ import * as Arr from 'effect/Array';
29
+ import * as Effect from 'effect/Effect';
30
+ import * as MutableHashMap from 'effect/MutableHashMap';
31
+ import * as MutableHashSet from 'effect/MutableHashSet';
32
+ import * as Option from 'effect/Option';
33
+ import * as Order from 'effect/Order';
34
+ import * as Schema from 'effect/Schema';
35
+ import * as Term from '../Term.ts';
36
+ import { rdf, xsd } from '../Vocab.ts';
37
+ import * as Builtins from './internal/builtins.ts';
38
+ import * as Guards from './internal/guards.ts';
39
+ import { loop } from './internal/loop.ts';
40
+ import * as Isomorphism from './Isomorphism.ts';
41
+ import * as Model from './Model.ts';
42
+ import { log } from './Vocab.ts';
43
+
44
+ /**
45
+ * Reasoning failed: an inconsistency was derived or a limit was exceeded.
46
+ *
47
+ * @since 0.1.0
48
+ * @category errors
49
+ */
50
+ export class ReasonerError extends Schema.TaggedError<ReasonerError>()('N3ReasonerError', {
51
+ message: Schema.String,
52
+ }) {}
53
+
54
+ /**
55
+ * @since 0.1.0
56
+ * @category models
57
+ */
58
+ export interface Options {
59
+ /** Maximum number of forward-chaining rounds (default 1000). */
60
+ readonly maxRounds?: number | undefined;
61
+ /** Maximum number of statements in the closure (default 1 000 000). */
62
+ readonly maxStatements?: number | undefined;
63
+ /** Whether to evaluate builtins (default `true`). */
64
+ readonly builtins?: boolean | undefined;
65
+ }
66
+
67
+ /**
68
+ * A rule extracted from a formula.
69
+ *
70
+ * @since 0.1.0
71
+ * @category models
72
+ */
73
+ export interface Rule {
74
+ readonly premise: ReadonlyArray<Model.Statement>;
75
+ readonly conclusion: Model.N3Term;
76
+ /** The statement the rule was read from. */
77
+ readonly source: Model.Statement;
78
+ }
79
+
80
+ /**
81
+ * The result of reasoning.
82
+ *
83
+ * @since 0.1.0
84
+ * @category models
85
+ */
86
+ export interface Result {
87
+ /** The input statements together with everything inferred. */
88
+ readonly closure: Model.Formula;
89
+ /** Only the newly inferred statements. */
90
+ readonly inferred: Model.Formula;
91
+ /** The number of rounds until the fixpoint was reached. */
92
+ readonly rounds: number;
93
+ }
94
+
95
+ const TRUE_KEY = Term.literal('true', xsd.boolean).key;
96
+ const FALSE_KEY = Term.literal('false', xsd.boolean).key;
97
+
98
+ const noGoals: ReadonlyArray<Model.Statement> = [];
99
+
100
+ const goalsOf = (t: Model.N3Term): Option.Option<ReadonlyArray<Model.Statement>> =>
101
+ Model.isFormula(t)
102
+ ? Option.some(t.statements)
103
+ : t.key === TRUE_KEY
104
+ ? Option.some(noGoals)
105
+ : Option.none();
106
+
107
+ /** Premise blank nodes become rule-local variables. */
108
+ const BLANK_VAR = '\u0000b:';
109
+
110
+ /** Blank nodes at the top level of statements (not inside nested formulas). */
111
+ const topBlanks = (
112
+ statements: ReadonlyArray<Model.Statement>,
113
+ ): MutableHashSet.MutableHashSet<string> => {
114
+ const out = MutableHashSet.empty<string>();
115
+ const go = (t: Model.N3Term) => {
116
+ if (Guards.isBlankNode(t)) MutableHashSet.add(out, t.value);
117
+ else if (Model.isCollection(t)) t.items.forEach(go);
118
+ };
119
+ statements.forEach((s) => {
120
+ go(s.subject);
121
+ go(s.predicate);
122
+ go(s.object);
123
+ });
124
+ return out;
125
+ };
126
+
127
+ /** Replaces the given blank nodes (outside nested formulas) by variables. */
128
+ const blanksToVariables = (
129
+ t: Model.N3Term,
130
+ blanks: MutableHashSet.MutableHashSet<string>,
131
+ ): Model.N3Term =>
132
+ Guards.isBlankNode(t) && MutableHashSet.has(blanks, t.value)
133
+ ? new Term.Variable(BLANK_VAR + t.value)
134
+ : Model.isCollection(t)
135
+ ? new Model.Collection(t.items.map((x) => blanksToVariables(x, blanks)))
136
+ : t;
137
+
138
+ const statementBlanksToVariables = (
139
+ s: Model.Statement,
140
+ blanks: MutableHashSet.MutableHashSet<string>,
141
+ ) =>
142
+ new Model.Statement(
143
+ blanksToVariables(s.subject, blanks),
144
+ blanksToVariables(s.predicate, blanks),
145
+ blanksToVariables(s.object, blanks),
146
+ );
147
+
148
+ /**
149
+ * Extracts the rules (`=>` and `<=` statements between formulas) of a
150
+ * formula's top level.
151
+ *
152
+ * @since 0.1.0
153
+ * @category rules
154
+ */
155
+ export const rules = (formula: Model.Formula): ReadonlyArray<Rule> =>
156
+ Arr.getSomes(
157
+ formula.statements.map((s): Option.Option<Rule> => {
158
+ if (!Guards.isNamedNode(s.predicate)) return Option.none();
159
+ const forward = s.predicate.value === log.implies.value;
160
+ const backward = s.predicate.value === log.isImpliedBy.value;
161
+ if (!forward && !backward) return Option.none();
162
+ const premiseTerm = forward ? s.subject : s.object;
163
+ const conclusion = forward ? s.object : s.subject;
164
+ return Option.map(goalsOf(premiseTerm), (premise): Rule => {
165
+ // Blank nodes of the premise are query variables, also in the conclusion.
166
+ const blanks = topBlanks(premise);
167
+ return {
168
+ premise: premise.map((p) => statementBlanksToVariables(p, blanks)),
169
+ conclusion: Model.isFormula(conclusion)
170
+ ? new Model.Formula(
171
+ conclusion.statements.map((c) => statementBlanksToVariables(c, blanks)),
172
+ )
173
+ : conclusion,
174
+ source: s,
175
+ };
176
+ });
177
+ }),
178
+ );
179
+
180
+ // -----------------------------------------------------------------------------
181
+ // Matching
182
+ // -----------------------------------------------------------------------------
183
+
184
+ type Bindings = Builtins.Bindings;
185
+
186
+ /** The bindings that bind nothing. */
187
+ const noBindings: Bindings = MutableHashMap.empty<string, Model.N3Term>().backing;
188
+
189
+ /** `b` with `name` bound to `value` (a copy: bindings are shared between solutions). */
190
+ const extend = (b: Bindings, name: string, value: Model.N3Term): Bindings => {
191
+ const next = MutableHashMap.fromIterable(b);
192
+ MutableHashMap.set(next, name, value);
193
+ return next.backing;
194
+ };
195
+
196
+ const noStatements: ReadonlyArray<Model.Statement> = [];
197
+
198
+ class Store {
199
+ readonly all: Array<Model.Statement> = [];
200
+ readonly keys = MutableHashSet.empty<string>();
201
+ readonly byPredicate = MutableHashMap.empty<string, Array<Model.Statement>>();
202
+ constructor(statements: Iterable<Model.Statement> = []) {
203
+ Arr.fromIterable(statements).forEach((s) => this.add(s));
204
+ }
205
+ has(s: Model.Statement): boolean {
206
+ return MutableHashSet.has(this.keys, s.key);
207
+ }
208
+ add(s: Model.Statement): boolean {
209
+ if (this.has(s)) return false;
210
+ MutableHashSet.add(this.keys, s.key);
211
+ this.all.push(s);
212
+ const k = s.predicate.key;
213
+ const l = this.byPredicate.backing.get(k);
214
+ if (l === undefined) MutableHashMap.set(this.byPredicate, k, [s]);
215
+ else l.push(s);
216
+ return true;
217
+ }
218
+ /** The statements with the predicate `key`. */
219
+ withPredicate(key: string): ReadonlyArray<Model.Statement> {
220
+ return this.byPredicate.backing.get(key) ?? noStatements;
221
+ }
222
+ }
223
+
224
+ /** The term a variable is bound to, through chains of variables (it recurses once per link). */
225
+ const walk = (t: Model.N3Term, b: Bindings): Model.N3Term => {
226
+ if (!Guards.isVariable(t)) return t;
227
+ const next = b.get(t.value);
228
+ return next === undefined ? t : walk(next, b);
229
+ };
230
+
231
+ const resolve = (t: Model.N3Term, b: Bindings): Model.N3Term =>
232
+ b.size === 0 ? t : Model.substitute(t, b);
233
+
234
+ const unify = (pattern: Model.N3Term, term: Model.N3Term, b: Bindings): Array<Bindings> => {
235
+ const p = walk(pattern, b);
236
+ if (Guards.isVariable(p)) {
237
+ if (Guards.isVariable(term) && term.value === p.value) return [b];
238
+ return [extend(b, p.value, term)];
239
+ }
240
+ const t = Guards.isVariable(term) ? walk(term, b) : term;
241
+ if (p instanceof Model.Collection) {
242
+ if (!(t instanceof Model.Collection) || t.items.length !== p.items.length) return [];
243
+ return p.items.reduce<Array<Bindings>>(
244
+ (results, item, i) => {
245
+ const other = t.items[i];
246
+ return other === undefined ? [] : results.flatMap((r) => unify(item, other, r));
247
+ },
248
+ [b],
249
+ );
250
+ }
251
+ if (p instanceof Model.Formula) {
252
+ if (!(t instanceof Model.Formula) || t.statements.length !== p.statements.length) return [];
253
+ if (Model.isGround(p)) return p.key === t.key || Isomorphism.isomorphic(p, t) ? [b] : [];
254
+ return matchFormula(p.statements, t.statements, b);
255
+ }
256
+ return p.key === t.key ? [b] : [];
257
+ };
258
+
259
+ /** Matches each pattern statement to a distinct statement of `target`. */
260
+ const matchFormula = (
261
+ patterns: ReadonlyArray<Model.Statement>,
262
+ target: ReadonlyArray<Model.Statement>,
263
+ b: Bindings,
264
+ ): Array<Bindings> => {
265
+ const out: Array<Bindings> = [];
266
+ const used = new Uint8Array(target.length);
267
+ const go = (i: number, cur: Bindings) => {
268
+ const p = patterns[i];
269
+ if (p === undefined) {
270
+ out.push(cur);
271
+ return;
272
+ }
273
+ target.forEach((s, j) => {
274
+ if (used[j] === 1) return;
275
+ used[j] = 1;
276
+ unifyStatement(p, s, cur).forEach((r) => go(i + 1, r));
277
+ used[j] = 0;
278
+ });
279
+ };
280
+ go(0, b);
281
+ return out;
282
+ };
283
+
284
+ const unifyStatement = (p: Model.Statement, s: Model.Statement, b: Bindings): Array<Bindings> =>
285
+ unify(p.predicate, s.predicate, b)
286
+ .flatMap((r) => unify(p.subject, s.subject, r))
287
+ .flatMap((r) => unify(p.object, s.object, r));
288
+
289
+ interface Engine {
290
+ readonly builtins: boolean;
291
+ readonly document: () => Model.Formula;
292
+ readonly conclusion: (formula: Model.Formula) => Model.Formula;
293
+ }
294
+
295
+ const solve = (
296
+ store: Store,
297
+ goals: ReadonlyArray<Model.Statement>,
298
+ b: Bindings,
299
+ engine: Engine,
300
+ ): Array<Bindings> => {
301
+ const out: Array<Bindings> = [];
302
+ const ctx: Builtins.Context = {
303
+ unify,
304
+ query: (scope, scopeGoals, bindings, builtins) => {
305
+ const blanks = topBlanks(scopeGoals);
306
+ return solve(
307
+ new Store(scope.statements),
308
+ scopeGoals.map((g) => statementBlanksToVariables(g, blanks)),
309
+ bindings,
310
+ { ...engine, builtins: engine.builtins && builtins },
311
+ );
312
+ },
313
+ document: engine.document,
314
+ conclusion: engine.conclusion,
315
+ };
316
+ const go = (remaining: ReadonlyArray<Model.Statement>, cur: Bindings, deferred: number) => {
317
+ if (!Arr.isReadonlyArrayNonEmpty(remaining)) {
318
+ out.push(cur);
319
+ return;
320
+ }
321
+ const [goal, ...rest] = remaining;
322
+ const builtin = engine.builtins
323
+ ? Builtins.builtinFor(walk(goal.predicate, cur))
324
+ : Option.none<Builtins.Builtin>();
325
+ if (Option.isSome(builtin)) {
326
+ const results = builtin.value(
327
+ resolve(goal.subject, cur),
328
+ resolve(goal.object, cur),
329
+ cur,
330
+ ctx,
331
+ );
332
+ if (Option.isNone(results)) {
333
+ // Not ready: try the other goals first (once around the remaining goals).
334
+ if (deferred < remaining.length) go([...rest, goal], cur, deferred + 1);
335
+ return;
336
+ }
337
+ results.value.forEach((r) => go(rest, r, 0));
338
+ return;
339
+ }
340
+ const predicate = walk(goal.predicate, cur);
341
+ const subject = walk(goal.subject, cur);
342
+ const listPredicate = predicate.key === rdf.first.key || predicate.key === rdf.rest.key;
343
+ if (listPredicate && Guards.isVariable(subject) && deferred < remaining.length) {
344
+ // The subject may become bound to a collection by a later goal.
345
+ go([...rest, goal], cur, deferred + 1);
346
+ return;
347
+ }
348
+ if (
349
+ listPredicate &&
350
+ subject instanceof Model.Collection &&
351
+ Arr.isReadonlyArrayNonEmpty(subject.items)
352
+ ) {
353
+ // Collections are lists: answer rdf:first / rdf:rest structurally.
354
+ const value =
355
+ predicate.key === rdf.first.key
356
+ ? subject.items[0]
357
+ : subject.items.length === 1
358
+ ? rdf.nil
359
+ : new Model.Collection(subject.items.slice(1));
360
+ unify(goal.object, value, cur).forEach((r) => go(rest, r, 0));
361
+ return;
362
+ }
363
+ const candidates = Guards.isVariable(predicate)
364
+ ? store.all
365
+ : store.withPredicate(predicate.key);
366
+ candidates.forEach((s) => {
367
+ unifyStatement(goal, s, cur).forEach((r) => go(rest, r, 0));
368
+ });
369
+ };
370
+ go(goals, b, 0);
371
+ return out;
372
+ };
373
+
374
+ // -----------------------------------------------------------------------------
375
+ // Forward chaining
376
+ // -----------------------------------------------------------------------------
377
+
378
+ const hash = (s: string): string => {
379
+ let h1 = 0x811c9dc5;
380
+ let h2 = 0x01000193;
381
+ loop((i) => {
382
+ if (i >= s.length) return false;
383
+ const c = s.charCodeAt(i);
384
+ h1 = Math.imul(h1 ^ c, 0x01000193);
385
+ h2 = Math.imul(h2 ^ c, 0x5bd1e995);
386
+ return true;
387
+ });
388
+ return (h1 >>> 0).toString(36) + (h2 >>> 0).toString(36);
389
+ };
390
+
391
+ class Inconsistency {
392
+ readonly rule: Model.Statement;
393
+ constructor(rule: Model.Statement) {
394
+ this.rule = rule;
395
+ }
396
+ }
397
+
398
+ const instantiate = (rule: Rule, b: Bindings): ReadonlyArray<Model.Statement> => {
399
+ const conclusion = walk(rule.conclusion, b);
400
+ if (conclusion.key === FALSE_KEY) throw new Inconsistency(rule.source);
401
+ // A conclusion bound through a variable is asserted as it is.
402
+ if (conclusion !== rule.conclusion) {
403
+ return Option.getOrElse(goalsOf(resolve(conclusion, b)), () => noGoals);
404
+ }
405
+ const goals = goalsOf(conclusion);
406
+ if (Option.isNone(goals)) return noGoals;
407
+ // Fresh blank nodes depend only on the bindings used by the conclusion.
408
+ const used = MutableHashSet.fromIterable(Model.variables(conclusion).map((v) => v.value));
409
+ const entries = Arr.fromIterable(b)
410
+ .filter(([k]) => MutableHashSet.has(used, k))
411
+ .map(([k, v]) => `${k}=${resolve(v, b).key}`);
412
+ const signature = Arr.sort(entries, Order.String).join('|');
413
+ const fresh = MutableHashMap.empty<string, Term.BlankNode>();
414
+ const skolem = (label: string): Term.BlankNode => {
415
+ const known = fresh.backing.get(label);
416
+ if (known !== undefined) return known;
417
+ const node = new Term.BlankNode(`sk${hash(`${rule.source.key}|${signature}|${label}`)}`);
418
+ MutableHashMap.set(fresh, label, node);
419
+ return node;
420
+ };
421
+ // Blank nodes at the top level of the conclusion are instantiated per
422
+ // firing (before the bindings are applied).
423
+ const top = (t: Model.N3Term): Model.N3Term =>
424
+ Guards.isBlankNode(t)
425
+ ? skolem(t.value)
426
+ : Model.isCollection(t)
427
+ ? new Model.Collection(t.items.map(top))
428
+ : t;
429
+ return goals.value.map(
430
+ (s) =>
431
+ new Model.Statement(
432
+ resolve(top(s.subject), b),
433
+ resolve(top(s.predicate), b),
434
+ resolve(top(s.object), b),
435
+ ),
436
+ );
437
+ };
438
+
439
+ class LimitExceeded {
440
+ readonly message: string;
441
+ constructor(message: string) {
442
+ this.message = message;
443
+ }
444
+ }
445
+
446
+ /** Forward chaining to a fixpoint; throws `Inconsistency` / `LimitExceeded`. */
447
+ const closureOf = (input: Model.Formula, options?: Options, depth = 0): Result => {
448
+ const maxRounds = options?.maxRounds ?? 1000;
449
+ const maxStatements = options?.maxStatements ?? 1_000_000;
450
+ const store = new Store(input.statements);
451
+ const inferred: Array<Model.Statement> = [];
452
+ // The formula of the store as it stood at the start of the round, made on first use
453
+ let snapshot = Option.none<Model.Formula>();
454
+ const engine: Engine = {
455
+ builtins: options?.builtins ?? true,
456
+ document: () => {
457
+ if (Option.isSome(snapshot)) return snapshot.value;
458
+ const f = new Model.Formula(store.all);
459
+ snapshot = Option.some(f);
460
+ return f;
461
+ },
462
+ conclusion: (f) => {
463
+ if (depth > 8) throw new LimitExceeded('log:conclusion nested too deeply');
464
+ return closureOf(f, options, depth + 1).closure;
465
+ },
466
+ };
467
+ let result = Option.none<Result>();
468
+ loop((i) => {
469
+ const round = i + 1;
470
+ if (round > maxRounds) return false;
471
+ snapshot = Option.none();
472
+ const fresh: Array<Model.Statement> = [];
473
+ rules(new Model.Formula(store.all)).forEach((rule) => {
474
+ solve(store, rule.premise, noBindings, engine).forEach((b) => {
475
+ instantiate(rule, b).forEach((s) => {
476
+ if (!store.has(s)) fresh.push(s);
477
+ });
478
+ });
479
+ });
480
+ let added = 0;
481
+ fresh.forEach((s) => {
482
+ if (store.add(s)) {
483
+ inferred.push(s);
484
+ added++;
485
+ }
486
+ });
487
+ if (store.all.length > maxStatements) {
488
+ throw new LimitExceeded(`Closure exceeds ${maxStatements} statements`);
489
+ }
490
+ if (added > 0) return true;
491
+ result = Option.some({
492
+ closure: new Model.Formula(store.all),
493
+ inferred: new Model.Formula(inferred),
494
+ rounds: round,
495
+ });
496
+ return false;
497
+ });
498
+ if (Option.isSome(result)) return result.value;
499
+ throw new LimitExceeded(`No fixpoint after ${maxRounds} rounds`);
500
+ };
501
+
502
+ /**
503
+ * Computes the deductive closure of a formula under its rules.
504
+ *
505
+ * @example
506
+ * ```ts
507
+ * import { Effect } from 'effect'
508
+ * import { N3, Reasoner } from '@thomasfosterau/effect-rdf/n3'
509
+ *
510
+ * const program = Effect.gen(function* () {
511
+ * const doc = yield* N3.parse(`@prefix : <http://example.org/> .
512
+ * :socrates a :Man .
513
+ * { ?x a :Man } => { ?x a :Mortal } .`)
514
+ * const { inferred } = yield* Reasoner.reason(doc.formula)
515
+ * return N3.serializeDocument(inferred) // :socrates a :Mortal .
516
+ * })
517
+ * ```
518
+ *
519
+ * @since 0.1.0
520
+ * @category reasoning
521
+ */
522
+ export const reason = (
523
+ formula: Model.Formula | Model.Document,
524
+ options?: Options,
525
+ ): Effect.Effect<Result, ReasonerError> =>
526
+ Effect.sync(() => closureOf(Model.isFormula(formula) ? formula : formula.formula, options)).pipe(
527
+ Effect.catchDefect((e) =>
528
+ e instanceof Inconsistency
529
+ ? Effect.fail(new ReasonerError({ message: `Inconsistency derived by rule ${e.rule.key}` }))
530
+ : e instanceof LimitExceeded
531
+ ? Effect.fail(new ReasonerError({ message: e.message }))
532
+ : Effect.die(e),
533
+ ),
534
+ Effect.tap((result) => Effect.annotateCurrentSpan('n3.statements', result.closure.size)),
535
+ Effect.withSpan('Reasoner.reason', {
536
+ attributes: {
537
+ 'n3.input.statements': (Model.isFormula(formula) ? formula : formula.formula).size,
538
+ },
539
+ }),
540
+ );
541
+
542
+ /**
543
+ * Answers a query: all bindings of the variables (and blank nodes) of
544
+ * `pattern` under which every statement of `pattern` holds in `formula`
545
+ * (builtins are evaluated).
546
+ *
547
+ * @since 0.1.0
548
+ * @category reasoning
549
+ */
550
+ export const query = (
551
+ formula: Model.Formula,
552
+ pattern: Model.Formula,
553
+ ): ReadonlyArray<ReadonlyMap<string, Model.N3Term>> => {
554
+ const store = new Store(formula.statements);
555
+ const blanks = topBlanks(pattern.statements);
556
+ const goals = pattern.statements.map((s) => statementBlanksToVariables(s, blanks));
557
+ return solve(store, goals, noBindings, {
558
+ builtins: true,
559
+ document: () => formula,
560
+ conclusion: (f) => closureOf(f).closure,
561
+ }).map((b) => {
562
+ const answer = MutableHashMap.empty<string, Model.N3Term>();
563
+ b.forEach((v, k) => {
564
+ if (!k.startsWith(BLANK_VAR)) MutableHashMap.set(answer, k, resolve(v, b));
565
+ });
566
+ return answer.backing;
567
+ });
568
+ };
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Namespaces used by Notation3: the SWAP builtin namespaces (`log:`,
3
+ * `math:`, `string:`, `list:`, `time:`, `crypto:`) and the `i18n:`
4
+ * namespace for directional language-tagged strings.
5
+ *
6
+ * @since 0.1.0
7
+ */
8
+ import * as Namespace from '../Namespace.ts';
9
+
10
+ /**
11
+ * The `log:` namespace (`http://www.w3.org/2000/10/swap/log#`). `=>` is
12
+ * `log:implies` and `<=` is `log:isImpliedBy`.
13
+ *
14
+ * @since 0.1.0
15
+ * @category namespaces
16
+ */
17
+ export const log = Namespace.vocabulary('http://www.w3.org/2000/10/swap/log#', [
18
+ 'implies',
19
+ 'isImpliedBy',
20
+ 'equalTo',
21
+ 'notEqualTo',
22
+ 'includes',
23
+ 'notIncludes',
24
+ 'semantics',
25
+ 'conclusion',
26
+ 'conjunction',
27
+ 'collectAllIn',
28
+ 'forAllIn',
29
+ 'uri',
30
+ 'rawType',
31
+ 'dtlit',
32
+ 'langlit',
33
+ 'Formula',
34
+ 'Literal',
35
+ 'Other',
36
+ 'List',
37
+ ]);
38
+
39
+ /**
40
+ * The `math:` namespace (`http://www.w3.org/2000/10/swap/math#`).
41
+ *
42
+ * @since 0.1.0
43
+ * @category namespaces
44
+ */
45
+ export const math = Namespace.make('http://www.w3.org/2000/10/swap/math#');
46
+
47
+ /**
48
+ * The `string:` namespace (`http://www.w3.org/2000/10/swap/string#`).
49
+ *
50
+ * @since 0.1.0
51
+ * @category namespaces
52
+ */
53
+ export const string = Namespace.make('http://www.w3.org/2000/10/swap/string#');
54
+
55
+ /**
56
+ * The `list:` namespace (`http://www.w3.org/2000/10/swap/list#`).
57
+ *
58
+ * @since 0.1.0
59
+ * @category namespaces
60
+ */
61
+ export const list = Namespace.make('http://www.w3.org/2000/10/swap/list#');
62
+
63
+ /**
64
+ * The `time:` namespace (`http://www.w3.org/2000/10/swap/time#`).
65
+ *
66
+ * @since 0.1.0
67
+ * @category namespaces
68
+ */
69
+ export const time = Namespace.make('http://www.w3.org/2000/10/swap/time#');
70
+
71
+ /**
72
+ * The `crypto:` namespace (`http://www.w3.org/2000/10/swap/crypto#`).
73
+ *
74
+ * @since 0.1.0
75
+ * @category namespaces
76
+ */
77
+ export const crypto = Namespace.make('http://www.w3.org/2000/10/swap/crypto#');
78
+
79
+ /**
80
+ * The `i18n:` namespace (`https://www.w3.org/ns/i18n#`). A literal typed
81
+ * `i18n:{language}_{direction}` (e.g. `"…"^^i18n:ar-eg_rtl`) is parsed as a
82
+ * directional language-tagged string, and directional language-tagged
83
+ * strings are serialised that way.
84
+ *
85
+ * @since 0.1.0
86
+ * @category namespaces
87
+ */
88
+ export const i18n = Namespace.make('https://www.w3.org/ns/i18n#');
89
+
90
+ /**
91
+ * `owl:sameAs`, written `=` in N3.
92
+ *
93
+ * @since 0.1.0
94
+ * @category terms
95
+ */
96
+ export const sameAs = Namespace.make('http://www.w3.org/2002/07/owl#')('sameAs');
97
+
98
+ /**
99
+ * Prefixes for the N3 builtin namespaces.
100
+ *
101
+ * @since 0.1.0
102
+ * @category prefixes
103
+ */
104
+ export const prefixes = {
105
+ log: log.base,
106
+ math: math.base,
107
+ string: string.base,
108
+ list: list.base,
109
+ time: time.base,
110
+ crypto: crypto.base,
111
+ } as const;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Notation3 (N3) for Effect: an N3 data model with formulas, variables and
3
+ * collections, a conformant parser, a pretty-printing serializer, a mapping
4
+ * to and from core RDF datasets, isomorphism checking and a simple
5
+ * forward-chaining reasoner.
6
+ *
7
+ * @since 0.1.0
8
+ */
9
+
10
+ /** @since 0.1.0 */
11
+ export * as Isomorphism from './Isomorphism.ts';
12
+ /** @since 0.1.0 */
13
+ export * as Mapping from './Mapping.ts';
14
+ /** @since 0.1.0 */
15
+ export * as Model from './Model.ts';
16
+ /** @since 0.1.0 */
17
+ export * as N3 from './N3.ts';
18
+ /** @since 0.1.0 */
19
+ export * as Reasoner from './Reasoner.ts';
20
+ /** @since 0.1.0 */
21
+ export * as Vocab from './Vocab.ts';