@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2251 -2
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +195 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1,333 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { O as defaultGraph, P as isDefaultGraph, Z as namedNode, d as Quad } from "./Term-CFLG1qu4.mjs";
3
+ import { m as fromIterable } from "./Dataset-BlmlcI7J.mjs";
4
+ import { a as formatError, b as serializerFor, g as parserFor, t as Formats } from "./Serialization-DP9H5bYQ.mjs";
5
+ import { _ as toRecord } from "./Bindings-Ck3m7JRC.mjs";
6
+ import { a as TimeoutError, i as MalformedResponseError, l as isTransient, n as ConfigurationError, o as TransportError, r as HttpStatusError, s as UnsupportedMediaTypeError } from "./ClientErrors-CpXdFX5u.mjs";
7
+ import { i as defaults, n as acceptHeader } from "./ClientFormats-CXomkXLV.mjs";
8
+ import { n as print } from "./Generator-D3utCJC7.mjs";
9
+ import { t as Builder } from "./QueryBuilder-BLK9Vfbz.mjs";
10
+ import { a as parse, o as parserFor$1 } from "./ResultsStream-BhF0OcNn.mjs";
11
+ import * as Arr from "effect/Array";
12
+ import * as Option from "effect/Option";
13
+ import * as Predicate from "effect/Predicate";
14
+ import * as Schema from "effect/Schema";
15
+ import * as Effect from "effect/Effect";
16
+ import * as Match from "effect/Match";
17
+ import * as Context from "effect/Context";
18
+ import * as Layer from "effect/Layer";
19
+ import * as Stream from "effect/Stream";
20
+ import * as Result from "effect/Result";
21
+ import * as HttpClient from "effect/http/HttpClient";
22
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
23
+ import * as Duration from "effect/Duration";
24
+ // src/sparql/SparqlClient.ts
25
+ /**
26
+ * A strongly-typed SPARQL 1.1 Protocol and Graph Store HTTP Protocol client
27
+ * built on the `effect/http` `HttpClient`.
28
+ *
29
+ * Queries can be strings, `Ast` values or `QueryBuilder` builders; the typed
30
+ * rows of a `QueryBuilder.select(…)` flow through to `select`. `SELECT`
31
+ * results are parsed incrementally (JSON, XML, TSV) and streamed;
32
+ * `CONSTRUCT` / `DESCRIBE` results are parsed with the `Serialization.Formats`
33
+ * parser for the response's media type (N-Triples is preferred and parsed
34
+ * incrementally).
35
+ *
36
+ * @since 0.1.0
37
+ */
38
+ var SparqlClient_exports = /* @__PURE__ */ __exportAll({
39
+ DEFAULT_RESULTS_ACCEPT: () => DEFAULT_RESULTS_ACCEPT,
40
+ SparqlClient: () => SparqlClient,
41
+ ask: () => ask,
42
+ construct: () => construct,
43
+ decode: () => decode,
44
+ layer: () => layer,
45
+ make: () => make,
46
+ select: () => select,
47
+ toSparql: () => toSparql,
48
+ update: () => update
49
+ });
50
+ /**
51
+ * The SPARQL client service.
52
+ *
53
+ * @since 0.1.0
54
+ * @category services
55
+ */
56
+ var SparqlClient = class extends Context.Service()("@thomasfosterau/effect-rdf/sparql/SparqlClient") {};
57
+ /**
58
+ * The default `Accept` header of `SELECT` / `ASK` requests.
59
+ *
60
+ * @since 0.1.0
61
+ * @category constants
62
+ */
63
+ const DEFAULT_RESULTS_ACCEPT = "application/sparql-results+json, application/sparql-results+xml;q=0.9, text/tab-separated-values;q=0.8, text/csv;q=0.5";
64
+ /**
65
+ * The SPARQL text of a query or update input.
66
+ *
67
+ * @since 0.1.0
68
+ * @category utils
69
+ */
70
+ const toSparql = (input) => Predicate.isString(input) ? input : input instanceof Builder ? input.toString() : print(input);
71
+ const iriOf = (g) => Predicate.isString(g) ? g : g.value;
72
+ /** The media type of a `Content-Type` value: what precedes its parameters. */
73
+ const essence = (contentType) => (contentType.split(";", 1)[0] ?? "").trim();
74
+ const mediaTypeOf = (response) => essence(response.headers["content-type"] ?? "").toLowerCase();
75
+ const isResultsParseError = Predicate.isTagged("ResultsParseError");
76
+ const isRdfParseError = Predicate.isTagged("RdfParseError");
77
+ const isVariablesEvent = (e) => Predicate.isTagged(e, "Variables");
78
+ const isSolutionEvent = (e) => Predicate.isTagged(e, "Solution");
79
+ const isBooleanEvent = (e) => Predicate.isTagged(e, "Boolean");
80
+ const MAX_ERROR_BODY = 65536;
81
+ const fromHttpClientError = (e) => {
82
+ return Match.value(e.reason._tag).pipe(Match.when(Match.is("DecodeError", "EmptyBodyError"), () => new MalformedResponseError({
83
+ message: e.message,
84
+ cause: e
85
+ })), Match.orElse(() => new TransportError({
86
+ message: e.message,
87
+ cause: e
88
+ })));
89
+ };
90
+ const bodyText = (response) => Stream.decodeText(Stream.mapError(response.stream, fromHttpClientError));
91
+ const graphBase = (graph, endpoint) => graph === "default" ? endpoint : graph.value;
92
+ /**
93
+ * Builds a client from configuration, using the `HttpClient` from the context
94
+ * and the `Serialization.Formats` service when provided (the default formats
95
+ * otherwise).
96
+ *
97
+ * @since 0.1.0
98
+ * @category constructors
99
+ */
100
+ const make = (config) => Effect.gen(function* () {
101
+ const http = yield* HttpClient.HttpClient;
102
+ const formats = Option.getOrElse(yield* Effect.serviceOption(Formats), () => defaults);
103
+ const graphAccept = acceptHeader(formats);
104
+ const resultsAccept = config.resultsAccept ?? "application/sparql-results+json, application/sparql-results+xml;q=0.9, text/tab-separated-values;q=0.8, text/csv;q=0.5";
105
+ const anyAccept = `${resultsAccept}, ${graphAccept.split(", ").map((t) => t.includes(";q=") ? t : `${t};q=0.9`).join(", ")}`;
106
+ const maxGetLength = config.maxGetLength ?? 2048;
107
+ const retryWhile = config.retryWhile ?? isTransient;
108
+ /** Sends a request: applies headers, timeout and retries, checks the status. */
109
+ const send = (request, options, accept = []) => {
110
+ const withHeaders = HttpClientRequest.setHeaders(request, {
111
+ ...config.headers,
112
+ ...options?.headers
113
+ });
114
+ const timeout = options?.timeout ?? config.timeout;
115
+ const attempt = http.execute(withHeaders).pipe(Effect.mapError(fromHttpClientError), Effect.flatMap((response) => {
116
+ if (response.status >= 200 && response.status < 300 || accept.includes(response.status)) return Effect.succeed(response);
117
+ return response.text.pipe(Effect.orElseSucceed(() => ""), Effect.flatMap((body) => Effect.fail(new HttpStatusError({
118
+ method: withHeaders.method,
119
+ url: withHeaders.url,
120
+ status: response.status,
121
+ body: body.slice(0, MAX_ERROR_BODY)
122
+ }))));
123
+ }));
124
+ const timed = timeout === void 0 ? attempt : Effect.timeoutOrElse(attempt, {
125
+ duration: timeout,
126
+ orElse: () => Effect.fail(new TimeoutError({ message: `${withHeaders.method} ${withHeaders.url} timed out after ${Duration.format(Duration.fromInputUnsafe(timeout))}` }))
127
+ });
128
+ return (config.retry === void 0 ? timed : Effect.retry(timed, {
129
+ schedule: config.retry,
130
+ while: retryWhile
131
+ })).pipe(Effect.withSpan("SparqlClient.request", { attributes: {
132
+ "http.method": withHeaders.method,
133
+ "http.url": withHeaders.url
134
+ } }));
135
+ };
136
+ const queryRequest = (query, accept, options) => {
137
+ const text = toSparql(query);
138
+ const params = [...(options?.defaultGraphs ?? []).map((g) => ["default-graph-uri", iriOf(g)]), ...(options?.namedGraphs ?? []).map((g) => ["named-graph-uri", iriOf(g)])];
139
+ const method = options?.method ?? config.method ?? "auto";
140
+ const getUrlLength = config.endpoint.length + 7 + encodeURIComponent(text).length + params.reduce((n, [k, v]) => n + k.length + encodeURIComponent(v).length + 2, 0);
141
+ const base = method === "get" || method === "auto" && getUrlLength <= maxGetLength ? HttpClientRequest.get(config.endpoint).pipe(HttpClientRequest.appendUrlParams([["query", text], ...params])) : HttpClientRequest.post(config.endpoint).pipe(HttpClientRequest.appendUrlParams(params), HttpClientRequest.bodyText(text, "application/sparql-query; charset=utf-8"));
142
+ return HttpClientRequest.setHeader(base, "accept", accept);
143
+ };
144
+ const resultEvents = (response) => {
145
+ const mediaType = mediaTypeOf(response);
146
+ const parsed = parse(mediaType, bodyText(response));
147
+ if (Option.isNone(parsed)) return Effect.fail(new UnsupportedMediaTypeError({
148
+ contentType: mediaType,
149
+ expected: resultsAccept.split(",").map(essence)
150
+ }));
151
+ return Effect.succeed(Stream.mapError(parsed.value, (e) => isResultsParseError(e) ? new MalformedResponseError({
152
+ message: `Invalid ${e.format} results: ${e.message}`,
153
+ contentType: mediaType
154
+ }) : e));
155
+ };
156
+ const graphQuads = (response, baseIri) => {
157
+ const mediaType = mediaTypeOf(response);
158
+ const parser = parserFor(formats, mediaType);
159
+ if (Option.isNone(parser)) return Effect.fail(new UnsupportedMediaTypeError({
160
+ contentType: mediaType,
161
+ expected: formats.parsers.map((p) => p.format.mediaType)
162
+ }));
163
+ return Effect.succeed(parser.value.parseStream(bodyText(response), { baseIri }).pipe(Stream.mapError((e) => isRdfParseError(e) ? new MalformedResponseError({
164
+ message: formatError(e),
165
+ contentType: mediaType
166
+ }) : e), Stream.map((q) => isDefaultGraph(q.graph) ? q : new Quad(q.subject, q.predicate, q.object, defaultGraph))));
167
+ };
168
+ const results = (query, options) => Stream.unwrap(Effect.flatMap(send(queryRequest(query, resultsAccept, options), options), resultEvents)).pipe(Stream.withSpan("SparqlClient.results"));
169
+ const selectBindings = (query, options) => Stream.flatMap(results(query, options), (item) => {
170
+ return Match.value(item).pipe(Match.tag("Solution", (event) => Stream.succeed(event.bindings)), Match.tag("Variables", () => Stream.empty), Match.tag("Boolean", () => Stream.fail(new MalformedResponseError({ message: "Expected solutions but received a boolean result" }))), Match.exhaustive);
171
+ });
172
+ function select(query, options) {
173
+ return Stream.map(selectBindings(query, options), toRecord);
174
+ }
175
+ const selectAll = (query, options) => Effect.map(Stream.runFold(results(query, options), () => ({
176
+ variables: [],
177
+ bindings: [],
178
+ boolean: false
179
+ }), (acc, event) => {
180
+ if (isVariablesEvent(event)) acc.variables = event.variables;
181
+ else if (isSolutionEvent(event)) acc.bindings.push(event.bindings);
182
+ else acc.boolean = true;
183
+ return acc;
184
+ }), (acc) => ({
185
+ _tag: "ResultSet",
186
+ variables: acc.variables,
187
+ bindings: acc.bindings
188
+ }));
189
+ const ask = (query, options) => Effect.flatMap(Stream.runHead(Stream.filter(results(query, options), isBooleanEvent)), (event) => Option.isSome(event) ? Effect.succeed(event.value.value) : Effect.fail(new MalformedResponseError({ message: "Expected a boolean result" }))).pipe(Effect.withSpan("SparqlClient.ask"));
190
+ const construct = (query, options) => Stream.unwrap(Effect.flatMap(send(queryRequest(query, graphAccept, options), options), (response) => graphQuads(response, config.endpoint))).pipe(Stream.withSpan("SparqlClient.construct"));
191
+ const constructDataset = (query, options) => Effect.map(Stream.runCollect(construct(query, options)), fromIterable);
192
+ const query = (q, options) => Effect.gen(function* () {
193
+ const response = yield* send(queryRequest(q, anyAccept, options), options);
194
+ const mediaType = mediaTypeOf(response);
195
+ if (Option.isSome(parserFor$1(mediaType))) {
196
+ const events = yield* Stream.runCollect(yield* resultEvents(response));
197
+ const boolean = Arr.findFirst(events, isBooleanEvent);
198
+ if (Option.isSome(boolean)) return {
199
+ _tag: "Boolean",
200
+ value: boolean.value.value
201
+ };
202
+ return {
203
+ _tag: "ResultSet",
204
+ variables: Option.match(Arr.findFirst(events, isVariablesEvent), {
205
+ onNone: () => [],
206
+ onSome: (e) => e.variables
207
+ }),
208
+ bindings: Arr.filterMap(events, (e) => isSolutionEvent(e) ? Result.succeed(e.bindings) : Result.failVoid)
209
+ };
210
+ }
211
+ const quads = yield* Stream.runCollect(yield* graphQuads(response, config.endpoint));
212
+ return {
213
+ _tag: "Graph",
214
+ dataset: fromIterable(quads)
215
+ };
216
+ }).pipe(Effect.withSpan("SparqlClient.query"));
217
+ const update = (u, options) => {
218
+ const params = [...(options?.usingGraphs ?? []).map((g) => ["using-graph-uri", iriOf(g)]), ...(options?.usingNamedGraphs ?? []).map((g) => ["using-named-graph-uri", iriOf(g)])];
219
+ const request = HttpClientRequest.post(config.updateEndpoint ?? config.endpoint).pipe(HttpClientRequest.appendUrlParams(params), HttpClientRequest.bodyText(toSparql(u), "application/sparql-update; charset=utf-8"));
220
+ return Effect.flatMap(send(request, options), (response) => Effect.mapError(Effect.asVoid(response.arrayBuffer), fromHttpClientError)).pipe(Effect.withSpan("SparqlClient.update"));
221
+ };
222
+ const graphStore = Effect.suspend(() => config.graphStoreEndpoint === void 0 ? Effect.fail(new ConfigurationError({ message: "Graph Store operations need a graphStoreEndpoint" })) : Effect.succeed(config.graphStoreEndpoint));
223
+ const graphRequest = (method, graph) => Effect.map(graphStore, (endpoint) => HttpClientRequest.make(method)(endpoint).pipe(HttpClientRequest.appendUrlParams(graph === "default" ? [["default", ""]] : [["graph", graph.value]])));
224
+ const getGraph = (graph, options) => Stream.unwrap(Effect.gen(function* () {
225
+ const endpoint = yield* graphStore;
226
+ const request = HttpClientRequest.setHeader(yield* graphRequest("GET", graph), "accept", graphAccept);
227
+ const response = yield* send(request, options);
228
+ return yield* graphQuads(response, graphBase(graph, endpoint));
229
+ })).pipe(Stream.withSpan("SparqlClient.getGraph"));
230
+ const getGraphDataset = (graph, options) => Effect.map(Stream.runCollect(getGraph(graph, options)), fromIterable);
231
+ const hasGraph = (graph, options) => Effect.gen(function* () {
232
+ const request = HttpClientRequest.setHeader(yield* graphRequest("HEAD", graph), "accept", graphAccept);
233
+ return (yield* send(request, options, [404])).status !== 404;
234
+ }).pipe(Effect.withSpan("SparqlClient.hasGraph"));
235
+ const serialize = (triples, mediaType) => Effect.gen(function* () {
236
+ const serializer = serializerFor(formats, mediaType);
237
+ if (Option.isNone(serializer)) return yield* new ConfigurationError({ message: `No serializer for ${mediaType}` });
238
+ const quads = Array.from(triples, (q) => q.graph._tag === "DefaultGraph" ? q : new Quad(q.subject, q.predicate, q.object, defaultGraph));
239
+ return yield* serializer.value.serialize(quads).pipe(Effect.mapError((e) => new ConfigurationError({ message: `Cannot serialise: ${e.message}` })));
240
+ });
241
+ const upload = (method, graph, triples, options) => Effect.gen(function* () {
242
+ const mediaType = options?.mediaType ?? config.graphMediaType ?? "application/n-triples";
243
+ const body = yield* serialize(triples, mediaType);
244
+ const request = HttpClientRequest.bodyText(yield* graphRequest(method, graph), body, `${mediaType}; charset=utf-8`);
245
+ const response = yield* send(request, options);
246
+ yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);
247
+ });
248
+ const putGraph = (graph, triples, options) => upload("PUT", graph, triples, options).pipe(Effect.withSpan("SparqlClient.putGraph"));
249
+ const postGraph = (graph, triples, options) => upload("POST", graph, triples, options).pipe(Effect.withSpan("SparqlClient.postGraph"));
250
+ const createGraph = (triples, options) => Effect.gen(function* () {
251
+ const endpoint = yield* graphStore;
252
+ const mediaType = options?.mediaType ?? config.graphMediaType ?? "application/n-triples";
253
+ const body = yield* serialize(triples, mediaType);
254
+ const response = yield* send(HttpClientRequest.post(endpoint).pipe(HttpClientRequest.bodyText(body, `${mediaType}; charset=utf-8`)), options);
255
+ yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);
256
+ const location = response.headers["location"];
257
+ if (location === void 0) return yield* new MalformedResponseError({ message: "The graph store did not return a Location header" });
258
+ return namedNode(new URL(location, endpoint).href);
259
+ }).pipe(Effect.withSpan("SparqlClient.createGraph"));
260
+ const deleteGraph = (graph, options) => Effect.gen(function* () {
261
+ const response = yield* send(yield* graphRequest("DELETE", graph), options);
262
+ yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);
263
+ }).pipe(Effect.withSpan("SparqlClient.deleteGraph"));
264
+ return SparqlClient.of({
265
+ config,
266
+ select,
267
+ selectBindings,
268
+ results,
269
+ selectAll,
270
+ ask,
271
+ construct,
272
+ describe: construct,
273
+ constructDataset,
274
+ query,
275
+ update,
276
+ getGraph,
277
+ getGraphDataset,
278
+ hasGraph,
279
+ putGraph,
280
+ postGraph,
281
+ createGraph,
282
+ deleteGraph
283
+ });
284
+ });
285
+ /**
286
+ * A layer providing the client (requires an `HttpClient`, e.g.
287
+ * `FetchHttpClient.layer`).
288
+ *
289
+ * @since 0.1.0
290
+ * @category layers
291
+ */
292
+ const layer = (config) => Layer.effect(SparqlClient, make(config));
293
+ /**
294
+ * Streams the rows of a `SELECT` query with the `SparqlClient` from the
295
+ * context. Builder queries produce typed rows.
296
+ *
297
+ * @since 0.1.0
298
+ * @category accessors
299
+ */
300
+ const select = (query, options) => Stream.unwrap(Effect.map(Effect.service(SparqlClient), (c) => !(query instanceof Builder) ? c.select(query, options) : c.select(query, options)));
301
+ /**
302
+ * Streams the rows of a `SELECT` query decoded with a schema (whose fields
303
+ * are typically `TermSchema` codecs).
304
+ *
305
+ * @since 0.1.0
306
+ * @category accessors
307
+ */
308
+ const decode = (query, schema, options) => Stream.mapEffect(Stream.unwrap(Effect.map(Effect.service(SparqlClient), (c) => c.selectBindings(query, options))), (b) => Schema.decodeUnknownEffect(schema)(toRecord(b)));
309
+ /**
310
+ * Evaluates an `ASK` query with the `SparqlClient` from the context.
311
+ *
312
+ * @since 0.1.0
313
+ * @category accessors
314
+ */
315
+ const ask = (query, options) => Effect.flatMap(Effect.service(SparqlClient), (c) => c.ask(query, options));
316
+ /**
317
+ * Streams the triples of a `CONSTRUCT` / `DESCRIBE` query with the
318
+ * `SparqlClient` from the context.
319
+ *
320
+ * @since 0.1.0
321
+ * @category accessors
322
+ */
323
+ const construct = (query, options) => Stream.unwrap(Effect.map(Effect.service(SparqlClient), (c) => c.construct(query, options)));
324
+ /**
325
+ * Executes an update with the `SparqlClient` from the context.
326
+ *
327
+ * @since 0.1.0
328
+ * @category accessors
329
+ */
330
+ const update = (input, options) => Effect.flatMap(Effect.service(SparqlClient), (c) => c.update(input, options));
331
+ export { construct as a, make as c, update as d, ask as i, select as l, SparqlClient as n, decode as o, SparqlClient_exports as r, layer as s, DEFAULT_RESULTS_ACCEPT as t, toSparql as u };
332
+
333
+ //# sourceMappingURL=SparqlClient-C_CjXbwj.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparqlClient-C_CjXbwj.mjs","names":["QueryBuilder.Builder","Generator.print","ClientErrors.MalformedResponseError","ClientErrors.TransportError","Serialization.Formats","ClientFormats.defaults","ClientFormats.acceptHeader","ClientErrors.isTransient","ClientErrors.HttpStatusError","ClientErrors.TimeoutError","ResultsStream.parse","ClientErrors.UnsupportedMediaTypeError","Serialization.parserFor","Serialization.formatError","Term.isDefaultGraph","Term.Quad","Term.defaultGraph","B.toRecord","Dataset.fromIterable","ResultsStream.parserFor","ClientErrors.ConfigurationError","Serialization.serializerFor","Term.namedNode"],"sources":["../src/sparql/SparqlClient.ts"],"sourcesContent":["/**\n * A strongly-typed SPARQL 1.1 Protocol and Graph Store HTTP Protocol client\n * built on the `effect/http` `HttpClient`.\n *\n * Queries can be strings, `Ast` values or `QueryBuilder` builders; the typed\n * rows of a `QueryBuilder.select(…)` flow through to `select`. `SELECT`\n * results are parsed incrementally (JSON, XML, TSV) and streamed;\n * `CONSTRUCT` / `DESCRIBE` results are parsed with the `Serialization.Formats`\n * parser for the response's media type (N-Triples is preferred and parsed\n * incrementally).\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Match from 'effect/Match';\nimport * as Context from 'effect/Context';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport type * as Schedule from 'effect/Schedule';\nimport * as Schema from 'effect/Schema';\nimport * as Stream from 'effect/Stream';\nimport * as HttpClient from 'effect/http/HttpClient';\nimport type * as HttpClientError from 'effect/http/HttpClientError';\nimport * as HttpClientRequest from 'effect/http/HttpClientRequest';\nimport type * as HttpClientResponse from 'effect/http/HttpClientResponse';\nimport * as Dataset from '../Dataset.ts';\nimport * as Serialization from '../Serialization.ts';\nimport * as Term from '../Term.ts';\nimport type * as Ast from './Ast.ts';\nimport * as B from './Bindings.ts';\nimport * as Generator from './Generator.ts';\nimport * as QueryBuilder from './QueryBuilder.ts';\nimport type * as Results from './Results.ts';\nimport * as ClientErrors from './ClientErrors.ts';\nimport * as ClientFormats from './ClientFormats.ts';\nimport * as ResultsStream from './ResultsStream.ts';\nimport * as Predicate from 'effect/Predicate';\nimport * as Result from 'effect/Result';\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * How queries are sent: `get` (URL query string), `post`\n * (`application/sparql-query` body) or `auto` (`GET` unless the URL would\n * exceed `maxGetLength`).\n *\n * @since 0.1.0\n * @category models\n */\nexport type Method = 'auto' | 'get' | 'post';\n\n/**\n * Client configuration.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Config {\n /** The SPARQL query endpoint URL. */\n readonly endpoint: string;\n /** The SPARQL update endpoint URL (default: `endpoint`). */\n readonly updateEndpoint?: string | undefined;\n /** The Graph Store Protocol endpoint URL (required for graph operations). */\n readonly graphStoreEndpoint?: string | undefined;\n /** Headers sent with every request (e.g. `authorization`). */\n readonly headers?: Readonly<Record<string, string>> | undefined;\n /** How queries are sent (default `auto`). */\n readonly method?: Method | undefined;\n /** The longest URL sent with `GET` in `auto` mode (default 2048). */\n readonly maxGetLength?: number | undefined;\n /** Time limit for receiving a response (headers). */\n readonly timeout?: Duration.Input | undefined;\n /**\n * Retry policy for transient failures (transport errors, timeouts and the\n * statuses 408, 429, 502, 503 and 504; see `retryWhile`).\n */\n readonly retry?: Schedule.Schedule<unknown, ClientErrors.SparqlClientError> | undefined;\n /** Which errors are retried (default `ClientErrors.isTransient`). */\n readonly retryWhile?: ((error: ClientErrors.SparqlClientError) => boolean) | undefined;\n /** The `Accept` header of `SELECT` / `ASK` requests. */\n readonly resultsAccept?: string | undefined;\n /** The media type used to upload graphs (default `application/n-triples`). */\n readonly graphMediaType?: string | undefined;\n}\n\n/**\n * A query: SPARQL text, a parsed query or a `QueryBuilder` builder.\n *\n * @since 0.1.0\n * @category models\n */\nexport type QueryInput =\n | string\n | Ast.Query\n | QueryBuilder.Builder<'Select', any, any>\n | QueryBuilder.Builder<'Ask', any, any>\n | QueryBuilder.Builder<'Construct', any, any>\n | QueryBuilder.Builder<'Describe', any, any>;\n\n/**\n * An update: SPARQL text or a parsed update.\n *\n * @since 0.1.0\n * @category models\n */\nexport type UpdateInput = string | Ast.Update;\n\n/**\n * A graph IRI.\n *\n * @since 0.1.0\n * @category models\n */\nexport type GraphIri = string | Term.NamedNode;\n\n/**\n * The graph of a Graph Store operation: `'default'` or a named graph.\n *\n * @since 0.1.0\n * @category models\n */\nexport type GraphTarget = 'default' | Term.NamedNode;\n\n/**\n * Per-request options.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface RequestOptions {\n /** Extra headers. */\n readonly headers?: Readonly<Record<string, string>> | undefined;\n /** Overrides the configured timeout. */\n readonly timeout?: Duration.Input | undefined;\n}\n\n/**\n * Options of query requests.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface QueryOptions extends RequestOptions {\n /** `default-graph-uri` parameters. */\n readonly defaultGraphs?: ReadonlyArray<GraphIri> | undefined;\n /** `named-graph-uri` parameters. */\n readonly namedGraphs?: ReadonlyArray<GraphIri> | undefined;\n /** Overrides the configured method. */\n readonly method?: Method | undefined;\n}\n\n/**\n * Options of update requests.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface UpdateOptions extends RequestOptions {\n /** `using-graph-uri` parameters. */\n readonly usingGraphs?: ReadonlyArray<GraphIri> | undefined;\n /** `using-named-graph-uri` parameters. */\n readonly usingNamedGraphs?: ReadonlyArray<GraphIri> | undefined;\n}\n\n/**\n * Options of Graph Store uploads.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface UploadOptions extends RequestOptions {\n /** The media type to upload with (default: the configured one). */\n readonly mediaType?: string | undefined;\n}\n\n/**\n * An untyped `SELECT` row.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Row = Readonly<Record<string, Term.GroundTerm>>;\n\n/**\n * The materialised result of any query.\n *\n * @since 0.1.0\n * @category models\n */\nexport type QueryResult =\n | Results.ResultSet\n | Results.BooleanResult\n | { readonly _tag: 'Graph'; readonly dataset: Dataset.Dataset };\n\n/**\n * The client service.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface SparqlClientShape {\n readonly config: Config;\n /** Streams the rows of a `SELECT` query (typed for builders). */\n readonly select: {\n <R extends string, O extends string>(\n query: QueryBuilder.Builder<'Select', R, O>,\n options?: QueryOptions,\n ): Stream.Stream<QueryBuilder.Row<R, O>, ClientErrors.SparqlClientError>;\n (\n query: string | Ast.Query,\n options?: QueryOptions,\n ): Stream.Stream<Row, ClientErrors.SparqlClientError>;\n };\n /** Streams the solutions of a `SELECT` query. */\n readonly selectBindings: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Stream.Stream<B.Bindings, ClientErrors.SparqlClientError>;\n /** Streams the raw events (variables, solutions, boolean) of a results document. */\n readonly results: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Stream.Stream<ResultsStream.ResultEvent, ClientErrors.SparqlClientError>;\n /** Collects a `SELECT` result, with its variables. */\n readonly selectAll: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Effect.Effect<Results.ResultSet, ClientErrors.SparqlClientError>;\n /** Evaluates an `ASK` query. */\n readonly ask: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Effect.Effect<boolean, ClientErrors.SparqlClientError>;\n /** Streams the triples of a `CONSTRUCT` (or `DESCRIBE`) query. */\n readonly construct: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Stream.Stream<Term.Quad, ClientErrors.SparqlClientError>;\n /** Streams the triples of a `DESCRIBE` query. */\n readonly describe: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Stream.Stream<Term.Quad, ClientErrors.SparqlClientError>;\n /** Collects the triples of a `CONSTRUCT` / `DESCRIBE` query. */\n readonly constructDataset: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Effect.Effect<Dataset.Dataset, ClientErrors.SparqlClientError>;\n /** Evaluates a query of any form, dispatching on the response media type. */\n readonly query: (\n query: QueryInput,\n options?: QueryOptions,\n ) => Effect.Effect<QueryResult, ClientErrors.SparqlClientError>;\n /** Executes an update request. */\n readonly update: (\n update: UpdateInput,\n options?: UpdateOptions,\n ) => Effect.Effect<void, ClientErrors.SparqlClientError>;\n /** Streams the triples of a graph (Graph Store `GET`). */\n readonly getGraph: (\n graph: GraphTarget,\n options?: RequestOptions,\n ) => Stream.Stream<Term.Quad, ClientErrors.SparqlClientError>;\n /** Fetches a graph as a `Dataset` (triples in the default graph). */\n readonly getGraphDataset: (\n graph: GraphTarget,\n options?: RequestOptions,\n ) => Effect.Effect<Dataset.Dataset, ClientErrors.SparqlClientError>;\n /** Whether a graph exists (Graph Store `HEAD`). */\n readonly hasGraph: (\n graph: GraphTarget,\n options?: RequestOptions,\n ) => Effect.Effect<boolean, ClientErrors.SparqlClientError>;\n /** Replaces a graph (Graph Store `PUT`). */\n readonly putGraph: (\n graph: GraphTarget,\n triples: Iterable<Term.Quad>,\n options?: UploadOptions,\n ) => Effect.Effect<void, ClientErrors.SparqlClientError>;\n /** Adds triples to a graph (Graph Store `POST`). */\n readonly postGraph: (\n graph: GraphTarget,\n triples: Iterable<Term.Quad>,\n options?: UploadOptions,\n ) => Effect.Effect<void, ClientErrors.SparqlClientError>;\n /** Creates a new graph in the graph store and returns its IRI. */\n readonly createGraph: (\n triples: Iterable<Term.Quad>,\n options?: UploadOptions,\n ) => Effect.Effect<Term.NamedNode, ClientErrors.SparqlClientError>;\n /** Deletes a graph (Graph Store `DELETE`). */\n readonly deleteGraph: (\n graph: GraphTarget,\n options?: RequestOptions,\n ) => Effect.Effect<void, ClientErrors.SparqlClientError>;\n}\n\n/**\n * The SPARQL client service.\n *\n * @since 0.1.0\n * @category services\n */\nexport class SparqlClient extends Context.Service<SparqlClient, SparqlClientShape>()(\n '@thomasfosterau/effect-rdf/sparql/SparqlClient',\n) {}\n\n// -----------------------------------------------------------------------------\n// Helpers\n// -----------------------------------------------------------------------------\n\n/**\n * The default `Accept` header of `SELECT` / `ASK` requests.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const DEFAULT_RESULTS_ACCEPT =\n 'application/sparql-results+json, application/sparql-results+xml;q=0.9, text/tab-separated-values;q=0.8, text/csv;q=0.5';\n\n/**\n * The SPARQL text of a query or update input.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const toSparql = (input: QueryInput | UpdateInput): string =>\n Predicate.isString(input)\n ? input\n : input instanceof QueryBuilder.Builder\n ? input.toString()\n : Generator.print(input);\n\nconst iriOf = (g: GraphIri): string => (Predicate.isString(g) ? g : g.value);\n\n/** The media type of a `Content-Type` value: what precedes its parameters. */\nconst essence = (contentType: string): string => (contentType.split(';', 1)[0] ?? '').trim();\n\nconst mediaTypeOf = (response: HttpClientResponse.HttpClientResponse): string =>\n essence(response.headers['content-type'] ?? '').toLowerCase();\n\nconst isResultsParseError = Predicate.isTagged('ResultsParseError');\nconst isRdfParseError = Predicate.isTagged('RdfParseError');\ntype EventOf<K extends ResultsStream.ResultEvent['_tag']> = Extract<\n ResultsStream.ResultEvent,\n { readonly _tag: K }\n>;\nconst isVariablesEvent = (e: ResultsStream.ResultEvent): e is EventOf<'Variables'> =>\n Predicate.isTagged(e, 'Variables');\nconst isSolutionEvent = (e: ResultsStream.ResultEvent): e is EventOf<'Solution'> =>\n Predicate.isTagged(e, 'Solution');\nconst isBooleanEvent = (e: ResultsStream.ResultEvent): e is EventOf<'Boolean'> =>\n Predicate.isTagged(e, 'Boolean');\n\nconst MAX_ERROR_BODY = 64 * 1024;\n\n/** What `selectAll` collects from the results events. */\ninterface SelectAccumulator {\n variables: ReadonlyArray<string>;\n bindings: Array<B.Bindings>;\n boolean: boolean;\n}\n\nconst fromHttpClientError = (\n e: HttpClientError.HttpClientError,\n): ClientErrors.SparqlClientError => {\n return Match.value(e.reason._tag).pipe(\n Match.when(\n Match.is('DecodeError', 'EmptyBodyError'),\n () => new ClientErrors.MalformedResponseError({ message: e.message, cause: e }),\n ),\n Match.orElse(() => new ClientErrors.TransportError({ message: e.message, cause: e })),\n );\n};\n\nconst bodyText = (\n response: HttpClientResponse.HttpClientResponse,\n): Stream.Stream<string, ClientErrors.SparqlClientError> =>\n Stream.decodeText(Stream.mapError(response.stream, fromHttpClientError));\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\n\nconst graphBase = (graph: GraphTarget, endpoint: string) =>\n graph === 'default' ? endpoint : graph.value;\n\n/**\n * Builds a client from configuration, using the `HttpClient` from the context\n * and the `Serialization.Formats` service when provided (the default formats\n * otherwise).\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (\n config: Config,\n): Effect.Effect<SparqlClientShape, never, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const http = yield* HttpClient.HttpClient;\n const formats = Option.getOrElse(\n yield* Effect.serviceOption(Serialization.Formats),\n () => ClientFormats.defaults,\n );\n const graphAccept = ClientFormats.acceptHeader(formats);\n const resultsAccept = config.resultsAccept ?? DEFAULT_RESULTS_ACCEPT;\n const anyAccept = `${resultsAccept}, ${graphAccept\n .split(', ')\n .map((t) => (t.includes(';q=') ? t : `${t};q=0.9`))\n .join(', ')}`;\n const maxGetLength = config.maxGetLength ?? 2048;\n const retryWhile = config.retryWhile ?? ClientErrors.isTransient;\n\n /** Sends a request: applies headers, timeout and retries, checks the status. */\n const send = (\n request: HttpClientRequest.HttpClientRequest,\n options?: RequestOptions,\n accept: ReadonlyArray<number> = [],\n ): Effect.Effect<HttpClientResponse.HttpClientResponse, ClientErrors.SparqlClientError> => {\n const withHeaders = HttpClientRequest.setHeaders(request, {\n ...config.headers,\n ...options?.headers,\n });\n const timeout = options?.timeout ?? config.timeout;\n const attempt = http.execute(withHeaders).pipe(\n Effect.mapError(fromHttpClientError),\n Effect.flatMap(\n (\n response,\n ): Effect.Effect<\n HttpClientResponse.HttpClientResponse,\n ClientErrors.SparqlClientError\n > => {\n if (\n (response.status >= 200 && response.status < 300) ||\n accept.includes(response.status)\n ) {\n return Effect.succeed(response);\n }\n return response.text.pipe(\n Effect.orElseSucceed(() => ''),\n Effect.flatMap((body) =>\n Effect.fail(\n new ClientErrors.HttpStatusError({\n method: withHeaders.method,\n url: withHeaders.url,\n status: response.status,\n body: body.slice(0, MAX_ERROR_BODY),\n }),\n ),\n ),\n );\n },\n ),\n );\n const timed =\n timeout === undefined\n ? attempt\n : Effect.timeoutOrElse(attempt, {\n duration: timeout,\n orElse: () =>\n Effect.fail(\n new ClientErrors.TimeoutError({\n message: `${withHeaders.method} ${withHeaders.url} timed out after ${Duration.format(Duration.fromInputUnsafe(timeout))}`,\n }),\n ),\n });\n const retried =\n config.retry === undefined\n ? timed\n : Effect.retry(timed, { schedule: config.retry, while: retryWhile });\n return retried.pipe(\n Effect.withSpan('SparqlClient.request', {\n attributes: { 'http.method': withHeaders.method, 'http.url': withHeaders.url },\n }),\n );\n };\n\n const queryRequest = (\n query: QueryInput,\n accept: string,\n options?: QueryOptions,\n ): HttpClientRequest.HttpClientRequest => {\n const text = toSparql(query);\n const params: Array<[string, string]> = [\n ...(options?.defaultGraphs ?? []).map((g): [string, string] => [\n 'default-graph-uri',\n iriOf(g),\n ]),\n ...(options?.namedGraphs ?? []).map((g): [string, string] => ['named-graph-uri', iriOf(g)]),\n ];\n const method = options?.method ?? config.method ?? 'auto';\n const getUrlLength =\n config.endpoint.length +\n 7 +\n encodeURIComponent(text).length +\n params.reduce((n, [k, v]) => n + k.length + encodeURIComponent(v).length + 2, 0);\n const useGet = method === 'get' || (method === 'auto' && getUrlLength <= maxGetLength);\n const base = useGet\n ? HttpClientRequest.get(config.endpoint).pipe(\n HttpClientRequest.appendUrlParams([['query', text], ...params]),\n )\n : HttpClientRequest.post(config.endpoint).pipe(\n HttpClientRequest.appendUrlParams(params),\n HttpClientRequest.bodyText(text, 'application/sparql-query; charset=utf-8'),\n );\n return HttpClientRequest.setHeader(base, 'accept', accept);\n };\n\n const resultEvents = (\n response: HttpClientResponse.HttpClientResponse,\n ): Effect.Effect<\n Stream.Stream<ResultsStream.ResultEvent, ClientErrors.SparqlClientError>,\n ClientErrors.SparqlClientError\n > => {\n const mediaType = mediaTypeOf(response);\n const parsed = ResultsStream.parse(mediaType, bodyText(response));\n if (Option.isNone(parsed)) {\n return Effect.fail(\n new ClientErrors.UnsupportedMediaTypeError({\n contentType: mediaType,\n expected: resultsAccept.split(',').map(essence),\n }),\n );\n }\n return Effect.succeed(\n Stream.mapError(parsed.value, (e) =>\n isResultsParseError(e)\n ? new ClientErrors.MalformedResponseError({\n message: `Invalid ${e.format} results: ${e.message}`,\n contentType: mediaType,\n })\n : e,\n ),\n );\n };\n\n const graphQuads = (\n response: HttpClientResponse.HttpClientResponse,\n baseIri: string,\n ): Effect.Effect<\n Stream.Stream<Term.Quad, ClientErrors.SparqlClientError>,\n ClientErrors.SparqlClientError\n > => {\n const mediaType = mediaTypeOf(response);\n const parser = Serialization.parserFor(formats, mediaType);\n if (Option.isNone(parser)) {\n return Effect.fail(\n new ClientErrors.UnsupportedMediaTypeError({\n contentType: mediaType,\n expected: formats.parsers.map((p) => p.format.mediaType),\n }),\n );\n }\n return Effect.succeed(\n parser.value.parseStream(bodyText(response), { baseIri }).pipe(\n Stream.mapError((e) =>\n isRdfParseError(e)\n ? new ClientErrors.MalformedResponseError({\n message: Serialization.formatError(e),\n contentType: mediaType,\n })\n : e,\n ),\n Stream.map((q) =>\n Term.isDefaultGraph(q.graph)\n ? q\n : new Term.Quad(q.subject, q.predicate, q.object, Term.defaultGraph),\n ),\n ),\n );\n };\n\n const results: SparqlClientShape['results'] = (query, options) =>\n Stream.unwrap(\n Effect.flatMap(send(queryRequest(query, resultsAccept, options), options), resultEvents),\n ).pipe(Stream.withSpan('SparqlClient.results'));\n\n const selectBindings: SparqlClientShape['selectBindings'] = (query, options) =>\n Stream.flatMap(results(query, options), (item) => {\n return Match.value(item).pipe(\n Match.tag('Solution', (event) => Stream.succeed(event.bindings)),\n Match.tag('Variables', () => Stream.empty),\n Match.tag('Boolean', () =>\n Stream.fail(\n new ClientErrors.MalformedResponseError({\n message: 'Expected solutions but received a boolean result',\n }),\n ),\n ),\n Match.exhaustive,\n );\n });\n\n // Both overloads of `select` are this one implementation over `QueryInput`.\n function select<R extends string, O extends string>(\n query: QueryBuilder.Builder<'Select', R, O>,\n options?: QueryOptions,\n ): Stream.Stream<QueryBuilder.Row<R, O>, ClientErrors.SparqlClientError>;\n function select(\n query: string | Ast.Query,\n options?: QueryOptions,\n ): Stream.Stream<Row, ClientErrors.SparqlClientError>;\n function select(\n query: QueryInput,\n options?: QueryOptions,\n ): Stream.Stream<Partial<Row>, ClientErrors.SparqlClientError> {\n return Stream.map(selectBindings(query, options), B.toRecord);\n }\n\n const selectAll: SparqlClientShape['selectAll'] = (query, options) =>\n Effect.map(\n Stream.runFold(\n results(query, options),\n (): SelectAccumulator => ({ variables: [], bindings: [], boolean: false }),\n (acc, event) => {\n if (isVariablesEvent(event)) acc.variables = event.variables;\n else if (isSolutionEvent(event)) acc.bindings.push(event.bindings);\n else acc.boolean = true;\n return acc;\n },\n ),\n (acc): Results.ResultSet => ({\n _tag: 'ResultSet',\n variables: acc.variables,\n bindings: acc.bindings,\n }),\n );\n\n const ask: SparqlClientShape['ask'] = (query, options) =>\n Effect.flatMap(\n Stream.runHead(Stream.filter(results(query, options), isBooleanEvent)),\n (event) =>\n Option.isSome(event)\n ? Effect.succeed(event.value.value)\n : Effect.fail(\n new ClientErrors.MalformedResponseError({ message: 'Expected a boolean result' }),\n ),\n ).pipe(Effect.withSpan('SparqlClient.ask'));\n\n const construct: SparqlClientShape['construct'] = (query, options) =>\n Stream.unwrap(\n Effect.flatMap(send(queryRequest(query, graphAccept, options), options), (response) =>\n graphQuads(response, config.endpoint),\n ),\n ).pipe(Stream.withSpan('SparqlClient.construct'));\n\n const constructDataset: SparqlClientShape['constructDataset'] = (query, options) =>\n Effect.map(Stream.runCollect(construct(query, options)), Dataset.fromIterable);\n\n const query: SparqlClientShape['query'] = (q, options) =>\n Effect.gen(function* () {\n const response = yield* send(queryRequest(q, anyAccept, options), options);\n const mediaType = mediaTypeOf(response);\n if (Option.isSome(ResultsStream.parserFor(mediaType))) {\n const events = yield* Stream.runCollect(yield* resultEvents(response));\n const boolean = Arr.findFirst(events, isBooleanEvent);\n if (Option.isSome(boolean)) {\n return { _tag: 'Boolean', value: boolean.value.value } as const;\n }\n return {\n _tag: 'ResultSet',\n variables: Option.match(Arr.findFirst(events, isVariablesEvent), {\n onNone: () => [],\n onSome: (e) => e.variables,\n }),\n bindings: Arr.filterMap(events, (e) =>\n isSolutionEvent(e) ? Result.succeed(e.bindings) : Result.failVoid,\n ),\n } as const;\n }\n const quads = yield* Stream.runCollect(yield* graphQuads(response, config.endpoint));\n return { _tag: 'Graph', dataset: Dataset.fromIterable(quads) } as const;\n }).pipe(Effect.withSpan('SparqlClient.query'));\n\n const update: SparqlClientShape['update'] = (u, options) => {\n const params: Array<[string, string]> = [\n ...(options?.usingGraphs ?? []).map((g): [string, string] => ['using-graph-uri', iriOf(g)]),\n ...(options?.usingNamedGraphs ?? []).map((g): [string, string] => [\n 'using-named-graph-uri',\n iriOf(g),\n ]),\n ];\n const request = HttpClientRequest.post(config.updateEndpoint ?? config.endpoint).pipe(\n HttpClientRequest.appendUrlParams(params),\n HttpClientRequest.bodyText(toSparql(u), 'application/sparql-update; charset=utf-8'),\n );\n return Effect.flatMap(send(request, options), (response) =>\n Effect.mapError(Effect.asVoid(response.arrayBuffer), fromHttpClientError),\n ).pipe(Effect.withSpan('SparqlClient.update'));\n };\n\n // --- Graph Store -----------------------------------------------------------\n\n const graphStore = Effect.suspend(() =>\n config.graphStoreEndpoint === undefined\n ? Effect.fail(\n new ClientErrors.ConfigurationError({\n message: 'Graph Store operations need a graphStoreEndpoint',\n }),\n )\n : Effect.succeed(config.graphStoreEndpoint),\n );\n\n const graphRequest = (method: 'GET' | 'HEAD' | 'PUT' | 'POST' | 'DELETE', graph: GraphTarget) =>\n Effect.map(graphStore, (endpoint) =>\n HttpClientRequest.make(method)(endpoint).pipe(\n HttpClientRequest.appendUrlParams(\n graph === 'default' ? [['default', '']] : [['graph', graph.value]],\n ),\n ),\n );\n\n const getGraph: SparqlClientShape['getGraph'] = (graph, options) =>\n Stream.unwrap(\n Effect.gen(function* () {\n const endpoint = yield* graphStore;\n const request = HttpClientRequest.setHeader(\n yield* graphRequest('GET', graph),\n 'accept',\n graphAccept,\n );\n const response = yield* send(request, options);\n return yield* graphQuads(response, graphBase(graph, endpoint));\n }),\n ).pipe(Stream.withSpan('SparqlClient.getGraph'));\n\n const getGraphDataset: SparqlClientShape['getGraphDataset'] = (graph, options) =>\n Effect.map(Stream.runCollect(getGraph(graph, options)), Dataset.fromIterable);\n\n const hasGraph: SparqlClientShape['hasGraph'] = (graph, options) =>\n Effect.gen(function* () {\n const request = HttpClientRequest.setHeader(\n yield* graphRequest('HEAD', graph),\n 'accept',\n graphAccept,\n );\n const response = yield* send(request, options, [404]);\n return response.status !== 404;\n }).pipe(Effect.withSpan('SparqlClient.hasGraph'));\n\n const serialize = (triples: Iterable<Term.Quad>, mediaType: string) =>\n Effect.gen(function* () {\n const serializer = Serialization.serializerFor(formats, mediaType);\n if (Option.isNone(serializer)) {\n return yield* new ClientErrors.ConfigurationError({\n message: `No serializer for ${mediaType}`,\n });\n }\n const quads = Array.from(triples, (q) =>\n q.graph._tag === 'DefaultGraph'\n ? q\n : new Term.Quad(q.subject, q.predicate, q.object, Term.defaultGraph),\n );\n return yield* serializer.value\n .serialize(quads)\n .pipe(\n Effect.mapError(\n (e) =>\n new ClientErrors.ConfigurationError({ message: `Cannot serialise: ${e.message}` }),\n ),\n );\n });\n\n const upload = (\n method: 'PUT' | 'POST',\n graph: GraphTarget,\n triples: Iterable<Term.Quad>,\n options?: UploadOptions,\n ) =>\n Effect.gen(function* () {\n const mediaType = options?.mediaType ?? config.graphMediaType ?? 'application/n-triples';\n const body = yield* serialize(triples, mediaType);\n const request = HttpClientRequest.bodyText(\n yield* graphRequest(method, graph),\n body,\n `${mediaType}; charset=utf-8`,\n );\n const response = yield* send(request, options);\n yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);\n });\n\n const putGraph: SparqlClientShape['putGraph'] = (graph, triples, options) =>\n upload('PUT', graph, triples, options).pipe(Effect.withSpan('SparqlClient.putGraph'));\n\n const postGraph: SparqlClientShape['postGraph'] = (graph, triples, options) =>\n upload('POST', graph, triples, options).pipe(Effect.withSpan('SparqlClient.postGraph'));\n\n const createGraph: SparqlClientShape['createGraph'] = (triples, options) =>\n Effect.gen(function* () {\n const endpoint = yield* graphStore;\n const mediaType = options?.mediaType ?? config.graphMediaType ?? 'application/n-triples';\n const body = yield* serialize(triples, mediaType);\n const response = yield* send(\n HttpClientRequest.post(endpoint).pipe(\n HttpClientRequest.bodyText(body, `${mediaType}; charset=utf-8`),\n ),\n options,\n );\n yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);\n const location = response.headers['location'];\n if (location === undefined) {\n return yield* new ClientErrors.MalformedResponseError({\n message: 'The graph store did not return a Location header',\n });\n }\n return Term.namedNode(new URL(location, endpoint).href);\n }).pipe(Effect.withSpan('SparqlClient.createGraph'));\n\n const deleteGraph: SparqlClientShape['deleteGraph'] = (graph, options) =>\n Effect.gen(function* () {\n const response = yield* send(yield* graphRequest('DELETE', graph), options);\n yield* Effect.mapError(response.arrayBuffer, fromHttpClientError);\n }).pipe(Effect.withSpan('SparqlClient.deleteGraph'));\n\n return SparqlClient.of({\n config,\n select,\n selectBindings,\n results,\n selectAll,\n ask,\n construct,\n describe: construct,\n constructDataset,\n query,\n update,\n getGraph,\n getGraphDataset,\n hasGraph,\n putGraph,\n postGraph,\n createGraph,\n deleteGraph,\n });\n });\n\n/**\n * A layer providing the client (requires an `HttpClient`, e.g.\n * `FetchHttpClient.layer`).\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layer = (config: Config): Layer.Layer<SparqlClient, never, HttpClient.HttpClient> =>\n Layer.effect(SparqlClient, make(config));\n\n// -----------------------------------------------------------------------------\n// Accessors\n// -----------------------------------------------------------------------------\n\n/**\n * The type of the {@link select} accessor: `SparqlClientShape['select']`\n * with the `SparqlClient` taken from the context.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport interface SelectAccessor {\n <R extends string, O extends string>(\n query: QueryBuilder.Builder<'Select', R, O>,\n options?: QueryOptions,\n ): Stream.Stream<QueryBuilder.Row<R, O>, ClientErrors.SparqlClientError, SparqlClient>;\n (\n query: string | Ast.Query,\n options?: QueryOptions,\n ): Stream.Stream<Row, ClientErrors.SparqlClientError, SparqlClient>;\n}\n\n/**\n * Streams the rows of a `SELECT` query with the `SparqlClient` from the\n * context. Builder queries produce typed rows.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const select: SelectAccessor = (\n query: QueryBuilder.Builder<'Select', string, string> | string | Ast.Query,\n options?: QueryOptions,\n) =>\n Stream.unwrap(\n Effect.map(Effect.service(SparqlClient), (c) =>\n !(query instanceof QueryBuilder.Builder)\n ? c.select(query, options)\n : c.select(query, options),\n ),\n );\n\n/**\n * Streams the rows of a `SELECT` query decoded with a schema (whose fields\n * are typically `TermSchema` codecs).\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const decode = <A, RD>(\n query: QueryInput,\n schema: Schema.Decoder<A, RD>,\n options?: QueryOptions,\n): Stream.Stream<A, ClientErrors.SparqlClientError | Schema.SchemaError, SparqlClient | RD> =>\n Stream.mapEffect(\n Stream.unwrap(\n Effect.map(Effect.service(SparqlClient), (c) => c.selectBindings(query, options)),\n ),\n (b) => Schema.decodeUnknownEffect(schema)(B.toRecord(b)),\n );\n\n/**\n * Evaluates an `ASK` query with the `SparqlClient` from the context.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const ask = (\n query: QueryInput,\n options?: QueryOptions,\n): Effect.Effect<boolean, ClientErrors.SparqlClientError, SparqlClient> =>\n Effect.flatMap(Effect.service(SparqlClient), (c) => c.ask(query, options));\n\n/**\n * Streams the triples of a `CONSTRUCT` / `DESCRIBE` query with the\n * `SparqlClient` from the context.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const construct = (\n query: QueryInput,\n options?: QueryOptions,\n): Stream.Stream<Term.Quad, ClientErrors.SparqlClientError, SparqlClient> =>\n Stream.unwrap(Effect.map(Effect.service(SparqlClient), (c) => c.construct(query, options)));\n\n/**\n * Executes an update with the `SparqlClient` from the context.\n *\n * @since 0.1.0\n * @category accessors\n */\nexport const update = (\n input: UpdateInput,\n options?: UpdateOptions,\n): Effect.Effect<void, ClientErrors.SparqlClientError, SparqlClient> =>\n Effect.flatMap(Effect.service(SparqlClient), (c) => c.update(input, options));\n"],"mappings":"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"}