@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 @@
1
+ {"version":3,"file":"Reasoner-Cw90zrjv.mjs","names":["Term.literal","Model.isGround","Guards.isLiteral","Xsd.isIntegerDatatype","Xsd.canonicalDouble","Model.isCollection","Xsd.isNumericDatatype","Guards.isNamedNode","Model.Collection","Model.isFormula","Model.emptyFormula","Guards.isBlankNode","noGoals","goalsOf","Model.Formula","Term.namedNode","Model.substitute","Term.literal","Model.isFormula","Guards.isBlankNode","Model.isCollection","Term.Variable","Model.Collection","Model.Statement","Guards.isNamedNode","Model.Formula","Guards.isVariable","Model.substitute","Model.isGround","Isomorphism.isomorphic","Builtins.builtinFor","Model.variables","Term.BlankNode"],"sources":["../src/n3/internal/builtins.ts","../src/n3/Reasoner.ts"],"sourcesContent":["/**\n * A small library of N3 builtins (`math:`, `string:`, `list:`, `log:`).\n *\n * A builtin receives its subject and object with the current bindings\n * applied and returns the extended bindings for each solution, or\n * `undefined` when it cannot be evaluated yet (an input is still unbound).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Term from '../../Term.ts';\nimport { xsd } from '../../Vocab.ts';\nimport * as Xsd from '../../Xsd.ts';\nimport * as Model from '../Model.ts';\nimport { list, log, math, string } from '../Vocab.ts';\nimport * as Guards from './guards.ts';\n\n/** @internal */\nexport type Bindings = ReadonlyMap<string, Model.N3Term>;\n\n/** @internal */\nexport interface Context {\n readonly unify: (pattern: Model.N3Term, term: Model.N3Term, b: Bindings) => Array<Bindings>;\n /** Solves `goals` against the statements of `scope`. */\n readonly query: (\n scope: Model.Formula,\n goals: ReadonlyArray<Model.Statement>,\n b: Bindings,\n builtins: boolean,\n ) => Array<Bindings>;\n /** The formula of the document being reasoned over (the default scope). */\n readonly document: () => Model.Formula;\n /** The deductive closure of a formula (for `log:conclusion`). */\n readonly conclusion: (formula: Model.Formula) => Model.Formula;\n}\n\n/**\n * The solutions of a builtin, or `None` when it cannot be evaluated yet (an\n * input is still unbound).\n *\n * @internal\n */\nexport type Answer = Option.Option<Array<Bindings>>;\n\n/** @internal */\nexport type Builtin = (\n subject: Model.N3Term,\n object: Model.N3Term,\n b: Bindings,\n ctx: Context,\n) => Answer;\n\nconst notReady: Answer = Option.none();\n\n/** The builtin's solutions. */\nconst solutions = (bs: Array<Bindings>): Answer => Option.some(bs);\n\n/** No solutions once `t` is ground, not ready while it is not. */\nconst noneOnceReady = (t: Model.N3Term): Answer => (ready(t) ? solutions([]) : notReady);\n\nconst TRUE = Term.literal('true', xsd.boolean);\n\n/** Whether a term contains no variables (blank nodes count as ground). */\nconst ground = (t: Model.N3Term): boolean => Model.isGround(t);\n\n// -----------------------------------------------------------------------------\n// Numbers\n// -----------------------------------------------------------------------------\n\ntype Num =\n | { readonly kind: 'integer'; readonly value: bigint }\n | { readonly kind: 'decimal' | 'double'; readonly value: number };\n\nconst NUMERIC = /^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\n\nconst toNum = (t: Model.N3Term): Option.Option<Num> => {\n if (!Guards.isLiteral(t)) return Option.none();\n const v = t.value.trim();\n const dt = t.datatype.value;\n if ((dt === xsd.double.value || dt === xsd.float.value) && /^(?:[+-]?INF|NaN)$/.test(v)) {\n return Option.some({\n kind: 'double',\n value: v === 'NaN' ? NaN : v.startsWith('-') ? -Infinity : Infinity,\n });\n }\n if (!NUMERIC.test(v)) return Option.none();\n if (Xsd.isIntegerDatatype(dt) || (dt === Term.XSD_STRING && /^[+-]?\\d+$/.test(v))) {\n return Option.some({ kind: 'integer', value: BigInt(v) });\n }\n if (dt === xsd.double.value || dt === xsd.float.value || /[eE]/.test(v)) {\n return Option.some({ kind: 'double', value: Number(v) });\n }\n if (dt === xsd.decimal.value || dt === Term.XSD_STRING) {\n return Option.some({ kind: 'decimal', value: Number(v) });\n }\n return Option.none();\n};\n\nconst asNumber = (n: Num): number => (n.kind === 'integer' ? Number(n.value) : n.value);\n\n/** The literal of an arithmetic result. */\nconst fromNum = (n: Num): Term.Literal => {\n if (n.kind === 'integer') return Term.literal(n.value.toString(), xsd.integer);\n if (n.kind === 'double') return Term.literal(Xsd.canonicalDouble(n.value), xsd.double);\n const s = String(Number(n.value.toPrecision(15)));\n return Number.isFinite(n.value) && !/e/i.test(s)\n ? Term.literal(s.includes('.') ? s : `${s}.0`, xsd.decimal)\n : Term.literal(Xsd.canonicalDouble(n.value), xsd.double);\n};\n\nconst numEquals = (a: Num, b: Num): boolean => {\n if (a.kind === 'integer' && b.kind === 'integer') return a.value === b.value;\n const x = asNumber(a);\n const y = asNumber(b);\n if (x === y) return true;\n if (!Number.isFinite(x) || !Number.isFinite(y)) return false;\n return Math.abs(x - y) <= 1e-12 * Math.max(Math.abs(x), Math.abs(y));\n};\n\nconst resultKind = (ns: ReadonlyArray<Num>): Num['kind'] =>\n ns.some((n) => n.kind === 'double')\n ? 'double'\n : ns.some((n) => n.kind === 'decimal')\n ? 'decimal'\n : 'integer';\n\nconst numbersOf = (t: Model.N3Term): Option.Option<Array<Num>> =>\n Model.isCollection(t) ? Option.all(t.items.map(toNum)) : Option.none();\n\n/** Unifies the object with a computed value (or checks it). */\nconst output = (\n object: Model.N3Term,\n value: Option.Option<Model.N3Term>,\n b: Bindings,\n ctx: Context,\n): Answer => {\n if (Option.isNone(value)) return solutions([]);\n if (ground(object)) {\n const on = toNum(object);\n const vn = toNum(value.value);\n if (Option.isSome(on) && Option.isSome(vn)) {\n return solutions(numEquals(on.value, vn.value) ? [b] : []);\n }\n }\n return solutions(ctx.unify(object, value.value, b));\n};\n\nconst ready = (t: Model.N3Term): boolean => ground(t);\n\nconst listFunction =\n (f: (ns: Array<Num>) => Option.Option<Num>, arity = -1): Builtin =>\n (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n const ns = numbersOf(s);\n if (Option.isNone(ns) || (arity >= 0 && ns.value.length !== arity)) return solutions([]);\n const r = f(ns.value);\n return Option.isNone(r) ? solutions([]) : output(o, Option.some(fromNum(r.value)), b, ctx);\n };\n\nconst unaryFunction =\n (f: (n: Num) => Num, inverse?: (n: Num) => Num): Builtin =>\n (s, o, b, ctx) => {\n if (!ready(s)) {\n if (inverse === undefined || !ready(o)) return notReady;\n const n = toNum(o);\n return solutions(Option.isNone(n) ? [] : ctx.unify(s, fromNum(inverse(n.value)), b));\n }\n const n = toNum(s);\n return Option.isNone(n) ? solutions([]) : output(o, Option.some(fromNum(f(n.value))), b, ctx);\n };\n\nconst real =\n (f: (x: number) => number) =>\n (n: Num): Num => ({ kind: 'double', value: f(asNumber(n)) });\n\nconst comparison =\n (test: (c: number) => boolean): Builtin =>\n (s, o, b) => {\n if (!ready(s) || !ready(o)) return notReady;\n const xs = toNum(s);\n const ys = toNum(o);\n if (Option.isNone(xs) || Option.isNone(ys)) return solutions([]);\n const x = xs.value;\n const y = ys.value;\n // NaN is unordered: only `notEqualTo` holds.\n const c =\n Number.isNaN(asNumber(x)) || Number.isNaN(asNumber(y))\n ? NaN\n : numEquals(x, y)\n ? 0\n : asNumber(x) < asNumber(y)\n ? -1\n : 1;\n return solutions(test(c) ? [b] : []);\n };\n\n/** Folds the numbers as integers when they all are, else as reals. */\nconst fold =\n (\n int: (a: bigint, n: bigint) => bigint,\n int0: bigint,\n float: (a: number, n: number) => number,\n float0: number,\n ) =>\n (ns: Array<Num>): Option.Option<Num> => {\n const kind = resultKind(ns);\n // `kind === 'integer'` means every value is a `bigint`.\n return Option.some(\n kind === 'integer'\n ? { kind, value: ns.reduce((a, n) => (n.kind === 'integer' ? int(a, n.value) : a), int0) }\n : { kind, value: ns.reduce((a, n) => float(a, asNumber(n)), float0) },\n );\n };\n\nconst sum = fold(\n (a, n) => a + n,\n 0n,\n (a, n) => a + n,\n 0,\n);\n\nconst product = fold(\n (a, n) => a * n,\n 1n,\n (a, n) => a * n,\n 1,\n);\n\nconst noInteger = (): Option.Option<bigint> => Option.none();\n\nconst binary =\n (\n int: (a: bigint, b: bigint) => Option.Option<bigint>,\n float: (a: number, b: number) => number,\n forceReal = false,\n ) =>\n (ns: Array<Num>): Option.Option<Num> => {\n // `binary` is only used as `listFunction(binary(…), 2)`, which passes exactly two numbers.\n const [a, c] = ns;\n if (a === undefined || c === undefined) return Option.none();\n const kind = resultKind(ns);\n let outKind: Num['kind'] = kind === 'integer' ? 'decimal' : kind;\n if (a.kind === 'integer' && c.kind === 'integer' && !forceReal) {\n const r = int(a.value, c.value);\n if (Option.isSome(r)) return Option.some({ kind: 'integer', value: r.value });\n outKind = 'double';\n }\n const r = float(asNumber(a), asNumber(c));\n if (outKind !== 'double' && !Number.isFinite(r)) return Option.none();\n return Option.some({ kind: outKind, value: r });\n };\n\nconst mathBuiltins = {\n sum: listFunction(sum),\n product: listFunction(product),\n difference: listFunction(\n binary(\n (a, b) => Option.some(a - b),\n (a, b) => a - b,\n ),\n 2,\n ),\n quotient: listFunction(\n binary(noInteger, (a, b) => a / b, true),\n 2,\n ),\n integerQuotient: listFunction((ns) => {\n // `listFunction(f, 2)` only calls `f` with two numbers.\n const [a, b] = ns.map(asNumber);\n return a === undefined || b === undefined || b === 0\n ? Option.none()\n : Option.some({ kind: 'integer', value: BigInt(Math.trunc(a / b)) });\n }, 2),\n remainder: listFunction((ns) => {\n // `listFunction(f, 2)` only calls `f` with two numbers.\n const [a, b] = ns;\n if (a?.kind !== 'integer' || b?.kind !== 'integer' || b.value === 0n) return Option.none();\n // The result has the sign of the divisor (floored division).\n return Option.some({ kind: 'integer', value: ((a.value % b.value) + b.value) % b.value });\n }, 2),\n exponentiation: listFunction(\n binary(\n (a, b) => (b >= 0n ? Option.some(a ** b) : Option.none()),\n (a, b) => a ** b,\n ),\n 2,\n ),\n negation: unaryFunction(\n (n) =>\n n.kind === 'integer' ? { kind: n.kind, value: -n.value } : { kind: n.kind, value: -n.value },\n (n) =>\n n.kind === 'integer' ? { kind: n.kind, value: -n.value } : { kind: n.kind, value: -n.value },\n ),\n absoluteValue: unaryFunction((n) =>\n n.kind === 'integer'\n ? { kind: n.kind, value: n.value < 0n ? -n.value : n.value }\n : { kind: n.kind, value: Math.abs(n.value) },\n ),\n rounded: unaryFunction((n) =>\n n.kind === 'integer' ? n : { kind: n.kind, value: Math.round(n.value) },\n ),\n floor: unaryFunction((n) => ({ kind: 'integer', value: BigInt(Math.floor(asNumber(n))) })),\n ceiling: unaryFunction((n) => ({ kind: 'integer', value: BigInt(Math.ceil(asNumber(n))) })),\n sin: unaryFunction(real(Math.sin), real(Math.asin)),\n cos: unaryFunction(real(Math.cos), real(Math.acos)),\n tan: unaryFunction(real(Math.tan), real(Math.atan)),\n asin: unaryFunction(real(Math.asin), real(Math.sin)),\n acos: unaryFunction(real(Math.acos), real(Math.cos)),\n atan: unaryFunction(real(Math.atan), real(Math.tan)),\n sinh: unaryFunction(real(Math.sinh), real(Math.asinh)),\n cosh: unaryFunction(real(Math.cosh)),\n tanh: unaryFunction(real(Math.tanh), real(Math.atanh)),\n degrees: unaryFunction(\n real((x) => (x * 180) / Math.PI),\n real((x) => (x * Math.PI) / 180),\n ),\n greaterThan: comparison((c) => c > 0),\n lessThan: comparison((c) => c < 0),\n notGreaterThan: comparison((c) => c <= 0),\n notLessThan: comparison((c) => c >= 0),\n equalTo: comparison((c) => c === 0),\n notEqualTo: comparison((c) => !(c === 0)),\n} satisfies Record.ReadonlyRecord<string, Builtin>;\n\n// -----------------------------------------------------------------------------\n// Strings\n// -----------------------------------------------------------------------------\n\n/** The XPath string value of a literal (numbers and booleans in canonical form). */\nconst literalString = (t: Term.Literal): string => {\n const dt = t.datatype.value;\n if (dt === xsd.boolean.value) return t.value === '1' || t.value === 'true' ? 'true' : 'false';\n if (dt !== Term.XSD_STRING && Xsd.isNumericDatatype(dt)) {\n const num = toNum(t);\n if (Option.isSome(num)) {\n const n = num.value;\n if (n.kind === 'integer') return n.value.toString();\n if (Number.isNaN(n.value)) return 'NaN';\n if (!Number.isFinite(n.value)) return n.value > 0 ? 'INF' : '-INF';\n return String(n.value);\n }\n }\n return t.value;\n};\n\n/** The XPath string value of a term: of a literal or an IRI. */\nconst str = (t: Model.N3Term): Option.Option<string> =>\n Guards.isLiteral(t)\n ? Option.some(literalString(t))\n : Guards.isNamedNode(t)\n ? Option.some(t.value)\n : Option.none();\n\nconst stringTest =\n (test: (a: string, b: string) => boolean): Builtin =>\n (s, o, b) => {\n if (!ready(s) || !ready(o)) return notReady;\n const x = str(s);\n const y = str(o);\n return solutions(Option.isSome(x) && Option.isSome(y) && test(x.value, y.value) ? [b] : []);\n };\n\nconst stringsOf = (t: Model.N3Term): Option.Option<Array<string>> =>\n Model.isCollection(t) ? Option.all(t.items.map(str)) : Option.none();\n\nconst stringFunction =\n (f: (args: Array<string>) => Option.Option<string>): Builtin =>\n (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n const r = Option.flatMap(stringsOf(s), f);\n return solutions(Option.isNone(r) ? [] : ctx.unify(o, Term.literal(r.value), b));\n };\n\nconst regex = (pattern: string, flags = ''): Option.Option<RegExp> =>\n Result.getSuccess(Result.try(() => new RegExp(pattern, flags)));\n\nconst stringBuiltins = {\n concatenation: stringFunction((args) => Option.some(args.join(''))),\n contains: stringTest((a, b) => a.includes(b)),\n containsIgnoringCase: stringTest((a, b) => a.toLowerCase().includes(b.toLowerCase())),\n startsWith: stringTest((a, b) => a.startsWith(b)),\n endsWith: stringTest((a, b) => a.endsWith(b)),\n equalIgnoringCase: stringTest((a, b) => a.toLowerCase() === b.toLowerCase()),\n notEqualIgnoringCase: stringTest((a, b) => a.toLowerCase() !== b.toLowerCase()),\n greaterThan: stringTest((a, b) => a > b),\n lessThan: stringTest((a, b) => a < b),\n notGreaterThan: stringTest((a, b) => a <= b),\n notLessThan: stringTest((a, b) => a >= b),\n matches: stringTest((a, b) => Option.exists(regex(b), (re) => re.test(a))),\n notMatches: stringTest(\n (a, b) => !Option.match(regex(b), { onNone: () => true, onSome: (re) => re.test(a) }),\n ),\n replace: stringFunction(([s, p, r]) => {\n if (s === undefined || p === undefined || r === undefined) return Option.none();\n return Option.map(regex(p, 'g'), (re) => s.replace(re, r.replace(/\\\\(\\d)/g, '$$$1')));\n }),\n scrape: stringFunction(([s, p]) => {\n if (s === undefined || p === undefined) return Option.none();\n return Option.flatMap(regex(p), (re) => Option.fromUndefinedOr(re.exec(s)?.[1]));\n }),\n format: stringFunction(([fmt, ...args]) => {\n if (fmt === undefined) return Option.none();\n let i = 0;\n return Option.some(fmt.replace(/%s/g, () => args[i++] ?? ''));\n }),\n} satisfies Record.ReadonlyRecord<string, Builtin>;\n\n// -----------------------------------------------------------------------------\n// Lists\n// -----------------------------------------------------------------------------\n\n/** The two items of a two-item collection. */\nconst pairOf = (t: Model.N3Term): Option.Option<readonly [Model.N3Term, Model.N3Term]> => {\n if (!Model.isCollection(t)) return Option.none();\n const [x, y] = t.items;\n return t.items.length === 2 && x !== undefined && y !== undefined\n ? Option.some([x, y])\n : Option.none();\n};\n\n/** The three items of a three-item collection. */\nconst tripleOf = (\n t: Model.N3Term,\n): Option.Option<readonly [Model.N3Term, Model.N3Term, Model.N3Term]> => {\n if (!Model.isCollection(t)) return Option.none();\n const [x, y, z] = t.items;\n return t.items.length === 3 && x !== undefined && y !== undefined && z !== undefined\n ? Option.some([x, y, z])\n : Option.none();\n};\n\nconst noSolutions = (): Array<Bindings> => [];\n\nconst integerLiteral = (n: number): Term.Literal => Term.literal(String(n), xsd.integer);\n\nconst listBuiltins = {\n in: (s, o, b, ctx) => {\n if (!Model.isCollection(o)) return noneOnceReady(o);\n return solutions(o.items.flatMap((item) => ctx.unify(s, item, b)));\n },\n member: (s, o, b, ctx) => {\n if (!Model.isCollection(s)) return noneOnceReady(s);\n return solutions(s.items.flatMap((item) => ctx.unify(o, item, b)));\n },\n length: (s, o, b, ctx) =>\n !Model.isCollection(s)\n ? noneOnceReady(s)\n : output(o, Option.some(integerLiteral(s.items.length)), b, ctx),\n first: (s, o, b, ctx) =>\n !Model.isCollection(s)\n ? noneOnceReady(s)\n : output(o, Option.fromUndefinedOr(s.items[0]), b, ctx),\n last: (s, o, b, ctx) =>\n !Model.isCollection(s)\n ? noneOnceReady(s)\n : output(o, Option.fromUndefinedOr(s.items.at(-1)), b, ctx),\n rest: (s, o, b, ctx) =>\n !Model.isCollection(s) || Arr.isReadonlyArrayEmpty(s.items)\n ? noneOnceReady(s)\n : solutions(ctx.unify(o, new Model.Collection(s.items.slice(1)), b)),\n append: (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n if (!Model.isCollection(s) || !s.items.every(Model.isCollection)) return solutions([]);\n return solutions(\n ctx.unify(\n o,\n new Model.Collection(s.items.flatMap((l) => (Model.isCollection(l) ? l.items : []))),\n b,\n ),\n );\n },\n iterate: (s, o, b, ctx) => {\n if (!Model.isCollection(s)) return noneOnceReady(s);\n return solutions(\n s.items.flatMap((item, i) =>\n ctx.unify(o, new Model.Collection([integerLiteral(i), item]), b),\n ),\n );\n },\n memberAt: (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n const found = Option.flatMap(pairOf(s), ([l, idx]) =>\n Model.isCollection(l)\n ? Option.map(toNum(idx), (n) => Option.fromUndefinedOr(l.items[asNumber(n)]))\n : Option.none(),\n );\n return Option.isNone(found) ? solutions([]) : output(o, found.value, b, ctx);\n },\n remove: (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n return solutions(\n Option.match(pairOf(s), {\n onNone: noSolutions,\n onSome: ([l, x]) =>\n Model.isCollection(l)\n ? ctx.unify(o, new Model.Collection(l.items.filter((i) => i.key !== x.key)), b)\n : [],\n }),\n );\n },\n} satisfies Record.ReadonlyRecord<string, Builtin>;\n\n// -----------------------------------------------------------------------------\n// Log\n// -----------------------------------------------------------------------------\n\nconst scopeOf = (t: Model.N3Term, ctx: Context): Option.Option<Model.Formula> =>\n Model.isFormula(t)\n ? Option.some(t)\n : Guards.isLiteral(t) && t.key === TRUE.key\n ? Option.some(Model.emptyFormula)\n : Guards.isBlankNode(t)\n ? Option.some(ctx.document())\n : Option.none();\n\nconst noGoals: ReadonlyArray<Model.Statement> = [];\n\nconst goalsOf = (t: Model.N3Term): Option.Option<ReadonlyArray<Model.Statement>> =>\n Model.isFormula(t)\n ? Option.some(t.statements)\n : t.key === TRUE.key\n ? Option.some(noGoals)\n : Option.none();\n\n/**\n * `log:includes` / `log:notIncludes`: queries the subject formula for the\n * object's statements and maps the solutions with `answer`. An unbound or\n * non-formula operand gives no solutions once the subject is ground, and is\n * not ready otherwise.\n */\nconst included = (\n s: Model.N3Term,\n o: Model.N3Term,\n b: Bindings,\n ctx: Context,\n answer: (found: Array<Bindings>) => Array<Bindings>,\n): Answer => {\n const scope = scopeOf(s, ctx);\n const goals = goalsOf(o);\n if (Option.isNone(scope) || Option.isNone(goals)) return noneOnceReady(s);\n return solutions(answer(ctx.query(scope.value, goals.value, b, false)));\n};\n\nconst logBuiltins = {\n equalTo: (s, o, b, ctx) => solutions(ctx.unify(s, o, b)),\n notEqualTo: (s, o, b) =>\n !ready(s) || !ready(o) ? notReady : solutions(s.key !== o.key ? [b] : []),\n includes: (s, o, b, ctx) => included(s, o, b, ctx, (found) => found),\n notIncludes: (s, o, b, ctx) =>\n included(s, o, b, ctx, (found) => (Arr.isReadonlyArrayEmpty(found) ? [b] : [])),\n conjunction: (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n if (!Model.isCollection(s)) return solutions([]);\n const parts = Option.all(s.items.map(goalsOf));\n if (Option.isNone(parts)) return solutions([]);\n return solutions(ctx.unify(o, new Model.Formula(parts.value.flat()), b));\n },\n conclusion: (s, o, b, ctx) => {\n const f = s.key === TRUE.key ? Model.emptyFormula : s;\n if (!Model.isFormula(f)) return noneOnceReady(s);\n return solutions(ctx.unify(o, ctx.conclusion(f), b));\n },\n uri: (s, o, b, ctx) => {\n if (Guards.isNamedNode(s)) return solutions(ctx.unify(o, Term.literal(s.value), b));\n if (Guards.isLiteral(o)) return solutions(ctx.unify(s, Term.namedNode(o.value), b));\n return noneOnceReady(s);\n },\n dtlit: (s, o, b, ctx) => {\n const pair = pairOf(s);\n if (Option.isSome(pair) && ready(s)) {\n const [lex, dt] = pair.value;\n if (!Guards.isLiteral(lex) || !Guards.isNamedNode(dt)) return solutions([]);\n return solutions(ctx.unify(o, Term.literal(lex.value, dt), b));\n }\n if (Guards.isLiteral(o)) {\n return solutions(ctx.unify(s, new Model.Collection([Term.literal(o.value), o.datatype]), b));\n }\n return notReady;\n },\n langlit: (s, o, b, ctx) => {\n const pair = pairOf(s);\n if (Option.isSome(pair) && ready(s)) {\n const [lex, lang] = pair.value;\n if (!Guards.isLiteral(lex) || !Guards.isLiteral(lang)) return solutions([]);\n return solutions(ctx.unify(o, Term.literal(lex.value, lang.value), b));\n }\n if (Guards.isLiteral(o) && o.language !== '') {\n return solutions(\n ctx.unify(s, new Model.Collection([Term.literal(o.value), Term.literal(o.language)]), b),\n );\n }\n return notReady;\n },\n rawType: (s, o, b, ctx) => {\n if (!ready(s)) return notReady;\n const type = Model.isFormula(s)\n ? log.Formula\n : Guards.isLiteral(s)\n ? log.Literal\n : Model.isCollection(s)\n ? log.List\n : log.Other;\n return solutions(ctx.unify(o, type, b));\n },\n collectAllIn: (s, o, b, ctx) =>\n solutions(\n Option.match(\n Option.flatMap(tripleOf(s), ([template, where, result]) =>\n Option.map(Option.all([scopeOf(o, ctx), goalsOf(where)]), ([scope, goals]) => ({\n template,\n result,\n scope,\n goals,\n })),\n ),\n {\n onNone: noSolutions,\n onSome: ({ template, result, scope, goals }) => {\n const values = ctx\n .query(scope, goals, b, true)\n .map((sol) => Model.substitute(template, sol));\n return ctx.unify(result, new Model.Collection(values), b);\n },\n },\n ),\n ),\n forAllIn: (s, o, b, ctx) =>\n solutions(\n Option.match(\n Option.flatMap(pairOf(s), ([w, t]) => {\n const where = goalsOf(w);\n const then = goalsOf(t);\n return Option.all([scopeOf(o, ctx), where, then]);\n }),\n {\n onNone: noSolutions,\n onSome: ([scope, where, then]) =>\n ctx\n .query(scope, where, b, true)\n .every((sol) => Arr.isReadonlyArrayNonEmpty(ctx.query(scope, then, sol, true)))\n ? [b]\n : [],\n },\n ),\n ),\n} satisfies Record.ReadonlyRecord<string, Builtin>;\n\nconst table = MutableHashMap.empty<string, Builtin>();\nconst namespaces: ReadonlyArray<readonly [string, Record.ReadonlyRecord<string, Builtin>]> = [\n [math.base, mathBuiltins],\n [string.base, stringBuiltins],\n [list.base, listBuiltins],\n [log.base, logBuiltins],\n];\nnamespaces.forEach(([ns, builtins]) => {\n Record.toEntries(builtins).forEach(([name, f]) => MutableHashMap.set(table, ns + name, f));\n});\n\n/** @internal */\nexport const builtinFor = (predicate: Model.N3Term): Option.Option<Builtin> =>\n Guards.isNamedNode(predicate) ? MutableHashMap.get(table, predicate.value) : Option.none();\n\n/** The IRIs of all supported builtins. @internal */\nexport const builtinIris: ReadonlyArray<string> = Arr.fromIterable(MutableHashMap.keys(table));\n","/**\n * A simple forward-chaining N3 reasoner.\n *\n * Rules are the top-level statements `{ premise } => { conclusion }` (and\n * `{ conclusion } <= { premise }`). The reasoner repeatedly matches every\n * rule premise against the current statements — joining triple patterns with\n * backtracking and evaluating builtins — and adds the instantiated\n * conclusions, until a fixpoint is reached.\n *\n * - Variables (`?x`) and blank nodes in a premise are matched like query\n * variables; blank nodes that occur only in a conclusion are instantiated\n * with fresh blank nodes for each distinct set of bindings (so the closure\n * is finite whenever the rules do not keep inventing new terms).\n * - Rules inferred by other rules are applied too.\n * - A conclusion `false` signals an inconsistency and fails with\n * `ReasonerError`.\n * - Builtins: a pragmatic subset of `math:` (arithmetic, comparisons,\n * trigonometry), `string:` (concatenation, comparisons, regular\n * expressions), `list:` (`in`, `member`, `length`, `first`, `last`, `rest`,\n * `append`, `iterate`, `memberAt`, `remove`) and `log:` (`equalTo`,\n * `notEqualTo`, `includes`, `notIncludes`, `conjunction`, `uri`, `dtlit`,\n * `langlit`, `rawType`, `collectAllIn`, `forAllIn`). Builtins whose inputs\n * are not yet bound are deferred until the other premise statements have\n * been matched.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Schema from 'effect/Schema';\nimport * as Term from '../Term.ts';\nimport { rdf, xsd } from '../Vocab.ts';\nimport * as Builtins from './internal/builtins.ts';\nimport * as Guards from './internal/guards.ts';\nimport { loop } from './internal/loop.ts';\nimport * as Isomorphism from './Isomorphism.ts';\nimport * as Model from './Model.ts';\nimport { log } from './Vocab.ts';\n\n/**\n * Reasoning failed: an inconsistency was derived or a limit was exceeded.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ReasonerError extends Schema.TaggedError<ReasonerError>()('N3ReasonerError', {\n message: Schema.String,\n}) {}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface Options {\n /** Maximum number of forward-chaining rounds (default 1000). */\n readonly maxRounds?: number | undefined;\n /** Maximum number of statements in the closure (default 1 000 000). */\n readonly maxStatements?: number | undefined;\n /** Whether to evaluate builtins (default `true`). */\n readonly builtins?: boolean | undefined;\n}\n\n/**\n * A rule extracted from a formula.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Rule {\n readonly premise: ReadonlyArray<Model.Statement>;\n readonly conclusion: Model.N3Term;\n /** The statement the rule was read from. */\n readonly source: Model.Statement;\n}\n\n/**\n * The result of reasoning.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Result {\n /** The input statements together with everything inferred. */\n readonly closure: Model.Formula;\n /** Only the newly inferred statements. */\n readonly inferred: Model.Formula;\n /** The number of rounds until the fixpoint was reached. */\n readonly rounds: number;\n}\n\nconst TRUE_KEY = Term.literal('true', xsd.boolean).key;\nconst FALSE_KEY = Term.literal('false', xsd.boolean).key;\n\nconst noGoals: ReadonlyArray<Model.Statement> = [];\n\nconst goalsOf = (t: Model.N3Term): Option.Option<ReadonlyArray<Model.Statement>> =>\n Model.isFormula(t)\n ? Option.some(t.statements)\n : t.key === TRUE_KEY\n ? Option.some(noGoals)\n : Option.none();\n\n/** Premise blank nodes become rule-local variables. */\nconst BLANK_VAR = '\\u0000b:';\n\n/** Blank nodes at the top level of statements (not inside nested formulas). */\nconst topBlanks = (\n statements: ReadonlyArray<Model.Statement>,\n): MutableHashSet.MutableHashSet<string> => {\n const out = MutableHashSet.empty<string>();\n const go = (t: Model.N3Term) => {\n if (Guards.isBlankNode(t)) MutableHashSet.add(out, t.value);\n else if (Model.isCollection(t)) t.items.forEach(go);\n };\n statements.forEach((s) => {\n go(s.subject);\n go(s.predicate);\n go(s.object);\n });\n return out;\n};\n\n/** Replaces the given blank nodes (outside nested formulas) by variables. */\nconst blanksToVariables = (\n t: Model.N3Term,\n blanks: MutableHashSet.MutableHashSet<string>,\n): Model.N3Term =>\n Guards.isBlankNode(t) && MutableHashSet.has(blanks, t.value)\n ? new Term.Variable(BLANK_VAR + t.value)\n : Model.isCollection(t)\n ? new Model.Collection(t.items.map((x) => blanksToVariables(x, blanks)))\n : t;\n\nconst statementBlanksToVariables = (\n s: Model.Statement,\n blanks: MutableHashSet.MutableHashSet<string>,\n) =>\n new Model.Statement(\n blanksToVariables(s.subject, blanks),\n blanksToVariables(s.predicate, blanks),\n blanksToVariables(s.object, blanks),\n );\n\n/**\n * Extracts the rules (`=>` and `<=` statements between formulas) of a\n * formula's top level.\n *\n * @since 0.1.0\n * @category rules\n */\nexport const rules = (formula: Model.Formula): ReadonlyArray<Rule> =>\n Arr.getSomes(\n formula.statements.map((s): Option.Option<Rule> => {\n if (!Guards.isNamedNode(s.predicate)) return Option.none();\n const forward = s.predicate.value === log.implies.value;\n const backward = s.predicate.value === log.isImpliedBy.value;\n if (!forward && !backward) return Option.none();\n const premiseTerm = forward ? s.subject : s.object;\n const conclusion = forward ? s.object : s.subject;\n return Option.map(goalsOf(premiseTerm), (premise): Rule => {\n // Blank nodes of the premise are query variables, also in the conclusion.\n const blanks = topBlanks(premise);\n return {\n premise: premise.map((p) => statementBlanksToVariables(p, blanks)),\n conclusion: Model.isFormula(conclusion)\n ? new Model.Formula(\n conclusion.statements.map((c) => statementBlanksToVariables(c, blanks)),\n )\n : conclusion,\n source: s,\n };\n });\n }),\n );\n\n// -----------------------------------------------------------------------------\n// Matching\n// -----------------------------------------------------------------------------\n\ntype Bindings = Builtins.Bindings;\n\n/** The bindings that bind nothing. */\nconst noBindings: Bindings = MutableHashMap.empty<string, Model.N3Term>().backing;\n\n/** `b` with `name` bound to `value` (a copy: bindings are shared between solutions). */\nconst extend = (b: Bindings, name: string, value: Model.N3Term): Bindings => {\n const next = MutableHashMap.fromIterable(b);\n MutableHashMap.set(next, name, value);\n return next.backing;\n};\n\nconst noStatements: ReadonlyArray<Model.Statement> = [];\n\nclass Store {\n readonly all: Array<Model.Statement> = [];\n readonly keys = MutableHashSet.empty<string>();\n readonly byPredicate = MutableHashMap.empty<string, Array<Model.Statement>>();\n constructor(statements: Iterable<Model.Statement> = []) {\n Arr.fromIterable(statements).forEach((s) => this.add(s));\n }\n has(s: Model.Statement): boolean {\n return MutableHashSet.has(this.keys, s.key);\n }\n add(s: Model.Statement): boolean {\n if (this.has(s)) return false;\n MutableHashSet.add(this.keys, s.key);\n this.all.push(s);\n const k = s.predicate.key;\n const l = this.byPredicate.backing.get(k);\n if (l === undefined) MutableHashMap.set(this.byPredicate, k, [s]);\n else l.push(s);\n return true;\n }\n /** The statements with the predicate `key`. */\n withPredicate(key: string): ReadonlyArray<Model.Statement> {\n return this.byPredicate.backing.get(key) ?? noStatements;\n }\n}\n\n/** The term a variable is bound to, through chains of variables (it recurses once per link). */\nconst walk = (t: Model.N3Term, b: Bindings): Model.N3Term => {\n if (!Guards.isVariable(t)) return t;\n const next = b.get(t.value);\n return next === undefined ? t : walk(next, b);\n};\n\nconst resolve = (t: Model.N3Term, b: Bindings): Model.N3Term =>\n b.size === 0 ? t : Model.substitute(t, b);\n\nconst unify = (pattern: Model.N3Term, term: Model.N3Term, b: Bindings): Array<Bindings> => {\n const p = walk(pattern, b);\n if (Guards.isVariable(p)) {\n if (Guards.isVariable(term) && term.value === p.value) return [b];\n return [extend(b, p.value, term)];\n }\n const t = Guards.isVariable(term) ? walk(term, b) : term;\n if (p instanceof Model.Collection) {\n if (!(t instanceof Model.Collection) || t.items.length !== p.items.length) return [];\n return p.items.reduce<Array<Bindings>>(\n (results, item, i) => {\n const other = t.items[i];\n return other === undefined ? [] : results.flatMap((r) => unify(item, other, r));\n },\n [b],\n );\n }\n if (p instanceof Model.Formula) {\n if (!(t instanceof Model.Formula) || t.statements.length !== p.statements.length) return [];\n if (Model.isGround(p)) return p.key === t.key || Isomorphism.isomorphic(p, t) ? [b] : [];\n return matchFormula(p.statements, t.statements, b);\n }\n return p.key === t.key ? [b] : [];\n};\n\n/** Matches each pattern statement to a distinct statement of `target`. */\nconst matchFormula = (\n patterns: ReadonlyArray<Model.Statement>,\n target: ReadonlyArray<Model.Statement>,\n b: Bindings,\n): Array<Bindings> => {\n const out: Array<Bindings> = [];\n const used = new Uint8Array(target.length);\n const go = (i: number, cur: Bindings) => {\n const p = patterns[i];\n if (p === undefined) {\n out.push(cur);\n return;\n }\n target.forEach((s, j) => {\n if (used[j] === 1) return;\n used[j] = 1;\n unifyStatement(p, s, cur).forEach((r) => go(i + 1, r));\n used[j] = 0;\n });\n };\n go(0, b);\n return out;\n};\n\nconst unifyStatement = (p: Model.Statement, s: Model.Statement, b: Bindings): Array<Bindings> =>\n unify(p.predicate, s.predicate, b)\n .flatMap((r) => unify(p.subject, s.subject, r))\n .flatMap((r) => unify(p.object, s.object, r));\n\ninterface Engine {\n readonly builtins: boolean;\n readonly document: () => Model.Formula;\n readonly conclusion: (formula: Model.Formula) => Model.Formula;\n}\n\nconst solve = (\n store: Store,\n goals: ReadonlyArray<Model.Statement>,\n b: Bindings,\n engine: Engine,\n): Array<Bindings> => {\n const out: Array<Bindings> = [];\n const ctx: Builtins.Context = {\n unify,\n query: (scope, scopeGoals, bindings, builtins) => {\n const blanks = topBlanks(scopeGoals);\n return solve(\n new Store(scope.statements),\n scopeGoals.map((g) => statementBlanksToVariables(g, blanks)),\n bindings,\n { ...engine, builtins: engine.builtins && builtins },\n );\n },\n document: engine.document,\n conclusion: engine.conclusion,\n };\n const go = (remaining: ReadonlyArray<Model.Statement>, cur: Bindings, deferred: number) => {\n if (!Arr.isReadonlyArrayNonEmpty(remaining)) {\n out.push(cur);\n return;\n }\n const [goal, ...rest] = remaining;\n const builtin = engine.builtins\n ? Builtins.builtinFor(walk(goal.predicate, cur))\n : Option.none<Builtins.Builtin>();\n if (Option.isSome(builtin)) {\n const results = builtin.value(\n resolve(goal.subject, cur),\n resolve(goal.object, cur),\n cur,\n ctx,\n );\n if (Option.isNone(results)) {\n // Not ready: try the other goals first (once around the remaining goals).\n if (deferred < remaining.length) go([...rest, goal], cur, deferred + 1);\n return;\n }\n results.value.forEach((r) => go(rest, r, 0));\n return;\n }\n const predicate = walk(goal.predicate, cur);\n const subject = walk(goal.subject, cur);\n const listPredicate = predicate.key === rdf.first.key || predicate.key === rdf.rest.key;\n if (listPredicate && Guards.isVariable(subject) && deferred < remaining.length) {\n // The subject may become bound to a collection by a later goal.\n go([...rest, goal], cur, deferred + 1);\n return;\n }\n if (\n listPredicate &&\n subject instanceof Model.Collection &&\n Arr.isReadonlyArrayNonEmpty(subject.items)\n ) {\n // Collections are lists: answer rdf:first / rdf:rest structurally.\n const value =\n predicate.key === rdf.first.key\n ? subject.items[0]\n : subject.items.length === 1\n ? rdf.nil\n : new Model.Collection(subject.items.slice(1));\n unify(goal.object, value, cur).forEach((r) => go(rest, r, 0));\n return;\n }\n const candidates = Guards.isVariable(predicate)\n ? store.all\n : store.withPredicate(predicate.key);\n candidates.forEach((s) => {\n unifyStatement(goal, s, cur).forEach((r) => go(rest, r, 0));\n });\n };\n go(goals, b, 0);\n return out;\n};\n\n// -----------------------------------------------------------------------------\n// Forward chaining\n// -----------------------------------------------------------------------------\n\nconst hash = (s: string): string => {\n let h1 = 0x811c9dc5;\n let h2 = 0x01000193;\n loop((i) => {\n if (i >= s.length) return false;\n const c = s.charCodeAt(i);\n h1 = Math.imul(h1 ^ c, 0x01000193);\n h2 = Math.imul(h2 ^ c, 0x5bd1e995);\n return true;\n });\n return (h1 >>> 0).toString(36) + (h2 >>> 0).toString(36);\n};\n\nclass Inconsistency {\n readonly rule: Model.Statement;\n constructor(rule: Model.Statement) {\n this.rule = rule;\n }\n}\n\nconst instantiate = (rule: Rule, b: Bindings): ReadonlyArray<Model.Statement> => {\n const conclusion = walk(rule.conclusion, b);\n if (conclusion.key === FALSE_KEY) throw new Inconsistency(rule.source);\n // A conclusion bound through a variable is asserted as it is.\n if (conclusion !== rule.conclusion) {\n return Option.getOrElse(goalsOf(resolve(conclusion, b)), () => noGoals);\n }\n const goals = goalsOf(conclusion);\n if (Option.isNone(goals)) return noGoals;\n // Fresh blank nodes depend only on the bindings used by the conclusion.\n const used = MutableHashSet.fromIterable(Model.variables(conclusion).map((v) => v.value));\n const entries = Arr.fromIterable(b)\n .filter(([k]) => MutableHashSet.has(used, k))\n .map(([k, v]) => `${k}=${resolve(v, b).key}`);\n const signature = Arr.sort(entries, Order.String).join('|');\n const fresh = MutableHashMap.empty<string, Term.BlankNode>();\n const skolem = (label: string): Term.BlankNode => {\n const known = fresh.backing.get(label);\n if (known !== undefined) return known;\n const node = new Term.BlankNode(`sk${hash(`${rule.source.key}|${signature}|${label}`)}`);\n MutableHashMap.set(fresh, label, node);\n return node;\n };\n // Blank nodes at the top level of the conclusion are instantiated per\n // firing (before the bindings are applied).\n const top = (t: Model.N3Term): Model.N3Term =>\n Guards.isBlankNode(t)\n ? skolem(t.value)\n : Model.isCollection(t)\n ? new Model.Collection(t.items.map(top))\n : t;\n return goals.value.map(\n (s) =>\n new Model.Statement(\n resolve(top(s.subject), b),\n resolve(top(s.predicate), b),\n resolve(top(s.object), b),\n ),\n );\n};\n\nclass LimitExceeded {\n readonly message: string;\n constructor(message: string) {\n this.message = message;\n }\n}\n\n/** Forward chaining to a fixpoint; throws `Inconsistency` / `LimitExceeded`. */\nconst closureOf = (input: Model.Formula, options?: Options, depth = 0): Result => {\n const maxRounds = options?.maxRounds ?? 1000;\n const maxStatements = options?.maxStatements ?? 1_000_000;\n const store = new Store(input.statements);\n const inferred: Array<Model.Statement> = [];\n // The formula of the store as it stood at the start of the round, made on first use\n let snapshot = Option.none<Model.Formula>();\n const engine: Engine = {\n builtins: options?.builtins ?? true,\n document: () => {\n if (Option.isSome(snapshot)) return snapshot.value;\n const f = new Model.Formula(store.all);\n snapshot = Option.some(f);\n return f;\n },\n conclusion: (f) => {\n if (depth > 8) throw new LimitExceeded('log:conclusion nested too deeply');\n return closureOf(f, options, depth + 1).closure;\n },\n };\n let result = Option.none<Result>();\n loop((i) => {\n const round = i + 1;\n if (round > maxRounds) return false;\n snapshot = Option.none();\n const fresh: Array<Model.Statement> = [];\n rules(new Model.Formula(store.all)).forEach((rule) => {\n solve(store, rule.premise, noBindings, engine).forEach((b) => {\n instantiate(rule, b).forEach((s) => {\n if (!store.has(s)) fresh.push(s);\n });\n });\n });\n let added = 0;\n fresh.forEach((s) => {\n if (store.add(s)) {\n inferred.push(s);\n added++;\n }\n });\n if (store.all.length > maxStatements) {\n throw new LimitExceeded(`Closure exceeds ${maxStatements} statements`);\n }\n if (added > 0) return true;\n result = Option.some({\n closure: new Model.Formula(store.all),\n inferred: new Model.Formula(inferred),\n rounds: round,\n });\n return false;\n });\n if (Option.isSome(result)) return result.value;\n throw new LimitExceeded(`No fixpoint after ${maxRounds} rounds`);\n};\n\n/**\n * Computes the deductive closure of a formula under its rules.\n *\n * @example\n * ```ts\n * import { Effect } from 'effect'\n * import { N3, Reasoner } from '@thomasfosterau/effect-rdf/n3'\n *\n * const program = Effect.gen(function* () {\n * const doc = yield* N3.parse(`@prefix : <http://example.org/> .\n * :socrates a :Man .\n * { ?x a :Man } => { ?x a :Mortal } .`)\n * const { inferred } = yield* Reasoner.reason(doc.formula)\n * return N3.serializeDocument(inferred) // :socrates a :Mortal .\n * })\n * ```\n *\n * @since 0.1.0\n * @category reasoning\n */\nexport const reason = (\n formula: Model.Formula | Model.Document,\n options?: Options,\n): Effect.Effect<Result, ReasonerError> =>\n Effect.sync(() => closureOf(Model.isFormula(formula) ? formula : formula.formula, options)).pipe(\n Effect.catchDefect((e) =>\n e instanceof Inconsistency\n ? Effect.fail(new ReasonerError({ message: `Inconsistency derived by rule ${e.rule.key}` }))\n : e instanceof LimitExceeded\n ? Effect.fail(new ReasonerError({ message: e.message }))\n : Effect.die(e),\n ),\n Effect.tap((result) => Effect.annotateCurrentSpan('n3.statements', result.closure.size)),\n Effect.withSpan('Reasoner.reason', {\n attributes: {\n 'n3.input.statements': (Model.isFormula(formula) ? formula : formula.formula).size,\n },\n }),\n );\n\n/**\n * Answers a query: all bindings of the variables (and blank nodes) of\n * `pattern` under which every statement of `pattern` holds in `formula`\n * (builtins are evaluated).\n *\n * @since 0.1.0\n * @category reasoning\n */\nexport const query = (\n formula: Model.Formula,\n pattern: Model.Formula,\n): ReadonlyArray<ReadonlyMap<string, Model.N3Term>> => {\n const store = new Store(formula.statements);\n const blanks = topBlanks(pattern.statements);\n const goals = pattern.statements.map((s) => statementBlanksToVariables(s, blanks));\n return solve(store, goals, noBindings, {\n builtins: true,\n document: () => formula,\n conclusion: (f) => closureOf(f).closure,\n }).map((b) => {\n const answer = MutableHashMap.empty<string, Model.N3Term>();\n b.forEach((v, k) => {\n if (!k.startsWith(BLANK_VAR)) MutableHashMap.set(answer, k, resolve(v, b));\n });\n return answer.backing;\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { C as Resource, O as Triple, _ as Quad, g as Predicate, o as Graph, p as Object$1, w as Subject } from "./Term-B_4ezyXq.mjs";
2
+ import { n as Dataset } from "./Dataset-DS3ESOcO.mjs";
3
+ declare namespace Reification_d_exports {
4
+ export { annotate, annotations, reifiers, toStandardReification };
5
+ }
6
+ /**
7
+ * Builds the quads for an annotated (asserted and reified) triple.
8
+ *
9
+ * @since 0.1.0
10
+ * @category constructors
11
+ */
12
+ declare const annotate: (triple: Triple, annotations: ReadonlyArray<readonly [Predicate, Object$1]>, options?: {
13
+ readonly reifier?: Resource;
14
+ readonly graph?: Graph;
15
+ }) => ReadonlyArray<Quad>;
16
+ /**
17
+ * The reifiers of a triple term in a dataset.
18
+ *
19
+ * @since 0.1.0
20
+ * @category queries
21
+ */
22
+ declare const reifiers: (self: Dataset, triple: Triple, graph?: Graph) => ReadonlyArray<Subject>;
23
+ /**
24
+ * The annotations (predicate/object pairs on all reifiers) of a triple.
25
+ *
26
+ * @since 0.1.0
27
+ * @category queries
28
+ */
29
+ declare const annotations: (self: Dataset, triple: Triple, graph?: Graph) => ReadonlyArray<readonly [Predicate, Object$1]>;
30
+ /**
31
+ * Replaces every triple term with a blank node described using classic RDF
32
+ * reification (`rdf:Statement`, `rdf:subject`, `rdf:predicate`,
33
+ * `rdf:object`). Nested triple terms are converted recursively.
34
+ *
35
+ * @since 0.1.0
36
+ * @category conversions
37
+ */
38
+ declare const toStandardReification: (self: Dataset) => Dataset;
39
+ export { toStandardReification as a, reifiers as i, annotate as n, annotations as r, Reification_d_exports as t };
40
+ //# sourceMappingURL=Reification-BmN4EfnM.d.mts.map
@@ -0,0 +1,82 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { K as isTriple, O as defaultGraph, T as blankNode, d as Quad } from "./Term-CFLG1qu4.mjs";
3
+ import { E as match, L as subjectsOf, T as map, a as addAll } from "./Dataset-BlmlcI7J.mjs";
4
+ import { i as rdf } from "./Vocab-DceKywpq.mjs";
5
+ import * as MutableHashMap from "effect/MutableHashMap";
6
+ import * as Option from "effect/Option";
7
+ // src/Reification.ts
8
+ /**
9
+ * RDF 1.2 / RDF-star reification helpers.
10
+ *
11
+ * RDF 1.2 relates a *reifier* to a triple term with `rdf:reifies`; the
12
+ * Turtle annotation syntax `:s :p :o {| :source :x |}` is shorthand for
13
+ * asserting `:s :p :o` and `_:r rdf:reifies <<( :s :p :o )>> . _:r :source :x`.
14
+ *
15
+ * This module provides helpers for building and reading such reifications,
16
+ * and for converting triple terms to and from classic RDF reification
17
+ * (`rdf:Statement`) for consumers that do not support triple terms.
18
+ *
19
+ * @since 0.1.0
20
+ */
21
+ var Reification_exports = /* @__PURE__ */ __exportAll({
22
+ annotate: () => annotate,
23
+ annotations: () => annotations,
24
+ reifiers: () => reifiers,
25
+ toStandardReification: () => toStandardReification
26
+ });
27
+ /**
28
+ * Builds the quads for an annotated (asserted and reified) triple.
29
+ *
30
+ * @since 0.1.0
31
+ * @category constructors
32
+ */
33
+ const annotate = (triple, annotations, options = {}) => {
34
+ const graph = options.graph ?? defaultGraph;
35
+ const reifier = options.reifier ?? blankNode();
36
+ return [
37
+ new Quad(triple.subject, triple.predicate, triple.object, graph),
38
+ new Quad(reifier, rdf.reifies, triple, graph),
39
+ ...annotations.map(([p, o]) => new Quad(reifier, p, o, graph))
40
+ ];
41
+ };
42
+ /**
43
+ * The reifiers of a triple term in a dataset.
44
+ *
45
+ * @since 0.1.0
46
+ * @category queries
47
+ */
48
+ const reifiers = (self, triple, graph) => subjectsOf(self, rdf.reifies, triple, graph);
49
+ /**
50
+ * The annotations (predicate/object pairs on all reifiers) of a triple.
51
+ *
52
+ * @since 0.1.0
53
+ * @category queries
54
+ */
55
+ const annotations = (self, triple, graph) => reifiers(self, triple, graph).flatMap((r) => match(self, {
56
+ subject: r,
57
+ graph
58
+ }).filter((q) => q.predicate.value !== rdf.reifies.value).map((q) => [q.predicate, q.object]));
59
+ /**
60
+ * Replaces every triple term with a blank node described using classic RDF
61
+ * reification (`rdf:Statement`, `rdf:subject`, `rdf:predicate`,
62
+ * `rdf:object`). Nested triple terms are converted recursively.
63
+ *
64
+ * @since 0.1.0
65
+ * @category conversions
66
+ */
67
+ const toStandardReification = (self) => {
68
+ const nodes = MutableHashMap.empty();
69
+ const extra = [];
70
+ const convert = (t, graph) => isTriple(t) ? Option.getOrElse(MutableHashMap.get(nodes, t.key + graph.key), () => describe(t, graph)) : t;
71
+ const describe = (t, graph) => {
72
+ const node = blankNode();
73
+ MutableHashMap.set(nodes, t.key + graph.key, node);
74
+ extra.push(new Quad(node, rdf.type, rdf.Statement, graph), new Quad(node, rdf.subject, convert(t.subject, graph), graph), new Quad(node, rdf.predicate, t.predicate, graph), new Quad(node, rdf.object, convert(t.object, graph), graph));
75
+ return node;
76
+ };
77
+ const converted = map(self, (q) => new Quad(convert(q.subject, q.graph), q.predicate, convert(q.object, q.graph), q.graph));
78
+ return addAll(converted, extra);
79
+ };
80
+ export { toStandardReification as a, reifiers as i, annotate as n, annotations as r, Reification_exports as t };
81
+
82
+ //# sourceMappingURL=Reification-dpqQvjDE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reification-dpqQvjDE.mjs","names":["Term.defaultGraph","Term.blankNode","Term.Quad","Dataset.subjectsOf","Dataset.match","Term.isTriple","Dataset.map","Dataset.addAll"],"sources":["../src/Reification.ts"],"sourcesContent":["/**\n * RDF 1.2 / RDF-star reification helpers.\n *\n * RDF 1.2 relates a *reifier* to a triple term with `rdf:reifies`; the\n * Turtle annotation syntax `:s :p :o {| :source :x |}` is shorthand for\n * asserting `:s :p :o` and `_:r rdf:reifies <<( :s :p :o )>> . _:r :source :x`.\n *\n * This module provides helpers for building and reading such reifications,\n * and for converting triple terms to and from classic RDF reification\n * (`rdf:Statement`) for consumers that do not support triple terms.\n *\n * @since 0.1.0\n */\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Dataset from './Dataset.ts';\nimport * as Term from './Term.ts';\nimport { rdf } from './Vocab.ts';\n\n/**\n * Builds the quads for an annotated (asserted and reified) triple.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const annotate = (\n triple: Term.Triple,\n annotations: ReadonlyArray<readonly [Term.Predicate, Term.Object]>,\n options: { readonly reifier?: Term.Resource; readonly graph?: Term.Graph } = {},\n): ReadonlyArray<Term.Quad> => {\n const graph = options.graph ?? Term.defaultGraph;\n const reifier = options.reifier ?? Term.blankNode();\n return [\n new Term.Quad(triple.subject, triple.predicate, triple.object, graph),\n new Term.Quad(reifier, rdf.reifies, triple, graph),\n ...annotations.map(([p, o]) => new Term.Quad(reifier, p, o, graph)),\n ];\n};\n\n/**\n * The reifiers of a triple term in a dataset.\n *\n * @since 0.1.0\n * @category queries\n */\nexport const reifiers = (\n self: Dataset.Dataset,\n triple: Term.Triple,\n graph?: Term.Graph,\n): ReadonlyArray<Term.Subject> => Dataset.subjectsOf(self, rdf.reifies, triple, graph);\n\n/**\n * The annotations (predicate/object pairs on all reifiers) of a triple.\n *\n * @since 0.1.0\n * @category queries\n */\nexport const annotations = (\n self: Dataset.Dataset,\n triple: Term.Triple,\n graph?: Term.Graph,\n): ReadonlyArray<readonly [Term.Predicate, Term.Object]> =>\n reifiers(self, triple, graph).flatMap((r) =>\n Dataset.match(self, { subject: r, graph })\n .filter((q) => q.predicate.value !== rdf.reifies.value)\n .map((q) => [q.predicate, q.object] as const),\n );\n\n/**\n * Replaces every triple term with a blank node described using classic RDF\n * reification (`rdf:Statement`, `rdf:subject`, `rdf:predicate`,\n * `rdf:object`). Nested triple terms are converted recursively.\n *\n * @since 0.1.0\n * @category conversions\n */\nexport const toStandardReification = (self: Dataset.Dataset): Dataset.Dataset => {\n const nodes = MutableHashMap.empty<string, Term.BlankNode>();\n const extra: Array<Term.Quad> = [];\n const convert = <T extends Term.Term>(t: T, graph: Term.Graph): T | Term.BlankNode =>\n Term.isTriple(t)\n ? Option.getOrElse(MutableHashMap.get(nodes, t.key + graph.key), () => describe(t, graph))\n : t;\n const describe = (t: Term.Triple, graph: Term.Graph): Term.BlankNode => {\n const node = Term.blankNode();\n MutableHashMap.set(nodes, t.key + graph.key, node);\n // SAFETY: conversion maps a subject to a subject and an object to an object.\n extra.push(\n new Term.Quad(node, rdf.type, rdf.Statement, graph),\n new Term.Quad(node, rdf.subject, convert(t.subject, graph), graph),\n new Term.Quad(node, rdf.predicate, t.predicate, graph),\n new Term.Quad(node, rdf.object, convert(t.object, graph), graph),\n );\n return node;\n };\n // SAFETY: conversion maps a subject to a subject and an object to an object.\n const converted = Dataset.map(\n self,\n (q) =>\n new Term.Quad(convert(q.subject, q.graph), q.predicate, convert(q.object, q.graph), q.graph),\n );\n return Dataset.addAll(converted, extra);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,YACX,QACA,aACA,UAA6E,CAAC,MACjD;CAC7B,MAAM,QAAQ,QAAQ,SAASA;CAC/B,MAAM,UAAU,QAAQ,WAAWC,UAAe;CAClD,OAAO;EACL,IAAIC,KAAU,OAAO,SAAS,OAAO,WAAW,OAAO,QAAQ,KAAK;EACpE,IAAIA,KAAU,SAAS,IAAI,SAAS,QAAQ,KAAK;EACjD,GAAG,YAAY,KAAK,CAAC,GAAG,OAAO,IAAIA,KAAU,SAAS,GAAG,GAAG,KAAK,CAAC;CACpE;AACF;;;;;;;AAQA,MAAa,YACX,MACA,QACA,UACgCC,WAAmB,MAAM,IAAI,SAAS,QAAQ,KAAK;;;;;;;AAQrF,MAAa,eACX,MACA,QACA,UAEA,SAAS,MAAM,QAAQ,KAAK,CAAC,CAAC,SAAS,MACrCC,MAAc,MAAM;CAAE,SAAS;CAAG;AAAM,CAAC,CAAC,CACvC,QAAQ,MAAM,EAAE,UAAU,UAAU,IAAI,QAAQ,KAAK,CAAC,CACtD,KAAK,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAU,CAChD;;;;;;;;;AAUF,MAAa,yBAAyB,SAA2C;CAC/E,MAAM,QAAQ,eAAe,MAA8B;CAC3D,MAAM,QAA0B,CAAC;CACjC,MAAM,WAAgC,GAAM,UAC1CC,SAAc,CAAC,IACX,OAAO,UAAU,eAAe,IAAI,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,SAAS,GAAG,KAAK,CAAC,IACvF;CACN,MAAM,YAAY,GAAgB,UAAsC;EACtE,MAAM,OAAOJ,UAAe;EAC5B,eAAe,IAAI,OAAO,EAAE,MAAM,MAAM,KAAK,IAAI;EAEjD,MAAM,KACJ,IAAIC,KAAU,MAAM,IAAI,MAAM,IAAI,WAAW,KAAK,GAClD,IAAIA,KAAU,MAAM,IAAI,SAAS,QAAQ,EAAE,SAAS,KAAK,GAAG,KAAK,GACjE,IAAIA,KAAU,MAAM,IAAI,WAAW,EAAE,WAAW,KAAK,GACrD,IAAIA,KAAU,MAAM,IAAI,QAAQ,QAAQ,EAAE,QAAQ,KAAK,GAAG,KAAK,CACjE;EACA,OAAO;CACT;CAEA,MAAM,YAAYI,IAChB,OACC,MACC,IAAIJ,KAAU,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,WAAW,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,KAAK,CAC/F;CACA,OAAOK,OAAe,WAAW,KAAK;AACxC"}
@@ -0,0 +1,2 @@
1
+ import { a as toStandardReification, i as reifiers, n as annotate, r as annotations } from "./Reification-BmN4EfnM.mjs";
2
+ export { annotate, annotations, reifiers, toStandardReification };
@@ -0,0 +1 @@
1
+ export { n as annotate, r as annotations, i as reifiers, a as toStandardReification } from "./Reification-dpqQvjDE.mjs";
@@ -0,0 +1,121 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import * as Arr from "effect/Array";
3
+ import * as Schema from "effect/Schema";
4
+ // src/csvw/Report.ts
5
+ /**
6
+ * The validation report of CSVW processing: the errors and warnings raised
7
+ * while reading metadata, checking it against the tabular data, parsing
8
+ * cells and checking primary and foreign keys, each with its position.
9
+ *
10
+ * @since 0.1.0
11
+ */
12
+ var Report_exports = /* @__PURE__ */ __exportAll({
13
+ Issue: () => Issue,
14
+ Level: () => Level,
15
+ Report: () => Report,
16
+ combine: () => combine,
17
+ empty: () => empty,
18
+ error: () => error,
19
+ errors: () => errors,
20
+ isValid: () => isValid,
21
+ make: () => make,
22
+ warning: () => warning,
23
+ warnings: () => warnings
24
+ });
25
+ /**
26
+ * How serious an issue is: an `error` makes the input invalid, a `warning`
27
+ * does not.
28
+ *
29
+ * @since 0.1.0
30
+ * @category models
31
+ */
32
+ const Level = Schema.Literals(["error", "warning"]);
33
+ /**
34
+ * One error or warning, positioned where it applies: the table URL, the
35
+ * source row number and the source column number (all 1-based, absent when
36
+ * the issue concerns the whole table or metadata).
37
+ *
38
+ * @since 0.1.0
39
+ * @category models
40
+ */
41
+ const Issue = Schema.Struct({
42
+ level: Level,
43
+ message: Schema.String,
44
+ table: Schema.optional(Schema.String),
45
+ row: Schema.optional(Schema.Int),
46
+ column: Schema.optional(Schema.Int)
47
+ });
48
+ /**
49
+ * A validation report: every issue raised, in the order raised.
50
+ *
51
+ * @since 0.1.0
52
+ * @category models
53
+ */
54
+ const Report = Schema.Struct({ issues: Schema.Array(Issue) });
55
+ /**
56
+ * The empty report.
57
+ *
58
+ * @since 0.1.0
59
+ * @category constructors
60
+ */
61
+ const empty = { issues: [] };
62
+ /**
63
+ * A report of the given issues.
64
+ *
65
+ * @since 0.1.0
66
+ * @category constructors
67
+ */
68
+ const make = (issues) => ({ issues });
69
+ /**
70
+ * An error issue.
71
+ *
72
+ * @since 0.1.0
73
+ * @category constructors
74
+ */
75
+ const error = (message, position = {}) => ({
76
+ level: "error",
77
+ message,
78
+ ...position
79
+ });
80
+ /**
81
+ * A warning issue.
82
+ *
83
+ * @since 0.1.0
84
+ * @category constructors
85
+ */
86
+ const warning = (message, position = {}) => ({
87
+ level: "warning",
88
+ message,
89
+ ...position
90
+ });
91
+ /**
92
+ * The errors of a report.
93
+ *
94
+ * @since 0.1.0
95
+ * @category getters
96
+ */
97
+ const errors = (self) => Arr.filter(self.issues, (i) => i.level === "error");
98
+ /**
99
+ * The warnings of a report.
100
+ *
101
+ * @since 0.1.0
102
+ * @category getters
103
+ */
104
+ const warnings = (self) => Arr.filter(self.issues, (i) => i.level === "warning");
105
+ /**
106
+ * Whether a report has no errors (warnings are allowed).
107
+ *
108
+ * @since 0.1.0
109
+ * @category predicates
110
+ */
111
+ const isValid = (self) => !Arr.isReadonlyArrayNonEmpty(errors(self));
112
+ /**
113
+ * Two reports in one.
114
+ *
115
+ * @since 0.1.0
116
+ * @category combinators
117
+ */
118
+ const combine = (self, that) => ({ issues: Arr.appendAll(self.issues, that.issues) });
119
+ export { combine as a, errors as c, warning as d, warnings as f, Report_exports as i, isValid as l, Level as n, empty as o, Report as r, error as s, Issue as t, make as u };
120
+
121
+ //# sourceMappingURL=Report-XHs8htzK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Report-XHs8htzK.mjs","names":[],"sources":["../src/csvw/Report.ts"],"sourcesContent":["/**\n * The validation report of CSVW processing: the errors and warnings raised\n * while reading metadata, checking it against the tabular data, parsing\n * cells and checking primary and foreign keys, each with its position.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Schema from 'effect/Schema';\n\n/**\n * How serious an issue is: an `error` makes the input invalid, a `warning`\n * does not.\n *\n * @since 0.1.0\n * @category models\n */\nexport const Level = Schema.Literals(['error', 'warning']);\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type Level = typeof Level.Type;\n\n/**\n * One error or warning, positioned where it applies: the table URL, the\n * source row number and the source column number (all 1-based, absent when\n * the issue concerns the whole table or metadata).\n *\n * @since 0.1.0\n * @category models\n */\nexport const Issue = Schema.Struct({\n level: Level,\n message: Schema.String,\n table: Schema.optional(Schema.String),\n row: Schema.optional(Schema.Int),\n column: Schema.optional(Schema.Int),\n});\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type Issue = typeof Issue.Type;\n\n/**\n * A validation report: every issue raised, in the order raised.\n *\n * @since 0.1.0\n * @category models\n */\nexport const Report = Schema.Struct({ issues: Schema.Array(Issue) });\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type Report = typeof Report.Type;\n\n/**\n * The empty report.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const empty: Report = { issues: [] };\n\n/**\n * A report of the given issues.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (issues: ReadonlyArray<Issue>): Report => ({ issues });\n\n/**\n * An error issue.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const error = (message: string, position: Omit<Issue, 'level' | 'message'> = {}): Issue => ({\n level: 'error',\n message,\n ...position,\n});\n\n/**\n * A warning issue.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const warning = (\n message: string,\n position: Omit<Issue, 'level' | 'message'> = {},\n): Issue => ({ level: 'warning', message, ...position });\n\n/**\n * The errors of a report.\n *\n * @since 0.1.0\n * @category getters\n */\nexport const errors = (self: Report): ReadonlyArray<Issue> =>\n Arr.filter(self.issues, (i) => i.level === 'error');\n\n/**\n * The warnings of a report.\n *\n * @since 0.1.0\n * @category getters\n */\nexport const warnings = (self: Report): ReadonlyArray<Issue> =>\n Arr.filter(self.issues, (i) => i.level === 'warning');\n\n/**\n * Whether a report has no errors (warnings are allowed).\n *\n * @since 0.1.0\n * @category predicates\n */\nexport const isValid = (self: Report): boolean => !Arr.isReadonlyArrayNonEmpty(errors(self));\n\n/**\n * Two reports in one.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const combine = (self: Report, that: Report): Report => ({\n issues: Arr.appendAll(self.issues, that.issues),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAa,QAAQ,OAAO,SAAS,CAAC,SAAS,SAAS,CAAC;;;;;;;;;AAgBzD,MAAa,QAAQ,OAAO,OAAO;CACjC,OAAO;CACP,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,KAAK,OAAO,SAAS,OAAO,GAAG;CAC/B,QAAQ,OAAO,SAAS,OAAO,GAAG;AACpC,CAAC;;;;;;;AAcD,MAAa,SAAS,OAAO,OAAO,EAAE,QAAQ,OAAO,MAAM,KAAK,EAAE,CAAC;;;;;;;AAcnE,MAAa,QAAgB,EAAE,QAAQ,CAAC,EAAE;;;;;;;AAQ1C,MAAa,QAAQ,YAA0C,EAAE,OAAO;;;;;;;AAQxE,MAAa,SAAS,SAAiB,WAA6C,CAAC,OAAc;CACjG,OAAO;CACP;CACA,GAAG;AACL;;;;;;;AAQA,MAAa,WACX,SACA,WAA6C,CAAC,OACnC;CAAE,OAAO;CAAW;CAAS,GAAG;AAAS;;;;;;;AAQtD,MAAa,UAAU,SACrB,IAAI,OAAO,KAAK,SAAS,MAAM,EAAE,UAAU,OAAO;;;;;;;AAQpD,MAAa,YAAY,SACvB,IAAI,OAAO,KAAK,SAAS,MAAM,EAAE,UAAU,SAAS;;;;;;;AAQtD,MAAa,WAAW,SAA0B,CAAC,IAAI,wBAAwB,OAAO,IAAI,CAAC;;;;;;;AAQ3F,MAAa,WAAW,MAAc,UAA0B,EAC9D,QAAQ,IAAI,UAAU,KAAK,QAAQ,KAAK,MAAM,EAChD"}
@@ -0,0 +1,115 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare namespace Report_d_exports {
3
+ export { Issue, Level, Report, combine, empty, error, errors, isValid, make, warning, warnings };
4
+ }
5
+ /**
6
+ * How serious an issue is: an `error` makes the input invalid, a `warning`
7
+ * does not.
8
+ *
9
+ * @since 0.1.0
10
+ * @category models
11
+ */
12
+ declare const Level: Schema.Literals<readonly ["error", "warning"]>;
13
+ /**
14
+ * @since 0.1.0
15
+ * @category models
16
+ */
17
+ type Level = typeof Level.Type;
18
+ /**
19
+ * One error or warning, positioned where it applies: the table URL, the
20
+ * source row number and the source column number (all 1-based, absent when
21
+ * the issue concerns the whole table or metadata).
22
+ *
23
+ * @since 0.1.0
24
+ * @category models
25
+ */
26
+ declare const Issue: Schema.Struct<{
27
+ readonly level: Schema.Literals<readonly ["error", "warning"]>;
28
+ readonly message: Schema.String;
29
+ readonly table: Schema.optional<Schema.String>;
30
+ readonly row: Schema.optional<Schema.Int>;
31
+ readonly column: Schema.optional<Schema.Int>;
32
+ }>;
33
+ /**
34
+ * @since 0.1.0
35
+ * @category models
36
+ */
37
+ type Issue = typeof Issue.Type;
38
+ /**
39
+ * A validation report: every issue raised, in the order raised.
40
+ *
41
+ * @since 0.1.0
42
+ * @category models
43
+ */
44
+ declare const Report: Schema.Struct<{
45
+ readonly issues: Schema.$Array<Schema.Struct<{
46
+ readonly level: Schema.Literals<readonly ["error", "warning"]>;
47
+ readonly message: Schema.String;
48
+ readonly table: Schema.optional<Schema.String>;
49
+ readonly row: Schema.optional<Schema.Int>;
50
+ readonly column: Schema.optional<Schema.Int>;
51
+ }>>;
52
+ }>;
53
+ /**
54
+ * @since 0.1.0
55
+ * @category models
56
+ */
57
+ type Report = typeof Report.Type;
58
+ /**
59
+ * The empty report.
60
+ *
61
+ * @since 0.1.0
62
+ * @category constructors
63
+ */
64
+ declare const empty: Report;
65
+ /**
66
+ * A report of the given issues.
67
+ *
68
+ * @since 0.1.0
69
+ * @category constructors
70
+ */
71
+ declare const make: (issues: ReadonlyArray<Issue>) => Report;
72
+ /**
73
+ * An error issue.
74
+ *
75
+ * @since 0.1.0
76
+ * @category constructors
77
+ */
78
+ declare const error: (message: string, position?: Omit<Issue, "level" | "message">) => Issue;
79
+ /**
80
+ * A warning issue.
81
+ *
82
+ * @since 0.1.0
83
+ * @category constructors
84
+ */
85
+ declare const warning: (message: string, position?: Omit<Issue, "level" | "message">) => Issue;
86
+ /**
87
+ * The errors of a report.
88
+ *
89
+ * @since 0.1.0
90
+ * @category getters
91
+ */
92
+ declare const errors: (self: Report) => ReadonlyArray<Issue>;
93
+ /**
94
+ * The warnings of a report.
95
+ *
96
+ * @since 0.1.0
97
+ * @category getters
98
+ */
99
+ declare const warnings: (self: Report) => ReadonlyArray<Issue>;
100
+ /**
101
+ * Whether a report has no errors (warnings are allowed).
102
+ *
103
+ * @since 0.1.0
104
+ * @category predicates
105
+ */
106
+ declare const isValid: (self: Report) => boolean;
107
+ /**
108
+ * Two reports in one.
109
+ *
110
+ * @since 0.1.0
111
+ * @category combinators
112
+ */
113
+ declare const combine: (self: Report, that: Report) => Report;
114
+ export { combine as a, errors as c, warning as d, warnings as f, Report_d_exports as i, isValid as l, Level as n, empty as o, Report as r, error as s, Issue as t, make as u };
115
+ //# sourceMappingURL=Report-hcXsc_19.d.mts.map