@thomasfosterau/effect-rdf 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2250 -1
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +187 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Engine-DF8PN7g-.mjs","names":["Term.isVariable","Term.isTriple","Term.triple","Term.isDefaultGraph","StringMap.emptySet","Term.defaultGraph","StringMap.copy","B.Bindings","StringMap.setOf","StringMap.empty","Term.isNamedNode","Term.isLiteral","Expression.test","B.merge","B.sharesVariable","B.compatible","StringMap.fromEntries","Term.Literal","Expression.evaluateOrUndefined","V.catchEvalFailure","V.arithmetic","V.compareTerms","V.fail","V.simple","V.orderCompare","B.set","B.empty","B.project","Term.isVariable","Term.isBlankNode","Term.blankNode","Term.isTriple","Term.triple","Term.isSubject","Term.isNamedNode","Term.isObject","Term.isDefaultGraph","StringMap.empty","Term.Quad","Algebra.prebind","StringMap.emptySet","Evaluator.matchQuads","Term.defaultGraph","StringMap.setOf","Term.mapTerms","Algebra.bgp","Algebra.unit","Algebra.join","B.empty","Expression.makeContext","parseQuery","Parser.parseQuery","optimize","Optimizer.optimize","Translate.translateQuery","Evaluator.evaluate","Translate.translatePattern","Parser.parseUpdate","evaluate","Store.QuadStore","Store.layerMemory"],"sources":["../src/sparql/internal/evaluator.ts","../src/sparql/Engine.ts"],"sourcesContent":["/**\n * The generic, streaming evaluator of the SPARQL algebra over a `QuadStore`.\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Predicate from 'effect/Predicate';\nimport * as Result from 'effect/Result';\nimport * as Stream from 'effect/Stream';\nimport * as Term from '../../Term.ts';\nimport type * as Algebra from '../Algebra.ts';\nimport type * as Ast from '../Ast.ts';\nimport * as B from '../Bindings.ts';\nimport { EvaluationError } from '../Errors.ts';\nimport * as Expression from '../Expression.ts';\nimport type * as Store from '../Store.ts';\nimport * as StringMap from './stringMap.ts';\nimport * as V from './values.ts';\n\ntype Bindings = B.Bindings;\n\n/**\n * A handler for `SERVICE` patterns (federated queries).\n */\nexport type ServiceHandler = (\n endpoint: Term.NamedNode,\n service: Algebra.Service,\n env: Env,\n) => Stream.Stream<Bindings, EvaluationError | Store.StoreError>;\n\nexport interface Env {\n readonly store: Store.QuadStoreShape;\n readonly dataset: Store.DatasetSpec;\n readonly graph: Store.ActiveGraph;\n /** The context solution (μctx) flowing into EXISTS patterns. */\n readonly context: Bindings;\n readonly expr: Expression.Context;\n /** The handler for `SERVICE` patterns, if federation is configured. */\n readonly service: Option.Option<ServiceHandler>;\n}\n\nexport type Err = Store.StoreError | EvaluationError;\ntype S = Stream.Stream<Bindings, Err>;\n\n// -----------------------------------------------------------------------------\n// Pattern matching\n// -----------------------------------------------------------------------------\n\ntype PatternTerm = Ast.TermPattern | Term.Term;\n\n/**\n * Substitutes bound variables: the ground term, or `None` while a variable\n * is unbound. Plain branches rather than `Match`: it runs for every term of\n * every triple pattern per solution.\n */\nconst ground = (t: PatternTerm, b: Bindings): Option.Option<Term.GroundTerm> => {\n if (Term.isVariable(t)) return Option.fromUndefinedOr(b.map.get(t.value));\n if (Term.isTriple(t)) {\n const s = ground(t.subject, b);\n if (Option.isNone(s)) return s;\n const p = ground(t.predicate, b);\n if (Option.isNone(p)) return p;\n const o = ground(t.object, b);\n if (Option.isNone(o)) return o;\n // Unchanged components keep the triple pattern ground; otherwise substitution keeps each\n // position's kind.\n return t.subject === s.value && t.predicate === p.value && t.object === o.value\n ? Option.some(t)\n : Option.some(Term.triple<any, any, any>(s.value, p.value, o.value));\n }\n return Term.isDefaultGraph(t) ? Option.none() : Option.some(t);\n};\n\n/**\n * Unifies a pattern term with a value, extending `map`; false on mismatch.\n * Plain branches rather than `Match`: it runs for every matched quad.\n */\nconst unify = (\n t: PatternTerm,\n value: Term.GroundTerm,\n map: Map<string, Term.GroundTerm>,\n): boolean => {\n if (Term.isVariable(t)) {\n const bound = map.get(t.value);\n if (bound !== undefined) return bound.key === value.key;\n map.set(t.value, value);\n return true;\n }\n if (Term.isTriple(t)) {\n return (\n Term.isTriple(value) &&\n unify(t.subject, value.subject, map) &&\n unify(t.predicate, value.predicate, map) &&\n unify(t.object, value.object, map)\n );\n }\n return t.key === value.key;\n};\n\nconst dedupeTriples = (quads: Stream.Stream<Term.Quad, Store.StoreError>) =>\n Stream.suspend(() => {\n const seen = StringMap.emptySet();\n return Stream.filter(quads, (q) => {\n const k = `${q.subject.key} ${q.predicate.key} ${q.object.key}`;\n if (seen.has(k)) return false;\n seen.set(k, true);\n return true;\n });\n });\n\n/** Matches a quad pattern (without graph) in the active graph. */\nexport const matchQuads = (\n env: Env,\n pattern: Omit<Store.QuadPattern, 'graph'>,\n): Stream.Stream<Term.Quad, Store.StoreError> => {\n const active = env.graph;\n if (Predicate.isTagged(active, 'NamedGraph')) {\n return env.store.match({ ...pattern, graph: active.graph });\n }\n const def = env.dataset.defaultGraph;\n if (def === 'default') return env.store.match({ ...pattern, graph: Term.defaultGraph });\n if (def === 'union') return dedupeTriples(env.store.match({ ...pattern, graph: undefined }));\n if (!Arr.isReadonlyArrayNonEmpty(def)) return Stream.empty;\n if (def.length === 1) return env.store.match({ ...pattern, graph: Arr.headNonEmpty(def) });\n return dedupeTriples(concatAll(def.map((g) => env.store.match({ ...pattern, graph: g }))));\n};\n\nconst concatAll = <A, X>(streams: ReadonlyArray<Stream.Stream<A, X>>): Stream.Stream<A, X> =>\n Arr.isReadonlyArrayEmpty(streams) ? Stream.empty : streams.reduce((a, b) => Stream.concat(a, b));\n\nconst matchTriple = (pattern: Ast.TriplePattern, env: Env, b: Bindings): S => {\n const s = ground(pattern.subject, b);\n const p = ground(pattern.predicate, b);\n const o = ground(pattern.object, b);\n const unifyS = Option.isNone(s);\n const unifyP = Option.isNone(p);\n const unifyO = Option.isNone(o);\n return matchQuads(env, {\n subject: Option.getOrUndefined(s),\n predicate: Option.getOrUndefined(p),\n object: Option.getOrUndefined(o),\n }).pipe(\n Stream.filterMap((q) => {\n const map = StringMap.copy(b.map);\n if (\n (!unifyS || unify(pattern.subject, q.subject, map)) &&\n (!unifyP || unify(pattern.predicate, q.predicate, map)) &&\n (!unifyO || unify(pattern.object, q.object, map))\n ) {\n return Result.succeed(new B.Bindings(map));\n }\n return Result.fail(undefined);\n }),\n );\n};\n\nconst evalBgp = (patterns: ReadonlyArray<Ast.TriplePattern>, env: Env, initial: Bindings): S => {\n const start: S = Stream.succeed(initial);\n return patterns.reduce(\n (stream, p) => Stream.flatMap(stream, (b) => matchTriple(p, env, b)),\n start,\n );\n};\n\n// -----------------------------------------------------------------------------\n// Property paths\n// -----------------------------------------------------------------------------\n\ntype E<A> = Effect.Effect<A, Store.StoreError>;\n\n/** `Effect.forEach` in order, concatenating each element's results. */\nconst forEachFlat = <A, B>(\n items: Iterable<A>,\n f: (a: A) => E<ReadonlyArray<B>>,\n): E<ReadonlyArray<B>> =>\n Effect.map(Effect.forEach(items, f, { concurrency: 1 }), (lists) => lists.flat());\n\nconst collect = (\n env: Env,\n pattern: Omit<Store.QuadPattern, 'graph'>,\n): E<ReadonlyArray<Term.Quad>> => Stream.runCollect(matchQuads(env, pattern));\n\nconst iriValueSet = (list: ReadonlyArray<Term.NamedNode>) =>\n StringMap.setOf(list.map((i) => i.value));\n\nconst distinctTerms = (terms: ReadonlyArray<Term.GroundTerm>): Array<Term.GroundTerm> => {\n const seen = StringMap.empty<Term.GroundTerm>();\n terms.forEach((t) => {\n if (!seen.has(t.key)) seen.set(t.key, t);\n });\n return Array.from(seen.values());\n};\n\n/** Nodes reachable from `start` by `path` (forward) or reaching `start` (backward); a bag. */\nconst pathFrom = (\n env: Env,\n path: Ast.Path,\n start: Term.GroundTerm,\n forward: boolean,\n): E<ReadonlyArray<Term.GroundTerm>> => {\n return Match.value(path).pipe(\n Match.tag('PathLink', (link) =>\n Effect.map(\n collect(\n env,\n forward\n ? { subject: start, predicate: link.iri }\n : { predicate: link.iri, object: start },\n ),\n (qs) => qs.map((q) => (forward ? q.object : q.subject)),\n ),\n ),\n Match.tag('PathInverse', (inv) => pathFrom(env, inv.path, start, !forward)),\n Match.tag('PathSequence', (seq) => {\n const steps = forward ? seq.paths : seq.paths.toReversed();\n return Effect.reduce(\n steps,\n (): ReadonlyArray<Term.GroundTerm> => [start],\n (frontier, step) => forEachFlat(frontier, (n) => pathFrom(env, step, n, forward)),\n );\n }),\n Match.tag('PathAlternative', (alt) =>\n forEachFlat(alt.paths, (p) => pathFrom(env, p, start, forward)),\n ),\n Match.tag('PathZeroOrOne', (opt) =>\n Effect.map(pathFrom(env, opt.path, start, forward), (ns) => distinctTerms([start, ...ns])),\n ),\n Match.tag('PathZeroOrMore', 'PathOneOrMore', (rep) =>\n closure(env, rep.path, start, forward, Predicate.isTagged(rep, 'PathZeroOrMore')),\n ),\n Match.tag('PathNegated', (neg) => {\n const parts: Array<E<ReadonlyArray<Term.GroundTerm>>> = [];\n if (Arr.isReadonlyArrayNonEmpty(neg.iris) || Arr.isReadonlyArrayEmpty(neg.inverse)) {\n const ex = iriValueSet(neg.iris);\n parts.push(\n Effect.map(collect(env, forward ? { subject: start } : { object: start }), (qs) =>\n qs\n .filter((q) => !ex.has(q.predicate.value))\n .map((q) => (forward ? q.object : q.subject)),\n ),\n );\n }\n if (Arr.isReadonlyArrayNonEmpty(neg.inverse)) {\n const ex = iriValueSet(neg.inverse);\n parts.push(\n Effect.map(collect(env, forward ? { object: start } : { subject: start }), (qs) =>\n qs\n .filter((q) => !ex.has(q.predicate.value))\n .map((q) => (forward ? q.subject : q.object)),\n ),\n );\n }\n return Effect.map(Effect.all(parts, { concurrency: 1 }), (lists) => lists.flat());\n }),\n Match.exhaustive,\n );\n};\n\nconst closure = (\n env: Env,\n path: Ast.Path,\n start: Term.GroundTerm,\n forward: boolean,\n includeStart: boolean,\n): E<ReadonlyArray<Term.GroundTerm>> =>\n Effect.suspend(() => {\n const visited = StringMap.empty<Term.GroundTerm>();\n if (includeStart) visited.set(start.key, start);\n const expanded = StringMap.emptySet();\n /** Expands the frontier's unexpanded nodes, then the nodes they newly reach. */\n const expand = (frontier: ReadonlyArray<Term.GroundTerm>): E<void> => {\n if (Arr.isReadonlyArrayEmpty(frontier)) return Effect.void;\n const next: Array<Term.GroundTerm> = [];\n const unexpanded = frontier.filter((n) => {\n if (expanded.has(n.key)) return false;\n expanded.set(n.key, true);\n return true;\n });\n return Effect.forEach(\n unexpanded,\n (n) =>\n Effect.map(pathFrom(env, path, n, forward), (reached) =>\n reached.forEach((m) => {\n if (!visited.has(m.key)) {\n visited.set(m.key, m);\n next.push(m);\n }\n }),\n ),\n { concurrency: 1, discard: true },\n ).pipe(Effect.flatMap(() => expand(next)));\n };\n return Effect.map(expand([start]), () => Array.from(visited.values()));\n });\n\n/** All nodes (subjects and objects) of the active graph. */\nconst allNodes = (env: Env): E<ReadonlyArray<Term.GroundTerm>> =>\n Effect.map(collect(env, {}), (qs) => distinctTerms(qs.flatMap((q) => [q.subject, q.object])));\n\nconst pathAll = (\n env: Env,\n path: Ast.Path,\n): E<ReadonlyArray<readonly [Term.GroundTerm, Term.GroundTerm]>> => {\n return Match.value(path).pipe(\n Match.tag('PathLink', (link): E<ReadonlyArray<readonly [Term.GroundTerm, Term.GroundTerm]>> =>\n Effect.map(collect(env, { predicate: link.iri }), (qs) =>\n qs.map((q) => [q.subject, q.object] as const),\n ),\n ),\n Match.tag('PathInverse', (inv) =>\n Effect.map(pathAll(env, inv.path), (ps) => ps.map(([a, b]) => [b, a] as const)),\n ),\n Match.tag('PathSequence', (seq) => {\n const [first, ...rest] = seq.paths;\n // A parsed sequence has at least two steps.\n if (first === undefined) return Effect.succeed([]);\n return Effect.flatMap(pathAll(env, first), (pairs) =>\n forEachFlat(pairs, ([x, m]) =>\n Effect.map(\n Arr.isReadonlyArrayEmpty(rest)\n ? Effect.succeed([m])\n : pathFrom(env, { _tag: 'PathSequence', paths: rest }, m, true),\n (ys) => ys.map((y) => [x, y] as const),\n ),\n ),\n );\n }),\n Match.tag('PathAlternative', (alt) => forEachFlat(alt.paths, (p) => pathAll(env, p))),\n Match.tag('PathNegated', (neg) => {\n const out: Array<E<ReadonlyArray<readonly [Term.GroundTerm, Term.GroundTerm]>>> = [];\n if (Arr.isReadonlyArrayNonEmpty(neg.iris) || Arr.isReadonlyArrayEmpty(neg.inverse)) {\n const ex = iriValueSet(neg.iris);\n out.push(\n Effect.map(collect(env, {}), (qs) =>\n qs.filter((q) => !ex.has(q.predicate.value)).map((q) => [q.subject, q.object] as const),\n ),\n );\n }\n if (Arr.isReadonlyArrayNonEmpty(neg.inverse)) {\n const ex = iriValueSet(neg.inverse);\n out.push(\n Effect.map(collect(env, {}), (qs) =>\n qs.filter((q) => !ex.has(q.predicate.value)).map((q) => [q.object, q.subject] as const),\n ),\n );\n }\n return Effect.map(Effect.all(out, { concurrency: 1 }), (lists) => lists.flat());\n }),\n Match.orElse((p) =>\n Effect.flatMap(allNodes(env), (nodes) =>\n forEachFlat(nodes, (n) =>\n Effect.map(pathFrom(env, p, n, true), (ys) => ys.map((y) => [n, y] as const)),\n ),\n ),\n ),\n );\n};\n\n/** Whether a path can match with zero length. */\nconst nullable: (path: Ast.Path) => boolean = Match.type<Ast.Path>().pipe(\n Match.tag('PathZeroOrMore', 'PathZeroOrOne', () => true),\n Match.tag('PathInverse', (p) => nullable(p.path)),\n Match.tag('PathSequence', (p) => p.paths.every(nullable)),\n Match.tag('PathAlternative', (p) => p.paths.some(nullable)),\n Match.orElse(() => false),\n);\n\nconst isGraphNode = (env: Env, term: Term.GroundTerm): E<boolean> =>\n Effect.map(\n Effect.all(\n [\n Stream.runHead(matchQuads(env, { subject: term })),\n Stream.runHead(matchQuads(env, { object: term })),\n ],\n { concurrency: 1 },\n ),\n ([a, b]) => Option.isSome(a) || Option.isSome(b),\n );\n\nconst evalPath = (op: Algebra.Path, env: Env, initial: Bindings): S =>\n Stream.fromIterableEffect(\n Effect.gen(function* () {\n const s = ground(op.subject, initial);\n const o = ground(op.object, initial);\n const out: Array<Bindings> = [];\n // A variable endpoint ranges over the nodes of the graph only (the\n // zero-length case must not produce terms that are not in the graph),\n // so an endpoint bound by an outer solution must be a graph node.\n if (nullable(op.path)) {\n const endpoints = [\n [op.subject, s],\n [op.object, o],\n ] as const;\n const outsideGraph = yield* Effect.findFirst(endpoints, ([term, value]) =>\n Option.isSome(value) && !Term.isNamedNode(term) && !Term.isLiteral(term)\n ? Effect.map(isGraphNode(env, value.value), (isNode) => !isNode)\n : Effect.succeed(false),\n );\n if (Option.isSome(outsideGraph)) return out;\n }\n const emit = (x: Term.GroundTerm, y: Term.GroundTerm) => {\n const map = StringMap.copy(initial.map);\n if (unify(op.subject, x, map) && unify(op.object, y, map)) out.push(new B.Bindings(map));\n };\n if (Option.isSome(s)) {\n const from = s.value;\n const ys = yield* pathFrom(env, op.path, from, true);\n ys.forEach((y) => emit(from, y));\n } else if (Option.isSome(o)) {\n const to = o.value;\n const xs = yield* pathFrom(env, op.path, to, false);\n xs.forEach((x) => emit(x, to));\n } else {\n const pairs = yield* pathAll(env, op.path);\n pairs.forEach(([x, y]) => emit(x, y));\n }\n return out;\n }),\n );\n\n// -----------------------------------------------------------------------------\n// Expressions with EXISTS\n// -----------------------------------------------------------------------------\n\nconst collectExists: (e: Algebra.Expression, out: Array<Algebra.ExistsExpression>) => void =\n Match.fn((e: Algebra.Expression, _out: Array<Algebra.ExistsExpression>) => e).pipe(\n Match.tag('Exists', (x, _e, out) => {\n out.push(x);\n }),\n Match.tag('Operation', 'FunctionCall', (call, _e, out) =>\n call.args.forEach((a) => collectExists(a, out)),\n ),\n Match.orElse(() => undefined),\n );\n\n/**\n * Prepares an expression for evaluation: returns a function producing the\n * expression context for a solution (precomputing EXISTS patterns).\n */\nconst prepare = (\n expression: Algebra.Expression,\n env: Env,\n): ((b: Bindings) => Effect.Effect<Expression.Context, Err>) => {\n const nodes: Array<Algebra.ExistsExpression> = [];\n collectExists(expression, nodes);\n if (Arr.isReadonlyArrayEmpty(nodes)) return () => Effect.succeed(env.expr);\n return (b) =>\n Effect.map(\n Effect.forEach(\n nodes,\n (n) => Effect.map(Stream.runHead(evaluate(n.input, { ...env, context: b })), Option.isSome),\n { concurrency: 1 },\n ),\n (results) => {\n // By identity: each `EXISTS` node of the expression and its result.\n const table = new WeakMap<Algebra.ExistsExpression, boolean>();\n Arr.zip(nodes, results).forEach(([n, r]) => table.set(n, r));\n return { ...env.expr, exists: (e: Algebra.ExistsExpression) => table.get(e) ?? false };\n },\n );\n};\n\nconst filterStream = (stream: S, expression: Algebra.Expression, env: Env): S => {\n const ctxFor = prepare(expression, env);\n if (!Algebra_containsExists(expression)) {\n return Stream.filter(stream, (b) => Expression.test(expression, b, env.expr));\n }\n return Stream.filterEffect(stream, (b) =>\n Effect.map(ctxFor(b), (ctx) => Expression.test(expression, b, ctx)),\n );\n};\n\nconst Algebra_containsExists = (e: Algebra.Expression): boolean => {\n const out: Array<Algebra.ExistsExpression> = [];\n collectExists(e, out);\n return Arr.isReadonlyArrayNonEmpty(out);\n};\n\n// -----------------------------------------------------------------------------\n// Joins\n// -----------------------------------------------------------------------------\n\n/** Operators that can be evaluated with an initial solution (bind join). */\nconst bindable = (op: Algebra.Operation): boolean =>\n Predicate.isTagged(op, 'Bgp') ||\n Predicate.isTagged(op, 'Path') ||\n // `SERVICE ?endpoint` is evaluated per solution once `?endpoint` is bound.\n (Predicate.isTagged(op, 'Service') && Term.isVariable(op.name)) ||\n (Predicate.isTagged(op, 'Join') && bindable(op.left) && bindable(op.right));\n\n/**\n * Evaluates a bindable operator with an initial solution. Plain branches\n * rather than `Match`: a bind join runs it once per solution of its left\n * side.\n */\nconst evalWith = (op: Algebra.Operation, env: Env, initial: Bindings): S => {\n if (Predicate.isTagged(op, 'Bgp')) return evalBgp(op.patterns, env, initial);\n if (Predicate.isTagged(op, 'Path')) return evalPath(op, env, initial);\n if (Predicate.isTagged(op, 'Join')) {\n return Stream.flatMap(evalWith(op.left, env, initial), (b) => evalWith(op.right, env, b));\n }\n if (Predicate.isTagged(op, 'Service')) return evalBoundService(op, env, initial);\n return Stream.die(new Cause.IllegalArgumentError('not bindable'));\n};\n\nconst isUnit = (op: Algebra.Operation): boolean =>\n Predicate.isTagged(op, 'Bgp') && Arr.isReadonlyArrayEmpty(op.patterns);\n\n/** An index of solutions by the values of the variables bound in all of them. */\n/** The index key of a solution: its terms for `vars`, all of which it binds. */\nconst indexKey = (sig: string, vars: ReadonlyArray<string>, b: Bindings): string =>\n `${sig}#${vars.map((v) => b.map.get(v)?.key ?? '').join('\\u0001')}`;\n\nclass SolutionIndex {\n readonly keyVars: ReadonlyArray<string>;\n readonly buckets = StringMap.empty<Array<Bindings>>();\n readonly all: ReadonlyArray<Bindings>;\n constructor(solutions: ReadonlyArray<Bindings>) {\n this.all = solutions;\n const first = solutions[0];\n this.keyVars =\n first === undefined\n ? []\n : Array.from(first.map.keys()).filter((v) => solutions.every((s) => s.map.has(v)));\n }\n candidates(b: Bindings): ReadonlyArray<Bindings> {\n const vars = this.keyVars.filter((v) => b.map.has(v));\n if (Arr.isReadonlyArrayEmpty(vars)) return this.all;\n const sig = vars.join('|');\n const built = `${sig}#__built`;\n if (!this.buckets.has(built)) {\n this.buckets.set(built, []);\n this.all.forEach((s) => {\n const k = indexKey(sig, vars, s);\n const list = this.buckets.get(k);\n if (list === undefined) this.buckets.set(k, [s]);\n else list.push(s);\n });\n }\n return this.buckets.get(indexKey(sig, vars, b)) ?? [];\n }\n}\n\nconst materialize = (op: Algebra.Operation, env: Env) => Stream.runCollect(evaluate(op, env));\n\nconst evalJoin = (op: Algebra.Join, env: Env): S => {\n if (isUnit(op.left)) {\n return bindable(op.right)\n ? evalWith(op.right, env, env.context)\n : joinWith(Stream.succeed(env.context), op.right, env);\n }\n if (bindable(op.right)) {\n return Stream.flatMap(evaluate(op.left, env), (b) => evalWith(op.right, env, b));\n }\n return joinWith(evaluate(op.left, env), op.right, env);\n};\n\nconst joinWith = (left: S, right: Algebra.Operation, env: Env): S =>\n Stream.unwrap(\n Effect.map(materialize(right, env), (rs) => {\n const index = new SolutionIndex(rs);\n return Stream.flatMap(left, (a) =>\n Stream.fromIterable(\n index.candidates(a).flatMap((r) => {\n const m = B.merge(a, r);\n return m === undefined ? [] : [m];\n }),\n ),\n );\n }),\n );\n\nconst keepAll: Effect.Effect<boolean, Err> = Effect.succeed(true);\n\n/** Whether a solution passes an `OPTIONAL`'s filter. */\nconst keepWhere = (\n expression: Algebra.Expression,\n env: Env,\n): ((b: Bindings) => Effect.Effect<boolean, Err>) => {\n const ctxFor = prepare(expression, env);\n return (b) => Effect.map(ctxFor(b), (ctx) => Expression.test(expression, b, ctx));\n};\n\nconst evalLeftJoin = (op: Algebra.LeftJoin, env: Env): S => {\n const left = isUnit(op.left) ? Stream.succeed(env.context) : evaluate(op.left, env);\n const expression = op.expression;\n const keep =\n expression === undefined\n ? (): Effect.Effect<boolean, Err> => keepAll\n : keepWhere(expression, env);\n const extend = (a: Bindings, matches: ReadonlyArray<Bindings>) =>\n Effect.map(Effect.filter(matches, keep), (kept) =>\n Arr.isReadonlyArrayNonEmpty(kept) ? kept : [a],\n );\n if (bindable(op.right)) {\n return Stream.flatMap(left, (a) =>\n Stream.fromIterableEffect(\n Effect.flatMap(Stream.runCollect(evalWith(op.right, env, a)), (ms) => extend(a, ms)),\n ),\n );\n }\n return Stream.unwrap(\n Effect.map(materialize(op.right, env), (rs) => {\n const index = new SolutionIndex(rs);\n return Stream.flatMap(left, (a) => {\n const merged = index.candidates(a).flatMap((r) => {\n const m = B.merge(a, r);\n return m === undefined ? [] : [m];\n });\n return Stream.fromIterableEffect(extend(a, merged));\n });\n }),\n );\n};\n\nconst evalMinus = (op: Algebra.Minus, env: Env): S =>\n Stream.unwrap(\n Effect.map(materialize(op.right, env), (rs) =>\n Stream.filter(\n isUnit(op.left) ? Stream.succeed(env.context) : evaluate(op.left, env),\n (a) => !rs.some((r) => B.sharesVariable(a, r) && B.compatible(a, r)),\n ),\n ),\n );\n\n// -----------------------------------------------------------------------------\n// Graphs\n// -----------------------------------------------------------------------------\n\nconst namedGraphs = (env: Env): E<ReadonlyArray<Term.NamedNode | Term.BlankNode>> =>\n env.dataset.namedGraphs === 'all'\n ? Stream.runCollect(env.store.graphs)\n : Effect.succeed(env.dataset.namedGraphs);\n\nconst evalGraph = (op: Algebra.Graph, env: Env): S => {\n const name = op.name;\n if (Term.isNamedNode(name)) {\n return Stream.unwrap(\n Effect.map(namedGraphs(env), (graphs) =>\n graphs.some((g) => g.key === name.key)\n ? evaluate(op.input, { ...env, graph: { _tag: 'NamedGraph', graph: name } })\n : Stream.empty,\n ),\n );\n }\n const variable = name.value;\n return Stream.unwrap(\n Effect.map(namedGraphs(env), (graphs) =>\n concatAll(\n graphs.map((g) =>\n evaluate(op.input, { ...env, graph: { _tag: 'NamedGraph', graph: g } }).pipe(\n Stream.filterMap((b) => {\n const m = B.merge(b, new B.Bindings(StringMap.fromEntries([[variable, g]])));\n return m === undefined ? Result.fail(undefined) : Result.succeed(m);\n }),\n ),\n ),\n ),\n ),\n );\n};\n\n// -----------------------------------------------------------------------------\n// Grouping and aggregation\n// -----------------------------------------------------------------------------\n\nconst integerLiteral = (n: number): Term.Literal => new Term.Literal(String(n), V.dt.integer);\n\n/** An aggregate over a group's members; `None` leaves it unbound. */\nconst aggregateValue = (\n agg: Algebra.Aggregate,\n members: ReadonlyArray<Bindings>,\n env: Env,\n): Option.Option<Term.GroundTerm> => {\n if (agg.expression === '*') {\n if (agg.name !== 'COUNT') return Option.none();\n const n = agg.distinct ? StringMap.setOf(members.map((m) => m.key)).size : members.length;\n return Option.some(integerLiteral(n));\n }\n const expr = agg.expression;\n const evaluated = members.map((m) =>\n Option.fromUndefinedOr(Expression.evaluateOrUndefined(expr, m, env.expr)),\n );\n // With DISTINCT, the first of each value (an error, `None`, counting as one value).\n const seen = StringMap.emptySet();\n const values = agg.distinct\n ? evaluated.filter((v) => {\n const k = Option.isNone(v) ? '' : v.value.key;\n if (seen.has(k)) return false;\n seen.set(k, true);\n return true;\n })\n : evaluated;\n const defined = Arr.getSomes(values);\n // An expression error in the aggregate leaves it unbound.\n return Option.flatten(\n Result.getSuccess(V.catchEvalFailure(() => aggregateOf(agg, values.length, defined))),\n );\n};\n\nconst sum = (values: ReadonlyArray<Term.GroundTerm>): Term.GroundTerm =>\n values.reduce<Term.GroundTerm>((acc, v) => V.arithmetic('+', acc, v), integerLiteral(0));\n\n/**\n * An aggregate of the values that evaluated (`defined`, of `count`\n * members); `None` leaves it unbound.\n */\nconst aggregateOf = (\n agg: Algebra.Aggregate,\n count: number,\n defined: ReadonlyArray<Term.GroundTerm>,\n): Option.Option<Term.GroundTerm> => {\n const complete = defined.length === count;\n return Match.value(agg.name).pipe(\n Match.when('COUNT', () => Option.some(integerLiteral(defined.length))),\n Match.when('SUM', () => (complete ? Option.some(sum(defined)) : Option.none())),\n Match.when('AVG', (): Option.Option<Term.GroundTerm> => {\n if (!complete) return Option.none();\n if (Arr.isReadonlyArrayEmpty(defined)) return Option.some(integerLiteral(0));\n return Option.some(V.arithmetic('/', sum(defined), integerLiteral(defined.length)));\n }),\n Match.when(Match.is('MIN', 'MAX'), (name) =>\n Option.map(Arr.head(defined), (first) =>\n defined.slice(1).reduce((best, v) => {\n const c = V.compareTerms(v, best);\n return (name === 'MIN' ? c < 0 : c > 0) ? v : best;\n }, first),\n ),\n ),\n Match.when('SAMPLE', () => Arr.head(defined)),\n Match.when('GROUP_CONCAT', (): Option.Option<Term.GroundTerm> => {\n if (!complete) return Option.none();\n const lits = defined.map((v) => (Term.isLiteral(v) ? v : V.fail('Not a literal')));\n const sep = agg.separator ?? ' ';\n // GROUP_CONCAT always produces an xsd:string.\n return Option.some(V.simple(lits.map((l) => l.value).join(sep)));\n }),\n Match.exhaustive,\n );\n};\n\n/** A group of solutions: its key values (`None` where a key is unbound) and members. */\ninterface Group {\n readonly keys: ReadonlyArray<Option.Option<Term.GroundTerm>>;\n readonly members: Array<Bindings>;\n}\n\n/** Evaluates an expression per solution; `None` on errors. */\nconst evaluateOption = (\n expression: Algebra.Expression,\n b: Bindings,\n ctx: Expression.Context,\n): Option.Option<Term.GroundTerm> =>\n Option.fromUndefinedOr(Expression.evaluateOrUndefined(expression, b, ctx));\n\nconst evalGroup = (op: Algebra.Group, env: Env): S =>\n Stream.fromIterableEffect(\n Effect.map(materialize(op.input, env), (solutions) => {\n const groups = StringMap.empty<Group>();\n solutions.forEach((s) => {\n const keys = op.keys.map((k) => evaluateOption(k.expression, s, env.expr));\n const id = keys.map((k) => (Option.isNone(k) ? '' : k.value.key)).join('\\u0001');\n const g = groups.get(id);\n if (g === undefined) groups.set(id, { keys, members: [s] });\n else g.members.push(s);\n });\n if (groups.size === 0 && Arr.isReadonlyArrayEmpty(op.keys))\n groups.set('', { keys: [], members: [] });\n return Array.from(groups.values(), (g) => {\n const map = StringMap.empty<Term.GroundTerm>();\n Arr.zip(op.keys, g.keys).forEach(([k, v]) => {\n if (Option.isSome(v)) map.set(k.variable.value, v.value);\n });\n op.aggregates.forEach((a) => {\n const v = aggregateValue(a.aggregate, g.members, env);\n if (Option.isSome(v)) map.set(a.variable.value, v.value);\n });\n return new B.Bindings(map);\n });\n }),\n );\n\n/** A solution with its `ORDER BY` keys (`None` where a key is unbound or an error). */\ninterface Keyed {\n readonly s: Bindings;\n readonly keys: ReadonlyArray<Option.Option<Term.GroundTerm>>;\n}\n\nconst unbound = Option.none<Term.GroundTerm>();\n\nconst evalOrderBy = (op: Algebra.OrderBy, env: Env): S =>\n Stream.fromIterableEffect(\n Effect.map(materialize(op.input, env), (solutions) => {\n const keyed = solutions.map((s): Keyed => ({\n s,\n keys: op.conditions.map((c) => evaluateOption(c.expression, s, env.expr)),\n }));\n const byConditions = Order.make<Keyed>((a, b) => {\n // The first condition the solutions differ on decides.\n let order: -1 | 0 | 1 = 0;\n op.conditions.some((condition, i) => {\n const c = V.orderCompare(a.keys[i] ?? unbound, b.keys[i] ?? unbound);\n if (c === 0) return false;\n order = c < 0 === condition.descending ? 1 : -1;\n return true;\n });\n return order;\n });\n return Arr.sort(keyed, byConditions).map((k) => k.s);\n }),\n );\n\nconst evalExtend = (op: Algebra.Extend, env: Env): S => {\n const name = op.variable.value;\n const ctxFor = prepare(op.expression, env);\n const input = isUnit(op.input) ? Stream.succeed(env.context) : evaluate(op.input, env);\n return Stream.mapEffect(input, (b) =>\n Effect.map(ctxFor(b), (ctx) => {\n if (b.map.has(name)) return b;\n const v = Expression.evaluateOrUndefined(op.expression, b, ctx);\n return v === undefined ? b : B.set(b, name, v);\n }),\n );\n};\n\nconst runService = (op: Algebra.Service, env: Env, endpoint: Term.NamedNode): S => {\n const handler = env.service;\n const stream: S = Option.isNone(handler)\n ? Stream.fail(new EvaluationError({ message: `SERVICE <${endpoint.value}> is not supported` }))\n : handler.value(endpoint, op, env);\n return op.silent ? Stream.catchCause(stream, () => Stream.succeed(B.empty)) : stream;\n};\n\nconst evalService = (op: Algebra.Service, env: Env): S => {\n const name = op.name;\n if (Term.isVariable(name)) {\n return Stream.fail(\n new EvaluationError({\n message: `SERVICE ?${name.value} needs the endpoint variable to be bound first`,\n }),\n );\n }\n return runService(op, env, name);\n};\n\n/**\n * `SERVICE ?endpoint { … }` with `?endpoint` bound by an earlier pattern:\n * the remote pattern is evaluated at the bound endpoint and joined with the\n * solution.\n */\nconst mergeWith = (initial: Bindings, solutions: S): S =>\n Stream.flatMap(solutions, (b) => {\n const m = B.merge(initial, b);\n return m === undefined ? Stream.empty : Stream.succeed(m);\n });\n\nconst evalBoundService = (op: Algebra.Service, env: Env, initial: Bindings): S => {\n const name = op.name;\n if (Term.isNamedNode(name)) {\n return mergeWith(initial, runService(op, env, name));\n }\n const endpoint = initial.map.get(name.value);\n if (!Term.isNamedNode(endpoint)) {\n return op.silent\n ? Stream.succeed(initial)\n : Stream.fail(\n new EvaluationError({\n message: `SERVICE ?${name.value} is not bound to an IRI`,\n }),\n );\n }\n return mergeWith(initial, runService(op, env, endpoint));\n};\n\n// -----------------------------------------------------------------------------\n// Dispatcher\n// -----------------------------------------------------------------------------\n\n/** Evaluates an algebra operator, offering it to the store's query capability first. */\nexport const evaluate = (op: Algebra.Operation, env: Env): S => {\n const capability = env.store.query;\n if (capability !== undefined && env.context.size === 0) {\n const native = capability.evaluate(op, {\n dataset: env.dataset,\n activeGraph: env.graph,\n evaluate: (o, g) => evaluate(o, g === undefined ? env : { ...env, graph: g }),\n });\n if (Option.isSome(native)) return native.value;\n }\n return evaluateGeneric(op, env);\n};\n\nconst evalDistinct = (op: Algebra.Distinct | Algebra.Reduced, env: Env): S =>\n Stream.suspend(() => {\n const seen = StringMap.emptySet();\n return Stream.filter(evaluate(op.input, env), (b) => {\n const k = b.key;\n if (seen.has(k)) return false;\n seen.set(k, true);\n return true;\n });\n });\n\nconst evalSlice = (op: Algebra.Slice, env: Env): S => {\n const input = evaluate(op.input, env);\n const dropped = op.offset > 0 ? Stream.drop(input, op.offset) : input;\n return op.limit !== undefined ? Stream.take(dropped, op.limit) : dropped;\n};\n\n/**\n * Evaluates an operator by its kind. Plain branches rather than `Match`:\n * `EXISTS` patterns and bind joins run it once per solution.\n */\nconst evaluateGeneric = (op: Algebra.Operation, env: Env): S => {\n if (Predicate.isTagged(op, 'Bgp')) {\n return evalBgp(op.patterns, env, Arr.isReadonlyArrayEmpty(op.patterns) ? env.context : B.empty);\n }\n if (Predicate.isTagged(op, 'Join')) return evalJoin(op, env);\n if (Predicate.isTagged(op, 'Filter')) {\n return filterStream(evaluate(op.input, env), op.expression, env);\n }\n if (Predicate.isTagged(op, 'Project')) {\n const names = op.variables.map((v) => v.value);\n return Stream.map(evaluate(op.input, env), (b) => B.project(b, names));\n }\n if (Predicate.isTagged(op, 'LeftJoin')) return evalLeftJoin(op, env);\n if (Predicate.isTagged(op, 'Union')) {\n return Stream.concat(evaluate(op.left, env), evaluate(op.right, env));\n }\n if (Predicate.isTagged(op, 'Extend')) return evalExtend(op, env);\n if (Predicate.isTagged(op, 'Path')) return evalPath(op, env, B.empty);\n if (Predicate.isTagged(op, 'Graph')) return evalGraph(op, env);\n if (Predicate.isTagged(op, 'Minus')) return evalMinus(op, env);\n if (Predicate.isTagged(op, 'Group')) return evalGroup(op, env);\n if (Predicate.isTagged(op, 'OrderBy')) return evalOrderBy(op, env);\n if (Predicate.isTagged(op, 'Distinct') || Predicate.isTagged(op, 'Reduced')) {\n return evalDistinct(op, env);\n }\n if (Predicate.isTagged(op, 'Slice')) return evalSlice(op, env);\n if (Predicate.isTagged(op, 'Values')) return Stream.fromIterable(op.bindings);\n return evalService(op, env);\n};\n","/**\n * The SPARQL engine service: parses, translates, optimises and evaluates\n * queries and updates against the `QuadStore` service.\n *\n * Query evaluation is streaming: `SELECT` results are a lazy `Stream` of\n * solutions, `CONSTRUCT`/`DESCRIBE` a lazy stream of triples, and `ASK`\n * stops at the first solution. Operators that need all solutions\n * (`ORDER BY`, `GROUP BY`, the right side of joins) materialise as needed.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Result from 'effect/Result';\nimport * as Stream from 'effect/Stream';\nimport * as Term from '../Term.ts';\nimport * as Algebra from './Algebra.ts';\nimport type * as Ast from './Ast.ts';\nimport * as B from './Bindings.ts';\nimport { EvaluationError, UpdateError } from './Errors.ts';\nimport * as Expression from './Expression.ts';\nimport type * as Functions from './Functions.ts';\nimport * as Evaluator from './internal/evaluator.ts';\nimport * as StringMap from './internal/stringMap.ts';\nimport * as Optimizer from './Optimizer.ts';\nimport * as Parser from './Parser.ts';\nimport type * as Results from './Results.ts';\nimport * as Store from './Store.ts';\nimport * as Translate from './Translate.ts';\nimport * as Predicate from 'effect/Predicate';\n\n/**\n * Any error produced by the engine.\n *\n * @since 0.1.0\n * @category errors\n */\nexport type SparqlError =\n | Parser.SparqlParseError\n | EvaluationError\n | UpdateError\n | Store.StoreError;\n\n/**\n * Evaluates `SERVICE` patterns (federation). Receives the endpoint, the\n * algebra node (whose `pattern` holds the original syntax) and must return\n * the solutions of the remote pattern.\n *\n * @since 0.1.0\n * @category models\n */\nexport type ServiceHandler = (\n endpoint: Term.NamedNode,\n service: Algebra.Service,\n) => Stream.Stream<B.Bindings, EvaluationError | Store.StoreError>;\n\n/**\n * Loads a remote document for `LOAD`.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Loader = (iri: Term.NamedNode) => Effect.Effect<Iterable<Term.Quad>, UpdateError>;\n\n/**\n * Engine configuration.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface EngineOptions {\n /**\n * When `true`, the default graph (absent `FROM`) is the union of all\n * graphs in the store; otherwise it is the store's default graph.\n */\n readonly unionDefaultGraph?: boolean | undefined;\n /** Base IRI for parsing and for `IRI()`. */\n readonly baseIri?: string | undefined;\n /** Extension functions. */\n readonly functions?: Functions.Registry | undefined;\n /** Federation support for `SERVICE`. */\n readonly service?: ServiceHandler | undefined;\n /** Document loader for `LOAD`. */\n readonly load?: Loader | undefined;\n /** Whether to run the algebra optimizer (default `true`). */\n readonly optimize?: boolean | undefined;\n /**\n * Record the text of string queries and updates on their spans\n * (`sparql.query.text`). Off by default: query text may contain user data.\n */\n readonly traceQueryText?: boolean | undefined;\n}\n\n/**\n * Per-request options.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface RequestOptions {\n /** Base IRI used when parsing a query string. */\n readonly baseIri?: string | undefined;\n /** Prefixes available without declaration when parsing. */\n readonly prefixes?: Readonly<Record<string, string>> | undefined;\n /**\n * Overrides the dataset (e.g. the `default-graph-uri` / `named-graph-uri`\n * protocol parameters). A `FROM` / `FROM NAMED` clause in the query takes\n * precedence.\n */\n readonly dataset?: Store.DatasetSpec | undefined;\n /**\n * Pre-bound variables (initial bindings). The solution is inserted into\n * every basic graph pattern, property path and `GRAPH ?var` pattern of the\n * query as described by `Algebra.prebind`, so the values are visible to\n * every `FILTER` and `BIND` of the query — the pre-binding semantics of\n * SHACL-SPARQL and of SPARQL `EXISTS`.\n */\n readonly bindings?: B.Bindings | undefined;\n}\n\n/**\n * The engine service.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface SparqlEngineShape {\n /** Evaluates a query of any form. */\n readonly query: (\n query: string | Ast.Query,\n options?: RequestOptions,\n ) => Effect.Effect<Results.QueryResult<SparqlError>, SparqlError>;\n /** Evaluates a `SELECT` query (fails for other forms). */\n readonly select: (\n query: string | Ast.Query,\n options?: RequestOptions,\n ) => Effect.Effect<Results.SelectResult<SparqlError>, SparqlError>;\n /** Evaluates an `ASK` query. */\n readonly ask: (\n query: string | Ast.Query,\n options?: RequestOptions,\n ) => Effect.Effect<boolean, SparqlError>;\n /** Evaluates a `CONSTRUCT` or `DESCRIBE` query. */\n readonly construct: (\n query: string | Ast.Query,\n options?: RequestOptions,\n ) => Effect.Effect<Stream.Stream<Term.Quad, SparqlError>, SparqlError>;\n /** Executes an update request atomically. */\n readonly update: (\n update: string | Ast.Update,\n options?: RequestOptions,\n ) => Effect.Effect<void, SparqlError>;\n /** Evaluates an algebra expression directly. */\n readonly evaluate: (\n op: Algebra.Operation,\n options?: RequestOptions,\n ) => Stream.Stream<B.Bindings, SparqlError>;\n}\n\n/**\n * The SPARQL engine service.\n *\n * @since 0.1.0\n * @category services\n */\nexport class SparqlEngine extends Context.Service<SparqlEngine, SparqlEngineShape>()(\n '@thomasfosterau/effect-rdf/sparql/SparqlEngine',\n) {}\n\n// -----------------------------------------------------------------------------\n// Implementation\n// -----------------------------------------------------------------------------\n\n/**\n * A template term instantiated for a solution; `None` where a variable is\n * unbound or a triple term would be ill-formed. Plain branches rather than\n * `Match`: it runs for every template term per solution.\n */\nconst groundTemplateTerm = (\n t: Ast.TermPattern,\n b: B.Bindings,\n bnodes: Map<string, Term.BlankNode>,\n): Option.Option<Term.Term> => {\n if (Term.isVariable(t)) return Option.fromUndefinedOr(b.map.get(t.value));\n if (Term.isBlankNode(t)) {\n const existing = bnodes.get(t.value);\n if (existing !== undefined) return Option.some(existing);\n const n = Term.blankNode();\n bnodes.set(t.value, n);\n return Option.some(n);\n }\n if (Term.isTriple(t)) {\n return Option.map(groundTriple(t.subject, t.predicate, t.object, b, bnodes), ([s, p, o]) =>\n Term.triple(s, p, o),\n );\n }\n return Option.some(t);\n};\n\n/** The instantiated subject, predicate and object, if they form a well-formed triple. */\nconst groundTriple = (\n subject: Ast.TermPattern,\n predicate: Ast.TermPattern,\n object: Ast.TermPattern,\n b: B.Bindings,\n bnodes: Map<string, Term.BlankNode>,\n): Option.Option<readonly [Term.Subject, Term.Predicate, Term.Object]> => {\n const s = groundTemplateTerm(subject, b, bnodes);\n const p = groundTemplateTerm(predicate, b, bnodes);\n const o = groundTemplateTerm(object, b, bnodes);\n if (Option.isNone(s) || Option.isNone(p) || Option.isNone(o)) return Option.none();\n const [sv, pv, ov] = [s.value, p.value, o.value];\n return Term.isSubject(sv) && Term.isNamedNode(pv) && Term.isObject(ov)\n ? Option.some([sv, pv, ov] as const)\n : Option.none();\n};\n\n/** The graph of a template quad for a solution: an IRI or the default graph. */\nconst groundGraph = (\n t: Ast.QuadPattern,\n b: B.Bindings,\n bnodes: Map<string, Term.BlankNode>,\n defaultGraph: Term.Graph,\n): Option.Option<Term.Graph> => {\n if (Term.isDefaultGraph(t.graph)) return Option.some(defaultGraph);\n const g = groundTemplateTerm(t.graph, b, bnodes);\n return Option.isSome(g) && (Term.isNamedNode(g.value) || Term.isDefaultGraph(g.value))\n ? Option.some(g.value)\n : Option.none();\n};\n\nconst instantiate = (\n template: ReadonlyArray<Ast.QuadPattern>,\n b: B.Bindings,\n defaultGraph: Term.Graph,\n): Array<Term.Quad> => {\n const bnodes = StringMap.empty<Term.BlankNode>();\n return Arr.filterMap(template, (t) => {\n const triple = groundTriple(t.subject, t.predicate, t.object, b, bnodes);\n const g = groundGraph(t, b, bnodes, defaultGraph);\n if (Option.isNone(triple) || Option.isNone(g)) return Result.failVoid;\n const [s, p, o] = triple.value;\n return Result.succeed(new Term.Quad(s, p, o, g.value));\n });\n};\n\n/** The options of a request that gave none. */\nconst noRequest: RequestOptions = {};\n\nconst prebind = (op: Algebra.Operation, request: RequestOptions): Algebra.Operation =>\n request.bindings === undefined ? op : Algebra.prebind(op, request.bindings);\n\nconst dedupeQuads = <E>(quads: Stream.Stream<Term.Quad, E>): Stream.Stream<Term.Quad, E> =>\n Stream.suspend(() => {\n const seen = StringMap.emptySet();\n return Stream.filter(quads, (q) => {\n const k = q.key;\n if (seen.has(k)) return false;\n seen.set(k, true);\n return true;\n });\n });\n\nconst describeResources = (\n terms: ReadonlyArray<Term.NamedNode | Term.Variable>,\n solutions: Stream.Stream<B.Bindings, SparqlError>,\n env: Evaluator.Env,\n): Stream.Stream<Term.Quad, SparqlError> => {\n const constants = terms.filter(Term.isNamedNode);\n const vars = terms.filter(Term.isVariable);\n const resources: Stream.Stream<Term.GroundTerm, SparqlError> = Stream.concat(\n Stream.fromIterable(constants),\n Arr.isReadonlyArrayEmpty(vars)\n ? Stream.empty\n : Stream.flatMap(solutions, (b) =>\n Stream.fromIterable(\n vars.flatMap((v) => {\n const t = b.map.get(v.value);\n return t === undefined ? [] : [t];\n }),\n ),\n ),\n );\n // Concise bounded description: outgoing triples, recursively through\n // blank node objects.\n const cbd = (\n resource: Term.GroundTerm,\n seen: Map<string, true>,\n ): Stream.Stream<Term.Quad, SparqlError> =>\n Stream.flatMap(Evaluator.matchQuads(env, { subject: resource }), (q) => {\n const quad = new Term.Quad(q.subject, q.predicate, q.object, Term.defaultGraph);\n const object = q.object;\n if (Term.isBlankNode(object) && !seen.has(object.key)) {\n seen.set(object.key, true);\n return Stream.concat(Stream.succeed(quad), cbd(object, seen));\n }\n return Stream.succeed(quad);\n });\n return dedupeQuads(\n Stream.suspend(() => {\n const described = StringMap.emptySet();\n return Stream.flatMap(resources, (r) => {\n if (described.has(r.key)) return Stream.empty;\n described.set(r.key, true);\n return cbd(r, StringMap.setOf([r.key]));\n });\n }),\n );\n};\n\nconst updateFailed = (message: string) => Effect.fail(new UpdateError({ message }));\n\nconst freshBlankNodes = (quads: ReadonlyArray<Term.Quad>): Array<Term.Quad> => {\n const map = StringMap.empty<Term.BlankNode>();\n return quads.map((q) =>\n Term.mapTerms(q, (t) => {\n if (!Term.isBlankNode(t)) return t;\n const existing = map.get(t.value);\n if (existing !== undefined) return existing;\n const n = Term.blankNode();\n map.set(t.value, n);\n return n;\n }),\n );\n};\n\nconst quadPatternsToAlgebra = (patterns: ReadonlyArray<Ast.QuadPattern>): Algebra.Operation => {\n const byGraph = StringMap.empty<{\n graph: Ast.QuadPattern['graph'];\n triples: Array<Ast.TriplePattern>;\n }>();\n patterns.forEach((p) => {\n const triple: Ast.TriplePattern = {\n _tag: 'TriplePattern',\n subject: p.subject,\n predicate: p.predicate,\n object: p.object,\n };\n const entry = byGraph.get(p.graph.key);\n if (entry === undefined) byGraph.set(p.graph.key, { graph: p.graph, triples: [triple] });\n else entry.triples.push(triple);\n });\n const parts = Array.from(byGraph.values()).map(({ graph, triples }): Algebra.Operation =>\n Term.isDefaultGraph(graph)\n ? Algebra.bgp(triples)\n : { _tag: 'Graph', name: graph, input: Algebra.bgp(triples) },\n );\n return Arr.isReadonlyArrayEmpty(parts)\n ? Algebra.unit\n : parts.reduce((a, b) => Algebra.join(a, b));\n};\n\n/**\n * Creates the engine over a quad store.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (\n store: Store.QuadStoreShape,\n options: EngineOptions = {},\n): SparqlEngineShape => {\n const defaultDataset: Store.DatasetSpec = {\n defaultGraph: options.unionDefaultGraph === true ? 'union' : 'default',\n namedGraphs: 'all',\n };\n\n const datasetFor = (\n clause: Option.Option<Ast.DatasetClause>,\n request: RequestOptions,\n ): Store.DatasetSpec =>\n Option.isSome(clause)\n ? { defaultGraph: clause.value.default, namedGraphs: clause.value.named }\n : (request.dataset ?? defaultDataset);\n\n const service = Option.map(\n Option.fromUndefinedOr(options.service),\n (handler): Evaluator.ServiceHandler =>\n (endpoint, op) =>\n handler(endpoint, op),\n );\n\n const makeEnv = (dataset: Store.DatasetSpec, baseIri: Option.Option<string>): Evaluator.Env => ({\n store,\n dataset,\n graph: { _tag: 'DefaultGraph' },\n context: B.empty,\n expr: Expression.makeContext({\n baseIri: Option.getOrUndefined(baseIri),\n functions: options.functions,\n }),\n service,\n });\n\n /** The base IRI of a request: its prologue's, the request's or the engine's. */\n const baseIriFor = (request: RequestOptions, prologue?: Ast.Prologue): Option.Option<string> =>\n Option.fromUndefinedOr(prologue?.base ?? request.baseIri ?? options.baseIri);\n\n const parseQuery = (query: string | Ast.Query, request: RequestOptions) =>\n Predicate.isString(query)\n ? Parser.parseQuery(query, {\n baseIri: request.baseIri ?? options.baseIri,\n prefixes: request.prefixes,\n })\n : Effect.succeed(query);\n\n const optimize = (op: Algebra.Operation, env: Evaluator.Env) =>\n options.optimize === false\n ? Effect.succeed(op)\n : Optimizer.optimize(op, { store, dataset: env.dataset, graph: env.graph });\n\n const run = (query: Ast.Query, request: RequestOptions) =>\n Effect.gen(function* () {\n const algebra = Translate.translateQuery(query);\n const env = makeEnv(\n datasetFor(Option.fromUndefinedOr(algebra.dataset), request),\n baseIriFor(request, query.prologue),\n );\n const input = yield* optimize(prebind(algebra.input, request), env);\n return { algebra, env, input };\n });\n\n // Span attributes for a request: its text only when `traceQueryText` opts in.\n const textAttributes = (text: string | Ast.Query | Ast.Update): Record<string, string> =>\n options.traceQueryText === true && Predicate.isString(text)\n ? { 'sparql.query.text': text }\n : {};\n\n const query: SparqlEngineShape['query'] = (q, request = noRequest) =>\n Effect.gen(function* () {\n const ast = yield* parseQuery(q, request);\n const { algebra, env, input } = yield* run(ast, request);\n yield* Effect.annotateCurrentSpan('sparql.query.form', algebra._tag);\n const solutions = Evaluator.evaluate(input, env);\n return yield* Match.value(algebra).pipe(\n Match.tag('Select', (s) =>\n Effect.succeed({\n _tag: 'Select',\n variables: s.variables,\n bindings: solutions,\n } as const),\n ),\n Match.tag('Ask', () =>\n Effect.map(\n Stream.runHead(solutions),\n (head) =>\n ({\n _tag: 'Ask',\n value: Option.isSome(head),\n }) as const,\n ),\n ),\n Match.tag('Construct', (c) => {\n const template = c.template.map(\n (t) =>\n ({\n _tag: 'QuadPattern',\n subject: t.subject,\n predicate: t.predicate,\n object: t.object,\n graph: Term.defaultGraph,\n }) satisfies Ast.QuadPattern,\n );\n return Effect.succeed({\n _tag: 'Graph',\n quads: dedupeQuads(\n Stream.flatMap(solutions, (b) =>\n Stream.fromIterable(instantiate(template, b, Term.defaultGraph)),\n ),\n ),\n } as const);\n }),\n Match.tag('Describe', (d) =>\n Effect.succeed({\n _tag: 'Graph',\n quads: describeResources(d.terms, solutions, env),\n } as const),\n ),\n Match.exhaustive,\n );\n }).pipe(Effect.withSpan('SparqlEngine.query', { attributes: textAttributes(q) }));\n\n const select: SparqlEngineShape['select'] = (q, request) =>\n Effect.flatMap(query(q, request), (r) =>\n Predicate.isTagged(r, 'Select')\n ? Effect.succeed(r)\n : Effect.fail(new EvaluationError({ message: 'Not a SELECT query' })),\n );\n\n const ask: SparqlEngineShape['ask'] = (q, request) =>\n Effect.flatMap(query(q, request), (r) =>\n Predicate.isTagged(r, 'Ask')\n ? Effect.succeed(r.value)\n : Effect.fail(new EvaluationError({ message: 'Not an ASK query' })),\n );\n\n const construct: SparqlEngineShape['construct'] = (q, request) =>\n Effect.flatMap(query(q, request), (r) =>\n Predicate.isTagged(r, 'Graph')\n ? Effect.succeed(r.quads)\n : Effect.fail(new EvaluationError({ message: 'Not a CONSTRUCT or DESCRIBE query' })),\n );\n\n // --- updates ---------------------------------------------------------------\n\n const graphExists = (g: Ast.GraphOrDefault) =>\n Term.isDefaultGraph(g) ? Effect.succeed(true) : store.hasGraph(g);\n\n const graphQuads = (g: Term.Graph) => Stream.runCollect(store.match({ graph: g }));\n\n const clearTarget = (target: Ast.GraphTarget, silent: boolean, drop: boolean) =>\n Effect.gen(function* () {\n return yield* Match.value(target).pipe(\n Match.tag('Default', (): Effect.Effect<void, SparqlError> =>\n store.clear(Term.defaultGraph),\n ),\n Match.tag('NamedNode', (graph) =>\n Effect.flatMap(store.hasGraph(graph), (exists): Effect.Effect<void, SparqlError> => {\n if (!exists)\n return silent ? Effect.void : updateFailed(`Graph <${graph.value}> does not exist`);\n return drop ? store.dropGraph(graph) : store.clear(graph);\n }),\n ),\n Match.tag('Named', 'All', (which) =>\n Effect.gen(function* () {\n const graphs = yield* Stream.runCollect(store.graphs);\n yield* Effect.forEach(graphs, (g) => (drop ? store.dropGraph(g) : store.clear(g)), {\n concurrency: 1,\n discard: true,\n });\n if (Predicate.isTagged(which, 'All')) yield* store.clear(Term.defaultGraph);\n }),\n ),\n Match.exhaustive,\n );\n });\n\n const transfer = (\n op: Ast.TransferOperation,\n ): Effect.Effect<void, UpdateError | Store.StoreError> =>\n op.source.key === op.destination.key\n ? Effect.void\n : Effect.flatMap(\n graphExists(op.source),\n (exists): Effect.Effect<void, UpdateError | Store.StoreError> =>\n exists\n ? copyGraph(op)\n : op.silent\n ? Effect.void\n : updateFailed(`Graph <${op.source.value}> does not exist`),\n );\n\n const copyGraph = (op: Ast.TransferOperation) =>\n Effect.gen(function* () {\n const quads = yield* graphQuads(op.source);\n const { source, destination } = op;\n if (!Predicate.isTagged(op, 'Add')) {\n if (Term.isDefaultGraph(destination)) yield* store.clear(Term.defaultGraph);\n else yield* store.dropGraph(destination);\n }\n if (Term.isNamedNode(destination)) yield* store.createGraph(destination);\n yield* store.insert(\n quads.map((q) => new Term.Quad(q.subject, q.predicate, q.object, destination)),\n );\n if (Predicate.isTagged(op, 'Move')) {\n if (Term.isDefaultGraph(source)) yield* store.clear(Term.defaultGraph);\n else yield* store.dropGraph(source);\n }\n });\n\n const modify = (\n op: Ast.ModifyOperation,\n where: Algebra.Operation,\n baseIri: Option.Option<string>,\n request: RequestOptions,\n ) =>\n Effect.gen(function* () {\n const dataset: Store.DatasetSpec =\n op.using !== undefined\n ? { defaultGraph: op.using.default, namedGraphs: op.using.named }\n : op.with !== undefined\n ? { defaultGraph: [op.with], namedGraphs: 'all' }\n : (request.dataset ?? defaultDataset);\n const env = makeEnv(dataset, baseIri);\n const input = yield* optimize(prebind(where, request), env);\n const solutions = yield* Stream.runCollect(Evaluator.evaluate(input, env));\n const target: Term.Graph = op.with ?? Term.defaultGraph;\n const deletes = solutions.flatMap((b) => instantiate(op.delete, b, target));\n const inserts = solutions.flatMap((b) => instantiate(op.insert, b, target));\n yield* store.delete(deletes);\n yield* store.insert(inserts);\n });\n\n const executeOperation = (\n op: Ast.UpdateOperation,\n baseIri: Option.Option<string>,\n request: RequestOptions,\n ): Effect.Effect<void, SparqlError> => {\n return Match.value(op).pipe(\n Match.tag('InsertData', (o): Effect.Effect<void, SparqlError> =>\n store.insert(freshBlankNodes(o.quads)),\n ),\n Match.tag('DeleteData', (o) => store.delete(o.quads)),\n Match.tag('DeleteWhere', (o) =>\n modify(\n {\n _tag: 'Modify',\n delete: o.patterns,\n insert: [],\n where: { _tag: 'Group', patterns: [] },\n },\n quadPatternsToAlgebra(o.patterns),\n baseIri,\n request,\n ),\n ),\n Match.tag('Modify', (o) => modify(o, Translate.translatePattern(o.where), baseIri, request)),\n Match.tag('Load', (o) => {\n const loader = options.load;\n if (loader === undefined) {\n return o.silent\n ? Effect.void\n : updateFailed('LOAD is not supported (no loader configured)');\n }\n const destination: Term.Graph = o.destination ?? Term.defaultGraph;\n const load = Effect.flatMap(loader(o.source), (quads) =>\n store.insert(\n Array.from(quads, (q) => new Term.Quad(q.subject, q.predicate, q.object, destination)),\n ),\n );\n return o.silent ? Effect.ignore(load) : load;\n }),\n Match.tag('Clear', (o) => clearTarget(o.target, o.silent, false)),\n Match.tag('Drop', (o) => clearTarget(o.target, o.silent, true)),\n Match.tag('Create', (o) =>\n Effect.flatMap(store.hasGraph(o.graph), (exists): Effect.Effect<void, SparqlError> =>\n exists\n ? o.silent\n ? Effect.void\n : updateFailed(`Graph <${o.graph.value}> already exists`)\n : store.createGraph(o.graph),\n ),\n ),\n Match.tag('Add', 'Move', 'Copy', (o) => transfer(o)),\n Match.exhaustive,\n );\n };\n\n const update: SparqlEngineShape['update'] = (u, request = noRequest) =>\n Effect.gen(function* () {\n const ast = Predicate.isString(u)\n ? yield* Parser.parseUpdate(u, {\n baseIri: request.baseIri ?? options.baseIri,\n prefixes: request.prefixes,\n })\n : u;\n const baseIri = baseIriFor(request, ast.prologue);\n yield* Effect.annotateCurrentSpan('sparql.update.operations', ast.operations.length);\n yield* store.transaction(\n Effect.forEach(ast.operations, (op) => executeOperation(op, baseIri, request), {\n concurrency: 1,\n discard: true,\n }),\n );\n }).pipe(Effect.withSpan('SparqlEngine.update', { attributes: textAttributes(u) }));\n\n const evaluate: SparqlEngineShape['evaluate'] = (op, request = noRequest) =>\n Evaluator.evaluate(\n prebind(op, request),\n makeEnv(request.dataset ?? defaultDataset, baseIriFor(request)),\n );\n\n return { query, select, ask, construct, update, evaluate };\n};\n\n/**\n * A layer providing the engine over the `QuadStore` service.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layer = (options?: EngineOptions): Layer.Layer<SparqlEngine, never, Store.QuadStore> =>\n Layer.effect(\n SparqlEngine,\n Effect.map(Effect.service(Store.QuadStore), (store) => make(store, options)),\n );\n\n/**\n * A layer providing the engine together with an in-memory store.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layerMemory = (options?: EngineOptions): Layer.Layer<SparqlEngine | Store.QuadStore> =>\n layer(options).pipe(Layer.provideMerge(Store.layerMemory()));\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ // src/sparql/Errors.ts
4
+ /**
5
+ * Errors raised while evaluating queries and updates.
6
+ *
7
+ * @since 0.1.0
8
+ */
9
+ var Errors_exports = /* @__PURE__ */ __exportAll({
10
+ EvaluationError: () => EvaluationError,
11
+ UpdateError: () => UpdateError
12
+ });
13
+ /**
14
+ * A failure while evaluating a query (other than expression errors, which
15
+ * SPARQL handles internally), e.g. a failing `SERVICE` call.
16
+ *
17
+ * @since 0.1.0
18
+ * @category errors
19
+ */
20
+ var EvaluationError = class extends Schema.TaggedError()("EvaluationError", {
21
+ message: Schema.String,
22
+ cause: Schema.optional(Schema.Defect())
23
+ }) {};
24
+ /**
25
+ * A failure of an update operation, e.g. `CREATE GRAPH` on an existing graph
26
+ * or `DROP GRAPH` on a missing one (without `SILENT`).
27
+ *
28
+ * @since 0.1.0
29
+ * @category errors
30
+ */
31
+ var UpdateError = class extends Schema.TaggedError()("UpdateError", {
32
+ message: Schema.String,
33
+ cause: Schema.optional(Schema.Defect())
34
+ }) {};
35
+ export { EvaluationError as n, UpdateError as r, Errors_exports as t };
36
+
37
+ //# sourceMappingURL=Errors-CMdV1RhU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors-CMdV1RhU.mjs","names":[],"sources":["../src/sparql/Errors.ts"],"sourcesContent":["/**\n * Errors raised while evaluating queries and updates.\n *\n * @since 0.1.0\n */\nimport * as Schema from 'effect/Schema';\n\n/**\n * A failure while evaluating a query (other than expression errors, which\n * SPARQL handles internally), e.g. a failing `SERVICE` call.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class EvaluationError extends Schema.TaggedError<EvaluationError>()('EvaluationError', {\n message: Schema.String,\n cause: Schema.optional(Schema.Defect()),\n}) {}\n\n/**\n * A failure of an update operation, e.g. `CREATE GRAPH` on an existing graph\n * or `DROP GRAPH` on a missing one (without `SILENT`).\n *\n * @since 0.1.0\n * @category errors\n */\nexport class UpdateError extends Schema.TaggedError<UpdateError>()('UpdateError', {\n message: Schema.String,\n cause: Schema.optional(Schema.Defect()),\n}) {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,IAAa,kBAAb,cAAqC,OAAO,YAA6B,CAAC,CAAC,mBAAmB;CAC5F,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,OAAO,CAAC;AACxC,CAAC,CAAC,CAAC,CAAC;;;;;;;;AASJ,IAAa,cAAb,cAAiC,OAAO,YAAyB,CAAC,CAAC,eAAe;CAChF,SAAS,OAAO;CAChB,OAAO,OAAO,SAAS,OAAO,OAAO,CAAC;AACxC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare namespace Errors_d_exports {
3
+ export { EvaluationError, UpdateError };
4
+ }
5
+ declare const EvaluationError_base: Schema.Class<EvaluationError, Schema.TaggedStruct<"EvaluationError", {
6
+ readonly message: Schema.String;
7
+ readonly cause: Schema.optional<Schema.Defect>;
8
+ }>, import("effect/Cause").YieldableError>;
9
+ /**
10
+ * A failure while evaluating a query (other than expression errors, which
11
+ * SPARQL handles internally), e.g. a failing `SERVICE` call.
12
+ *
13
+ * @since 0.1.0
14
+ * @category errors
15
+ */
16
+ declare class EvaluationError extends EvaluationError_base {}
17
+ declare const UpdateError_base: Schema.Class<UpdateError, Schema.TaggedStruct<"UpdateError", {
18
+ readonly message: Schema.String;
19
+ readonly cause: Schema.optional<Schema.Defect>;
20
+ }>, import("effect/Cause").YieldableError>;
21
+ /**
22
+ * A failure of an update operation, e.g. `CREATE GRAPH` on an existing graph
23
+ * or `DROP GRAPH` on a missing one (without `SILENT`).
24
+ *
25
+ * @since 0.1.0
26
+ * @category errors
27
+ */
28
+ declare class UpdateError extends UpdateError_base {}
29
+ export { EvaluationError as n, UpdateError as r, Errors_d_exports as t };
30
+ //# sourceMappingURL=Errors-u2bDjUeM.d.mts.map
@@ -0,0 +1,50 @@
1
+ import { n as SparqlConstraintEvaluator } from "./Sparql-DecpWTPh.mjs";
2
+ import "./index-Ct8xFmRs.mjs";
3
+ import { t as EngineOptions } from "./Engine-CYPB3g4h.mjs";
4
+ import "./index-D4QFwOjm.mjs";
5
+ import * as Layer from "effect/Layer";
6
+ declare namespace Evaluator_d_exports {
7
+ export { EvaluatorOptions, defaultShapesGraphIri, layer, make };
8
+ }
9
+ /**
10
+ * Evaluator configuration.
11
+ *
12
+ * @since 0.1.0
13
+ * @category models
14
+ */
15
+ interface EvaluatorOptions {
16
+ /**
17
+ * The IRI under which the shapes graph is visible as a named graph
18
+ * (`$shapesGraph`). Defaults to `urn:x-shacl:shapesGraph`.
19
+ */
20
+ readonly shapesGraphIri?: string | undefined;
21
+ /** Options of the SPARQL engine (e.g. extension `functions`). */
22
+ readonly engine?: Omit<EngineOptions, 'unionDefaultGraph'> | undefined;
23
+ }
24
+ /**
25
+ * The default IRI of the shapes graph as seen from SPARQL queries.
26
+ *
27
+ * @since 0.1.0
28
+ * @category constants
29
+ */
30
+ declare const defaultShapesGraphIri = "urn:x-shacl:shapesGraph";
31
+ /**
32
+ * Creates the evaluator service.
33
+ *
34
+ * Per data graph (and shapes graph) the evaluator builds an in-memory
35
+ * SPARQL store once and caches compiled queries, so validating many focus
36
+ * nodes does not re-parse queries.
37
+ *
38
+ * @since 0.1.0
39
+ * @category constructors
40
+ */
41
+ declare const make: (options?: EvaluatorOptions) => SparqlConstraintEvaluator["Service"];
42
+ /**
43
+ * A layer providing the SHACL-SPARQL evaluator.
44
+ *
45
+ * @since 0.1.0
46
+ * @category layers
47
+ */
48
+ declare const layer: (options?: EvaluatorOptions) => Layer.Layer<SparqlConstraintEvaluator>;
49
+ export { make as a, layer as i, Evaluator_d_exports as n, defaultShapesGraphIri as r, EvaluatorOptions as t };
50
+ //# sourceMappingURL=Evaluator-DEsU4d1o.d.mts.map
@@ -0,0 +1,281 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { B as isNamedNode, N as isBlankNode, O as defaultGraph, U as isResource, Y as literal, Z as namedNode, d as Quad, z as isLiteral } from "./Term-CFLG1qu4.mjs";
3
+ import { A as objectsOf, m as fromIterable } from "./Dataset-BlmlcI7J.mjs";
4
+ import { t as Vocab_exports } from "./Vocab-DceKywpq.mjs";
5
+ import { i as localName } from "./Message-CK_DGQuu.mjs";
6
+ import { n as Vocabulary_exports } from "./Vocabulary-CnQl-_Z4.mjs";
7
+ import { f as toSparql, l as predicate } from "./Path-B20Yp8KE.mjs";
8
+ import { n as SparqlEvaluationError, t as SparqlConstraintEvaluator } from "./Sparql-BiYFMSpl.mjs";
9
+ import { o as fromEntries } from "./Bindings-Ck3m7JRC.mjs";
10
+ import { a as make$1 } from "./Engine-DF8PN7g-.mjs";
11
+ import { a as makeMemory } from "./Store-DH3Ow1GO.mjs";
12
+ import { r as compile } from "./Query-D9A6LOpP.mjs";
13
+ import * as Arr from "effect/Array";
14
+ import { pipe } from "effect/Function";
15
+ import * as HashSet from "effect/HashSet";
16
+ import * as MutableHashMap from "effect/MutableHashMap";
17
+ import * as Option from "effect/Option";
18
+ import * as Predicate from "effect/Predicate";
19
+ import * as Effect from "effect/Effect";
20
+ import * as Layer from "effect/Layer";
21
+ import * as Stream from "effect/Stream";
22
+ import * as Result from "effect/Result";
23
+ // src/sparql/shacl/Evaluator.ts
24
+ /**
25
+ * The SHACL-SPARQL evaluator: an implementation of the
26
+ * `Sparql.SparqlConstraintEvaluator` service of `@thomasfosterau/effect-rdf/shacl`
27
+ * on the `@thomasfosterau/effect-rdf/sparql` engine. With it in the context,
28
+ * `Validator.validate` supports
29
+ *
30
+ * - SPARQL-based constraints (`sh:sparql`, §5),
31
+ * - SPARQL-based constraint components with `SELECT` validators
32
+ * (`sh:nodeValidator`, `sh:propertyValidator`) and `ASK` validators
33
+ * (`sh:validator`), with mandatory and optional parameters (§6),
34
+ * - SPARQL-based targets (`sh:SPARQLTarget`) and target types
35
+ * (`sh:SPARQLTargetType`) of SHACL Advanced Features,
36
+ *
37
+ * with the pre-bound variables `$this`, `$value`, `$currentShape`,
38
+ * `$shapesGraph` and the parameters, `$PATH` substitution, prefix
39
+ * declarations (`sh:prefixes` / `sh:declare`) and the `?path`, `?value`,
40
+ * `?message` and `?failure` result variables.
41
+ *
42
+ * ```ts
43
+ * import { Effect } from "effect"
44
+ * import { Validator } from "@thomasfosterau/effect-rdf/shacl"
45
+ * import { Evaluator } from "@thomasfosterau/effect-rdf/sparql/shacl"
46
+ *
47
+ * const report = Validator.validate(dataGraph, shapesGraph).pipe(
48
+ * Effect.provide(Evaluator.layer()),
49
+ * )
50
+ * ```
51
+ *
52
+ * The data graph is queried as the default graph; the shapes graph is
53
+ * available as the named graph `$shapesGraph` (`GRAPH $shapesGraph { … }`).
54
+ *
55
+ * @since 0.1.0
56
+ */
57
+ var Evaluator_exports = /* @__PURE__ */ __exportAll({
58
+ defaultShapesGraphIri: () => defaultShapesGraphIri,
59
+ layer: () => layer,
60
+ make: () => make
61
+ });
62
+ const { sh } = Vocabulary_exports;
63
+ const { rdf, xsd } = Vocab_exports;
64
+ /**
65
+ * The default IRI of the shapes graph as seen from SPARQL queries.
66
+ *
67
+ * @since 0.1.0
68
+ * @category constants
69
+ */
70
+ const defaultShapesGraphIri = "urn:x-shacl:shapesGraph";
71
+ /** The variables pre-bound for every constraint query. */
72
+ const constraintVariables = [
73
+ "this",
74
+ "shapesGraph",
75
+ "currentShape"
76
+ ];
77
+ /** Parameter names that would clash with SHACL-SPARQL variables. */
78
+ const reservedNames = HashSet.make("this", "shapesGraph", "currentShape", "path", "PATH", "value");
79
+ const varName = /^[\p{L}\p{N}_][\p{L}\p{N}_\p{M}]*$/u;
80
+ const isNode = isResource;
81
+ const evaluationError = (message, cause) => new SparqlEvaluationError(cause === void 0 ? { message } : {
82
+ message,
83
+ cause
84
+ });
85
+ const TRUE = literal("true", xsd.boolean).key;
86
+ /** Reads one `sh:parameter` declaration, given the parameters read before it. */
87
+ const readParameter = (shapes, declaration, parameter, out) => {
88
+ const paths = isNode(parameter) ? objectsOf(shapes, parameter, sh.path) : [];
89
+ const path = paths.length === 1 ? Option.filter(Arr.head(paths), isNamedNode) : Option.none();
90
+ if (Option.isNone(path)) return Result.fail(evaluationError(`parameter ${parameter.key} of ${declaration.key} needs one IRI sh:path`));
91
+ const name = localName(path.value);
92
+ if (!varName.test(name) || HashSet.has(reservedNames, name)) return Result.fail(evaluationError(`parameter ${path.value.key} of ${declaration.key} has invalid name "${name}"`));
93
+ if (out.some((p) => p.name === name)) return Result.fail(evaluationError(`${declaration.key} declares two parameters named "${name}"`));
94
+ const optional = isNode(parameter) ? objectsOf(shapes, parameter, sh.optional).some((o) => o.key === TRUE) : false;
95
+ return Result.succeed(Arr.append(out, {
96
+ path: path.value,
97
+ name,
98
+ optional
99
+ }));
100
+ };
101
+ const noParameters = Result.succeed([]);
102
+ /** The declared parameters of a constraint component or target type, with their names. */
103
+ const parametersOf = (shapes, declaration) => Effect.suspend(() => Effect.fromResult(Arr.reduce(objectsOf(shapes, declaration, sh.parameter), noParameters, (acc, parameter) => Result.flatMap(acc, (out) => readParameter(shapes, declaration, parameter, out)))));
104
+ const literals = (shapes, node, p) => objectsOf(shapes, node, p).filter(isLiteral);
105
+ const prebinding = (record) => ({ bindings: fromEntries(record) });
106
+ /** Maps a solution to a violation (§5.3.2 "Mapping of Solution Bindings to Result Properties"). */
107
+ const toViolation = (solution, shape, messages, parameters) => {
108
+ const failure = solution.get("failure");
109
+ if (failure !== void 0 && failure.key === TRUE) return Effect.fail(evaluationError(`a SPARQL constraint of ${shape.id.key} reported a failure`));
110
+ const path = solution.get("path");
111
+ const value = solution.get("value");
112
+ const message = solution.get("message");
113
+ const bindings = fromEntries([...parameters, ...solution]).map;
114
+ return Effect.succeed({
115
+ focusNode: solution.get("this"),
116
+ path: isNamedNode(path) ? predicate(path) : void 0,
117
+ value: value ?? (Predicate.isTagged(shape, "NodeShape") ? solution.get("this") : void 0),
118
+ messages: isLiteral(message) ? [message] : messages,
119
+ bindings
120
+ });
121
+ };
122
+ /** Selects the validator of a constraint component for a shape (§6.2.3). */
123
+ const validatorOf = (shapes, component, shape) => {
124
+ const withQuery = (p, query, form) => Option.map(Arr.findFirst(objectsOf(shapes, component, p).filter(isNode), (v) => Arr.isReadonlyArrayNonEmpty(objectsOf(shapes, v, query))), (node) => ({
125
+ node,
126
+ form
127
+ }));
128
+ return pipe(Predicate.isTagged(shape, "NodeShape") ? withQuery(sh.nodeValidator, sh.select, "select") : withQuery(sh.propertyValidator, sh.select, "select"), Option.orElse(() => withQuery(sh.validator, sh.ask, "ask")));
129
+ };
130
+ const focusNodes = (solutions) => solutions.flatMap((s) => {
131
+ const t = s.get("this");
132
+ return t === void 0 ? [] : [t];
133
+ });
134
+ /**
135
+ * Creates the evaluator service.
136
+ *
137
+ * Per data graph (and shapes graph) the evaluator builds an in-memory
138
+ * SPARQL store once and caches compiled queries, so validating many focus
139
+ * nodes does not re-parse queries.
140
+ *
141
+ * @since 0.1.0
142
+ * @category constructors
143
+ */
144
+ const make = (options = {}) => {
145
+ const shapesGraphNode = namedNode(options.shapesGraphIri ?? "urn:x-shacl:shapesGraph");
146
+ const contexts = /* @__PURE__ */ new WeakMap();
147
+ const contextFor = (data, shapes) => Effect.suspend(() => {
148
+ let byShapes = contexts.get(data);
149
+ if (byShapes === void 0) contexts.set(data, byShapes = /* @__PURE__ */ new WeakMap());
150
+ const cached = byShapes.get(shapes);
151
+ if (cached !== void 0) return Effect.succeed(cached);
152
+ const quads = [...Arr.map(Arr.fromIterable(data), (q) => new Quad(q.subject, q.predicate, q.object, defaultGraph)), ...Arr.map(Arr.fromIterable(shapes), (q) => new Quad(q.subject, q.predicate, q.object, shapesGraphNode))];
153
+ return Effect.map(makeMemory(fromIterable(quads)), (store) => {
154
+ const context = {
155
+ engine: make$1(store, {
156
+ ...options.engine,
157
+ unionDefaultGraph: false
158
+ }),
159
+ queries: MutableHashMap.empty()
160
+ };
161
+ byShapes.set(shapes, context);
162
+ return context;
163
+ });
164
+ });
165
+ const compile$1 = (context, shapes, node, compileOptions) => {
166
+ const key = [
167
+ compileOptions.form,
168
+ node.key,
169
+ compileOptions.path === void 0 ? "" : toSparql(compileOptions.path),
170
+ ...compileOptions.prebound
171
+ ].join(" ");
172
+ return Option.match(MutableHashMap.get(context.queries, key), {
173
+ onSome: Effect.succeed,
174
+ onNone: () => Effect.tap(compile(shapes, node, compileOptions), (q) => Effect.sync(() => MutableHashMap.set(context.queries, key, q)))
175
+ });
176
+ };
177
+ const select = (context, query, bound) => context.engine.select(query, prebinding(bound)).pipe(Effect.flatMap((result) => Stream.runCollect(result.bindings)), Effect.map((solutions) => solutions.map((s) => s.map)), Effect.mapError((e) => evaluationError(`SPARQL evaluation failed: ${e.message}`, e)));
178
+ const ask = (context, query, bound) => context.engine.ask(query, prebinding(bound)).pipe(Effect.mapError((e) => evaluationError(`SPARQL evaluation failed: ${e.message}`, e)));
179
+ const evaluateSparqlConstraint = Effect.fnUntraced(function* (input, constraint) {
180
+ const shapes = input.shapesGraph.dataset;
181
+ const context = yield* contextFor(input.dataGraph, shapes);
182
+ const query = yield* compile$1(context, shapes, constraint.node, {
183
+ form: "select",
184
+ prebound: constraintVariables,
185
+ project: ["this"],
186
+ path: Predicate.isTagged(input.shape, "PropertyShape") ? input.shape.path : void 0
187
+ });
188
+ const solutions = yield* select(context, query, [
189
+ ["this", input.focusNode],
190
+ ["shapesGraph", shapesGraphNode],
191
+ ["currentShape", input.shape.id]
192
+ ]);
193
+ const messages = literals(shapes, constraint.node, sh.message);
194
+ return yield* Effect.forEach(solutions, (s) => toViolation(s, input.shape, messages, []), { concurrency: 1 });
195
+ });
196
+ const evaluateComponent = Effect.fnUntraced(function* (input, constraint) {
197
+ const shapes = input.shapesGraph.dataset;
198
+ const found = validatorOf(shapes, constraint.component, input.shape);
199
+ if (Option.isNone(found)) return [];
200
+ const validator = found.value;
201
+ const declared = yield* parametersOf(shapes, constraint.component);
202
+ const parameters = constraint.parameters.map((p) => {
203
+ return [declared.find((d) => d.path.key === p.path.key)?.name ?? localName(p.path), p.value];
204
+ });
205
+ const context = yield* contextFor(input.dataGraph, shapes);
206
+ const potentiallyBound = [
207
+ ...constraintVariables,
208
+ ...declared.map((d) => d.name),
209
+ ...validator.form === "ask" ? ["value"] : []
210
+ ];
211
+ const query = yield* compile$1(context, shapes, validator.node, {
212
+ form: validator.form,
213
+ prebound: potentiallyBound,
214
+ project: validator.form === "select" ? ["this"] : [],
215
+ path: validator.form === "select" && Predicate.isTagged(input.shape, "PropertyShape") ? input.shape.path : void 0
216
+ });
217
+ const validatorMessages = literals(shapes, validator.node, sh.message);
218
+ const messages = Arr.isReadonlyArrayNonEmpty(validatorMessages) ? validatorMessages : literals(shapes, constraint.component, sh.message);
219
+ const bound = [
220
+ ["this", input.focusNode],
221
+ ["shapesGraph", shapesGraphNode],
222
+ ["currentShape", input.shape.id],
223
+ ...parameters
224
+ ];
225
+ if (validator.form === "select") {
226
+ const solutions = yield* select(context, query, bound);
227
+ return yield* Effect.forEach(solutions, (s) => toViolation(s, input.shape, messages, parameters), { concurrency: 1 });
228
+ }
229
+ const failing = yield* Effect.filter(input.valueNodes, (value) => Effect.map(ask(context, query, [...bound, ["value", value]]), (ok) => !ok));
230
+ return yield* Effect.forEach(failing, (value) => toViolation(fromEntries([["this", input.focusNode], ["value", value]]).map, input.shape, messages, parameters), { concurrency: 1 });
231
+ });
232
+ const evaluateConstraint = (input) => Predicate.isTagged(input.constraint, "Sparql") ? evaluateSparqlConstraint(input, input.constraint) : evaluateComponent(input, input.constraint);
233
+ const selectTargets = Effect.fnUntraced(function* (input) {
234
+ const shapes = input.shapesGraph.dataset;
235
+ const target = input.target;
236
+ if (!isNode(target)) return yield* Effect.fail(evaluationError(`sh:target of ${input.shape.id.key} must be an IRI or blank node`));
237
+ const context = yield* contextFor(input.dataGraph, shapes);
238
+ if (Arr.isReadonlyArrayNonEmpty(objectsOf(shapes, target, sh.select))) {
239
+ const query = yield* compile$1(context, shapes, target, {
240
+ form: "select",
241
+ prebound: [],
242
+ project: ["this"]
243
+ });
244
+ return focusNodes(yield* select(context, query, []));
245
+ }
246
+ const type = objectsOf(shapes, target, rdf.type).filter(isNode).find((t) => Arr.isReadonlyArrayNonEmpty(objectsOf(shapes, t, sh.select)));
247
+ if (type === void 0) return yield* Effect.fail(evaluationError(`unsupported custom target ${target.key} of ${input.shape.id.key} (neither a sh:SPARQLTarget nor an instance of a sh:SPARQLTargetType)`));
248
+ const declared = yield* parametersOf(shapes, type);
249
+ const supplied = declared.map((parameter) => ({
250
+ parameter,
251
+ values: objectsOf(shapes, target, parameter.path)
252
+ }));
253
+ const invalid = ({ values }) => values.length > 1 || values.some(isBlankNode);
254
+ const problem = supplied.find((s) => invalid(s) || Arr.isReadonlyArrayEmpty(s.values) && !s.parameter.optional);
255
+ if (problem !== void 0) {
256
+ if (!invalid(problem)) return [];
257
+ return yield* Effect.fail(evaluationError(`target ${target.key} needs at most one non-blank value for ${problem.parameter.path.key}`));
258
+ }
259
+ const bound = supplied.flatMap(({ parameter, values }) => values.slice(0, 1).map((value) => [parameter.name, value]));
260
+ const query = yield* compile$1(context, shapes, type, {
261
+ form: "select",
262
+ prebound: declared.map((d) => d.name),
263
+ project: ["this"]
264
+ });
265
+ return focusNodes(yield* select(context, query, bound));
266
+ });
267
+ return SparqlConstraintEvaluator.of({
268
+ evaluateConstraint,
269
+ selectTargets
270
+ });
271
+ };
272
+ /**
273
+ * A layer providing the SHACL-SPARQL evaluator.
274
+ *
275
+ * @since 0.1.0
276
+ * @category layers
277
+ */
278
+ const layer = (options) => Layer.sync(SparqlConstraintEvaluator, () => make(options));
279
+ export { make as i, defaultShapesGraphIri as n, layer as r, Evaluator_exports as t };
280
+
281
+ //# sourceMappingURL=Evaluator-DOY2-guC.mjs.map