@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,258 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import * as Option from "effect/Option";
3
+ import * as Ascii from "@thomasfosterau/effect-parse/Ascii";
4
+ import * as Parser from "@thomasfosterau/effect-parse/Parser";
5
+ import * as Token from "@thomasfosterau/effect-parse/Token";
6
+ // src/ntriples/Grammar.ts
7
+ /**
8
+ * The N-Triples grammar's terminals as `@thomasfosterau/effect-parse`
9
+ * parsers over strings, for the grammars that include them: N-Quads,
10
+ * Turtle and TriG (whose `Grammar` module re-exports these and adds its
11
+ * own), and through Turtle N3, SPARQL and ShExC. Names follow the grammar:
12
+ * `iriRef` is `IRIREF`, `blankNodeLabel` is `BLANK_NODE_LABEL`, and so on.
13
+ *
14
+ * The character classes are the token-set counterparts of the `Lexical`
15
+ * predicates (`pnCharsBase` and `Lexical.isPnCharsBase` accept the same
16
+ * code points). String-valued terminals return their *value*: escapes are
17
+ * decoded and delimiters removed; IRIs are not resolved.
18
+ *
19
+ * @since 0.1.0
20
+ */
21
+ var Grammar_exports = /* @__PURE__ */ __exportAll({
22
+ alpha: () => alpha,
23
+ alphanumeric: () => alphanumeric,
24
+ blankNodeLabel: () => blankNodeLabel,
25
+ digit: () => digit,
26
+ dottedRun: () => dottedRun,
27
+ dottedTail: () => dottedTail,
28
+ echar: () => echar,
29
+ hex: () => hex,
30
+ iriExcluded: () => iriExcluded,
31
+ iriRef: () => iriRef,
32
+ langDir: () => langDir,
33
+ langTag: () => langTag,
34
+ pnChars: () => pnChars,
35
+ pnCharsBase: () => pnCharsBase,
36
+ pnCharsU: () => pnCharsU,
37
+ stringEscape: () => stringEscape,
38
+ stringLiteralQuote: () => stringLiteralQuote,
39
+ uchar: () => uchar,
40
+ ucharEscape: () => ucharEscape
41
+ });
42
+ /**
43
+ * `[0-9]`
44
+ *
45
+ * @since 0.1.0
46
+ * @category character classes
47
+ */
48
+ const digit = Token.range("0", "9");
49
+ /**
50
+ * `HEX`: `[0-9A-Fa-f]`
51
+ *
52
+ * @since 0.1.0
53
+ * @category character classes
54
+ */
55
+ const hex = [
56
+ digit,
57
+ Token.range("a", "f"),
58
+ Token.range("A", "F")
59
+ ];
60
+ /**
61
+ * `[A-Za-z]`
62
+ *
63
+ * @since 0.1.0
64
+ * @category character classes
65
+ */
66
+ const alpha = [Token.range("a", "z"), Token.range("A", "Z")];
67
+ /**
68
+ * `[A-Za-z0-9]`
69
+ *
70
+ * @since 0.1.0
71
+ * @category character classes
72
+ */
73
+ const alphanumeric = [alpha, digit];
74
+ /**
75
+ * `PN_CHARS_BASE`
76
+ *
77
+ * @since 0.1.0
78
+ * @category character classes
79
+ */
80
+ const pnCharsBase = [
81
+ alpha,
82
+ Token.range("À", "Ö"),
83
+ Token.range("Ø", "ö"),
84
+ Token.range("ø", "˿"),
85
+ Token.range("Ͱ", "ͽ"),
86
+ Token.range("Ϳ", "῿"),
87
+ Token.range("‌", "‍"),
88
+ Token.range("⁰", "↏"),
89
+ Token.range("Ⰰ", "⿯"),
90
+ Token.range("、", "퟿"),
91
+ Token.range("豈", "﷏"),
92
+ Token.range("ﷰ", "�"),
93
+ Token.range("𐀀", "󯿿")
94
+ ];
95
+ /**
96
+ * `PN_CHARS_U`: `PN_CHARS_BASE | '_'`
97
+ *
98
+ * @since 0.1.0
99
+ * @category character classes
100
+ */
101
+ const pnCharsU = [pnCharsBase, "_"];
102
+ /**
103
+ * `PN_CHARS`
104
+ *
105
+ * @since 0.1.0
106
+ * @category character classes
107
+ */
108
+ const pnChars = [
109
+ pnCharsU,
110
+ "-·",
111
+ digit,
112
+ Token.range("̀", "ͯ"),
113
+ Token.range("‿", "⁀")
114
+ ];
115
+ /**
116
+ * The characters `IRIREF` excludes (besides `\`, which starts a `UCHAR`):
117
+ * `[#x00-#x20<>"{}|^`]`.
118
+ *
119
+ * @since 0.1.0
120
+ * @category character classes
121
+ */
122
+ const iriExcluded = [Token.range("\0", " "), "<>\"{}|^`"];
123
+ /**
124
+ * Runs of `chars` in which dots may appear, but not at the end: the
125
+ * `((chars | '.')* chars)?` tail of `PN_PREFIX`, `PN_LOCAL` and
126
+ * `BLANK_NODE_LABEL`.
127
+ *
128
+ * @since 0.1.0
129
+ * @category combinators
130
+ */
131
+ const dottedTail = (chars) => Parser.asVoid(Parser.repeat(Parser.alt(Parser.repeat(chars, { min: 1 }), Parser.seq(Token.takeWhile(".", { min: 1 }), Parser.peek(chars)))));
132
+ /**
133
+ * The same language as `dottedTail(alt(oneOf(set), extra))`, written so that
134
+ * a compiled grammar scans each run of `set` in one tight loop: a name's
135
+ * characters, with dots allowed between them but not at the end. `extra`
136
+ * matches the other things a name may contain (`PLX` in `PN_LOCAL`).
137
+ *
138
+ * @since 0.1.0
139
+ * @category combinators
140
+ * @example
141
+ * ```ts
142
+ * import * as Parser from '@thomasfosterau/effect-parse/Parser';
143
+ * import * as Token from '@thomasfosterau/effect-parse/Token';
144
+ * import { dottedRun, pnChars } from './Grammar.ts';
145
+ *
146
+ * const name = Parser.taken(Parser.seq(Token.oneOf(pnChars), dottedRun(pnChars)));
147
+ * // `a.b.` reads as `a.b`, leaving the final dot
148
+ * ```
149
+ */
150
+ const dottedRun = (set, extra) => {
151
+ const one = Token.oneOf(set);
152
+ const chars = extra === void 0 ? one : Parser.alt(one, extra);
153
+ const dots = Parser.seq(Token.takeWhile(".", { min: 1 }), Parser.peek(chars));
154
+ const run = Token.takeWhile(set, { min: 1 });
155
+ return Parser.asVoid(Parser.repeat(extra === void 0 ? Parser.alt(run, dots) : Parser.alt(run, extra, dots)));
156
+ };
157
+ const codePoint = (digits) => Token.takeWhile(hex, digits).pipe(Parser.expected(`${digits} hex digits`), Parser.map((h) => parseInt(h, 16)), Parser.filter((cp) => cp <= 1114111), Parser.map((cp) => String.fromCodePoint(cp)));
158
+ /**
159
+ * What follows the backslash of a `UCHAR` (`uXXXX` or `UXXXXXXXX`),
160
+ * returning the character. For use as the escape of `Ascii.escaped`.
161
+ *
162
+ * @since 0.1.0
163
+ * @category escapes
164
+ */
165
+ const ucharEscape = Parser.dispatch(Token.any, {
166
+ u: Parser.cut(codePoint(4)),
167
+ U: Parser.cut(codePoint(8))
168
+ }).pipe(Parser.expected("a unicode escape"));
169
+ /**
170
+ * What follows the backslash of an `ECHAR` or a `UCHAR`, returning the
171
+ * character. For use as the escape of `Ascii.escaped`.
172
+ *
173
+ * @since 0.1.0
174
+ * @category escapes
175
+ */
176
+ const stringEscape = Parser.dispatch(Token.any, {
177
+ t: Parser.succeed(" "),
178
+ b: Parser.succeed("\b"),
179
+ n: Parser.succeed("\n"),
180
+ r: Parser.succeed("\r"),
181
+ f: Parser.succeed("\f"),
182
+ "\"": Parser.succeed("\""),
183
+ "'": Parser.succeed("'"),
184
+ "\\": Parser.succeed("\\"),
185
+ u: Parser.cut(codePoint(4)),
186
+ U: Parser.cut(codePoint(8))
187
+ }).pipe(Parser.expected("an escape sequence"));
188
+ /**
189
+ * `UCHAR`: `\uXXXX` or `\UXXXXXXXX`, returning the character.
190
+ *
191
+ * @since 0.1.0
192
+ * @category escapes
193
+ */
194
+ const uchar = Parser.preceded(Token.literal("\\"), ucharEscape);
195
+ /**
196
+ * `ECHAR`: `\` followed by one of `tbnrf"'\`, returning the character.
197
+ *
198
+ * @since 0.1.0
199
+ * @category escapes
200
+ */
201
+ const echar = Parser.preceded(Token.literal("\\"), Parser.dispatch(Token.any, {
202
+ t: Parser.succeed(" "),
203
+ b: Parser.succeed("\b"),
204
+ n: Parser.succeed("\n"),
205
+ r: Parser.succeed("\r"),
206
+ f: Parser.succeed("\f"),
207
+ "\"": Parser.succeed("\""),
208
+ "'": Parser.succeed("'"),
209
+ "\\": Parser.succeed("\\")
210
+ }));
211
+ /**
212
+ * `IRIREF`, returning the IRI between the angle brackets with its `UCHAR`s
213
+ * decoded (not resolved against a base).
214
+ *
215
+ * @since 0.1.0
216
+ * @category terminals
217
+ */
218
+ const iriRef = Parser.delimited(Token.literal("<"), Ascii.escaped(Token.takeTill([iriExcluded, "\\"], { min: 1 }), "\\", ucharEscape), Token.literal(">"));
219
+ /**
220
+ * `BLANK_NODE_LABEL`, returning the label after `_:`.
221
+ *
222
+ * @since 0.1.0
223
+ * @category terminals
224
+ */
225
+ const blankNodeLabel = Parser.preceded(Token.literal("_:"), Parser.taken(Parser.seq(Token.oneOf([pnCharsU, digit]), dottedRun(pnChars))));
226
+ /**
227
+ * `STRING_LITERAL_QUOTE`, returning the value.
228
+ *
229
+ * @since 0.1.0
230
+ * @category terminals
231
+ */
232
+ const stringLiteralQuote = Parser.delimited(Token.literal("\""), Parser.cut(Ascii.escaped(Token.takeTill([
233
+ "\\",
234
+ "\"",
235
+ "\n\r"
236
+ ], { min: 1 }), "\\", stringEscape)), Parser.cut(Token.literal("\"")));
237
+ const languageTag = Parser.taken(Parser.seq(Token.takeWhile(alpha, { min: 1 }), Parser.repeat(Parser.preceded(Token.literal("-"), Token.takeWhile(alphanumeric, { min: 1 })))));
238
+ /**
239
+ * `LANGTAG` (RDF 1.1), returning the tag after `@`.
240
+ *
241
+ * @since 0.1.0
242
+ * @category terminals
243
+ */
244
+ const langTag = Parser.preceded(Token.literal("@"), languageTag);
245
+ /**
246
+ * `LANG_DIR` (RDF 1.2): a language tag optionally followed by `--ltr` or
247
+ * `--rtl`.
248
+ *
249
+ * @since 0.1.0
250
+ * @category terminals
251
+ */
252
+ const langDir = Parser.seq(langTag, Parser.opt(Parser.preceded(Token.literal("--"), Parser.alt(Token.literal("ltr"), Token.literal("rtl"))))).pipe(Parser.map(([language, direction]) => ({
253
+ language,
254
+ direction: Option.getOrUndefined(direction)
255
+ })));
256
+ export { stringEscape as _, digit as a, ucharEscape as b, echar as c, iriRef as d, langDir as f, pnCharsU as g, pnCharsBase as h, blankNodeLabel as i, hex as l, pnChars as m, alpha as n, dottedRun as o, langTag as p, alphanumeric as r, dottedTail as s, Grammar_exports as t, iriExcluded as u, stringLiteralQuote as v, uchar as y };
257
+
258
+ //# sourceMappingURL=Grammar-mQ8CgE1M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grammar-mQ8CgE1M.mjs","names":[],"sources":["../src/ntriples/Grammar.ts"],"sourcesContent":["/**\n * The N-Triples grammar's terminals as `@thomasfosterau/effect-parse`\n * parsers over strings, for the grammars that include them: N-Quads,\n * Turtle and TriG (whose `Grammar` module re-exports these and adds its\n * own), and through Turtle N3, SPARQL and ShExC. Names follow the grammar:\n * `iriRef` is `IRIREF`, `blankNodeLabel` is `BLANK_NODE_LABEL`, and so on.\n *\n * The character classes are the token-set counterparts of the `Lexical`\n * predicates (`pnCharsBase` and `Lexical.isPnCharsBase` accept the same\n * code points). String-valued terminals return their *value*: escapes are\n * decoded and delimiters removed; IRIs are not resolved.\n *\n * @since 0.1.0\n */\nimport * as Ascii from '@thomasfosterau/effect-parse/Ascii';\nimport * as Parser from '@thomasfosterau/effect-parse/Parser';\nimport * as Token from '@thomasfosterau/effect-parse/Token';\nimport * as Option from 'effect/Option';\n\n// -----------------------------------------------------------------------------\n// Character classes\n// -----------------------------------------------------------------------------\n\n/**\n * `[0-9]`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const digit: Token.StringTokenSet = Token.range('0', '9');\n\n/**\n * `HEX`: `[0-9A-Fa-f]`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const hex: Token.StringTokenSet = [digit, Token.range('a', 'f'), Token.range('A', 'F')];\n\n/**\n * `[A-Za-z]`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const alpha: Token.StringTokenSet = [Token.range('a', 'z'), Token.range('A', 'Z')];\n\n/**\n * `[A-Za-z0-9]`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const alphanumeric: Token.StringTokenSet = [alpha, digit];\n\n/**\n * `PN_CHARS_BASE`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const pnCharsBase: Token.StringTokenSet = [\n alpha,\n Token.range('À', 'Ö'),\n Token.range('Ø', 'ö'),\n Token.range('ø', '˿'),\n Token.range('Ͱ', 'ͽ'),\n Token.range('Ϳ', '῿'),\n Token.range('‌', '‍'),\n Token.range('⁰', '↏'),\n Token.range('Ⰰ', '⿯'),\n Token.range('、', '퟿'),\n Token.range('豈', '﷏'),\n Token.range('ﷰ', '�'),\n Token.range('\\u{10000}', '\\u{effff}'),\n];\n\n/**\n * `PN_CHARS_U`: `PN_CHARS_BASE | '_'`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const pnCharsU: Token.StringTokenSet = [pnCharsBase, '_'];\n\n/**\n * `PN_CHARS`\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const pnChars: Token.StringTokenSet = [\n pnCharsU,\n '-·',\n digit,\n Token.range('̀', 'ͯ'),\n Token.range('‿', '⁀'),\n];\n\n/**\n * The characters `IRIREF` excludes (besides `\\`, which starts a `UCHAR`):\n * `[#x00-#x20<>\"{}|^`]`.\n *\n * @since 0.1.0\n * @category character classes\n */\nexport const iriExcluded: Token.StringTokenSet = [Token.range('\\u0000', ' '), '<>\"{}|^`'];\n\n/**\n * Runs of `chars` in which dots may appear, but not at the end: the\n * `((chars | '.')* chars)?` tail of `PN_PREFIX`, `PN_LOCAL` and\n * `BLANK_NODE_LABEL`.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const dottedTail = <E, R>(chars: Parser.Parser<unknown, E, R>): Parser.Parser<void, E, R> =>\n Parser.asVoid(\n Parser.repeat(\n Parser.alt(\n Parser.repeat(chars, { min: 1 }),\n Parser.seq(Token.takeWhile('.', { min: 1 }), Parser.peek(chars)),\n ),\n ),\n );\n\n/**\n * The same language as `dottedTail(alt(oneOf(set), extra))`, written so that\n * a compiled grammar scans each run of `set` in one tight loop: a name's\n * characters, with dots allowed between them but not at the end. `extra`\n * matches the other things a name may contain (`PLX` in `PN_LOCAL`).\n *\n * @since 0.1.0\n * @category combinators\n * @example\n * ```ts\n * import * as Parser from '@thomasfosterau/effect-parse/Parser';\n * import * as Token from '@thomasfosterau/effect-parse/Token';\n * import { dottedRun, pnChars } from './Grammar.ts';\n *\n * const name = Parser.taken(Parser.seq(Token.oneOf(pnChars), dottedRun(pnChars)));\n * // `a.b.` reads as `a.b`, leaving the final dot\n * ```\n */\nexport const dottedRun = <E = never, R = never>(\n set: Token.StringTokenSet,\n extra?: Parser.Parser<unknown, E, R>,\n): Parser.Parser<void, E, R> => {\n const one = Token.oneOf(set);\n const chars: Parser.Parser<unknown, E, R> = extra === undefined ? one : Parser.alt(one, extra);\n const dots = Parser.seq(Token.takeWhile('.', { min: 1 }), Parser.peek(chars));\n const run = Token.takeWhile(set, { min: 1 });\n return Parser.asVoid(\n Parser.repeat(extra === undefined ? Parser.alt(run, dots) : Parser.alt(run, extra, dots)),\n );\n};\n\n// -----------------------------------------------------------------------------\n// Escapes\n// -----------------------------------------------------------------------------\n\nconst codePoint = (digits: number): Parser.Parser<string> =>\n Token.takeWhile(hex, digits).pipe(\n Parser.expected(`${digits} hex digits`),\n Parser.map((h) => parseInt(h, 16)),\n Parser.filter((cp) => cp <= 0x10ffff),\n Parser.map((cp) => String.fromCodePoint(cp)),\n );\n\n/**\n * What follows the backslash of a `UCHAR` (`uXXXX` or `UXXXXXXXX`),\n * returning the character. For use as the escape of `Ascii.escaped`.\n *\n * @since 0.1.0\n * @category escapes\n */\nexport const ucharEscape: Parser.Parser<string> = Parser.dispatch(Token.any, {\n u: Parser.cut(codePoint(4)),\n U: Parser.cut(codePoint(8)),\n}).pipe(Parser.expected('a unicode escape'));\n\n/**\n * What follows the backslash of an `ECHAR` or a `UCHAR`, returning the\n * character. For use as the escape of `Ascii.escaped`.\n *\n * @since 0.1.0\n * @category escapes\n */\nexport const stringEscape: Parser.Parser<string> = Parser.dispatch(Token.any, {\n t: Parser.succeed('\\t'),\n b: Parser.succeed('\\b'),\n n: Parser.succeed('\\n'),\n r: Parser.succeed('\\r'),\n f: Parser.succeed('\\f'),\n '\"': Parser.succeed('\"'),\n \"'\": Parser.succeed(\"'\"),\n '\\\\': Parser.succeed('\\\\'),\n u: Parser.cut(codePoint(4)),\n U: Parser.cut(codePoint(8)),\n}).pipe(Parser.expected('an escape sequence'));\n\n/**\n * `UCHAR`: `\\uXXXX` or `\\UXXXXXXXX`, returning the character.\n *\n * @since 0.1.0\n * @category escapes\n */\nexport const uchar: Parser.Parser<string> = Parser.preceded(Token.literal('\\\\'), ucharEscape);\n\n/**\n * `ECHAR`: `\\` followed by one of `tbnrf\"'\\`, returning the character.\n *\n * @since 0.1.0\n * @category escapes\n */\nexport const echar: Parser.Parser<string> = Parser.preceded(\n Token.literal('\\\\'),\n Parser.dispatch(Token.any, {\n t: Parser.succeed('\\t'),\n b: Parser.succeed('\\b'),\n n: Parser.succeed('\\n'),\n r: Parser.succeed('\\r'),\n f: Parser.succeed('\\f'),\n '\"': Parser.succeed('\"'),\n \"'\": Parser.succeed(\"'\"),\n '\\\\': Parser.succeed('\\\\'),\n }),\n);\n\n// -----------------------------------------------------------------------------\n// IRIs and names\n// -----------------------------------------------------------------------------\n\n/**\n * `IRIREF`, returning the IRI between the angle brackets with its `UCHAR`s\n * decoded (not resolved against a base).\n *\n * @since 0.1.0\n * @category terminals\n */\nexport const iriRef: Parser.Parser<string> = Parser.delimited(\n Token.literal('<'),\n Ascii.escaped(Token.takeTill([iriExcluded, '\\\\'], { min: 1 }), '\\\\', ucharEscape),\n Token.literal('>'),\n);\n\n/**\n * `BLANK_NODE_LABEL`, returning the label after `_:`.\n *\n * @since 0.1.0\n * @category terminals\n */\nexport const blankNodeLabel: Parser.Parser<string> = Parser.preceded(\n Token.literal('_:'),\n Parser.taken(Parser.seq(Token.oneOf([pnCharsU, digit]), dottedRun(pnChars))),\n);\n\n// -----------------------------------------------------------------------------\n// Literals\n// -----------------------------------------------------------------------------\n\n/**\n * `STRING_LITERAL_QUOTE`, returning the value.\n *\n * @since 0.1.0\n * @category terminals\n */\nexport const stringLiteralQuote: Parser.Parser<string> = Parser.delimited(\n Token.literal('\"'),\n Parser.cut(Ascii.escaped(Token.takeTill(['\\\\', '\"', '\\n\\r'], { min: 1 }), '\\\\', stringEscape)),\n Parser.cut(Token.literal('\"')),\n);\n\nconst languageTag = Parser.taken(\n Parser.seq(\n Token.takeWhile(alpha, { min: 1 }),\n Parser.repeat(Parser.preceded(Token.literal('-'), Token.takeWhile(alphanumeric, { min: 1 }))),\n ),\n);\n\n/**\n * `LANGTAG` (RDF 1.1), returning the tag after `@`.\n *\n * @since 0.1.0\n * @category terminals\n */\nexport const langTag: Parser.Parser<string> = Parser.preceded(Token.literal('@'), languageTag);\n\n/**\n * A language tag with its base direction.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface LangDir {\n readonly language: string;\n readonly direction: 'ltr' | 'rtl' | undefined;\n}\n\n/**\n * `LANG_DIR` (RDF 1.2): a language tag optionally followed by `--ltr` or\n * `--rtl`.\n *\n * @since 0.1.0\n * @category terminals\n */\nexport const langDir: Parser.Parser<LangDir> = Parser.seq(\n langTag,\n Parser.opt(\n Parser.preceded(Token.literal('--'), Parser.alt(Token.literal('ltr'), Token.literal('rtl'))),\n ),\n).pipe(\n Parser.map(([language, direction]) => ({\n language,\n direction: Option.getOrUndefined(direction),\n })),\n);\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { d as NamedNode } from "./Term-B_4ezyXq.mjs";
2
+ import { a as Formats } from "./Serialization-Df8iVauT.mjs";
3
+ import { a as QuadStore } from "./Store-D0jmVfb3.mjs";
4
+ import { t as ProtocolError } from "./ProtocolErrors-Ckfejnl6.mjs";
5
+ import { i as Resolved } from "./Options-BommQwP9.mjs";
6
+ import * as Effect from "effect/Effect";
7
+ import * as HttpServerRequest from "effect/http/HttpServerRequest";
8
+ import * as HttpServerResponse from "effect/http/HttpServerResponse";
9
+ declare namespace GraphStore_d_exports {
10
+ export { Target, handle, target };
11
+ }
12
+ /**
13
+ * The graph a Graph Store request operates on.
14
+ *
15
+ * @since 0.1.0
16
+ * @category models
17
+ */
18
+ type Target = {
19
+ readonly _tag: 'Default';
20
+ } | {
21
+ readonly _tag: 'Named';
22
+ readonly graph: NamedNode;
23
+ } |
24
+ /** The graph store itself (a `POST` creates a new graph). */
25
+ {
26
+ readonly _tag: 'Store';
27
+ };
28
+ /**
29
+ * Determines the target graph of a request to the graph store whose root URL
30
+ * is `root`.
31
+ *
32
+ * @since 0.1.0
33
+ * @category decoding
34
+ */
35
+ declare const target: (url: URL, root: string) => Effect.Effect<Target, ProtocolError>;
36
+ /**
37
+ * Handles a Graph Store Protocol request. `root` is the path of the graph
38
+ * store.
39
+ *
40
+ * @since 0.1.0
41
+ * @category handlers
42
+ */
43
+ declare const handle: (options: Resolved, root: string) => Effect.Effect<HttpServerResponse.HttpServerResponse, ProtocolError, HttpServerRequest.HttpServerRequest | QuadStore | Formats>;
44
+ export { target as i, Target as n, handle as r, GraphStore_d_exports as t };
45
+ //# sourceMappingURL=GraphStore-DhUa4nFO.d.mts.map
@@ -0,0 +1,212 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { O as defaultGraph, Z as namedNode, d as Quad } from "./Term-CFLG1qu4.mjs";
3
+ import { i as isAbsolute, l as resolve } from "./Iri-Cr92gsQV.mjs";
4
+ import { s as make } from "./PrefixMap-BHFPDLO-.mjs";
5
+ import { _ as parserForExtension, a as formatError, g as parserFor, t as Formats } from "./Serialization-DP9H5bYQ.mjs";
6
+ import { t as QuadStore } from "./Store-DH3Ow1GO.mjs";
7
+ import { a as internal, c as notFound, d as unsupportedMediaType, o as methodNotAllowed, r as badRequest, s as notAcceptable } from "./ProtocolErrors-czDPVcX5.mjs";
8
+ import { a as serializerMediaTypes, i as negotiateSerializer } from "./ServerFormats-CrRnjjf6.mjs";
9
+ import { n as requestPath, r as requestUrl } from "./Options-BLBGL4HE.mjs";
10
+ import { c as parseContentType, l as searchParams, s as isNonUtf8 } from "./Protocol-BA7OkNgp.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 Effect from "effect/Effect";
15
+ import * as Match from "effect/Match";
16
+ import * as Stream from "effect/Stream";
17
+ import * as HttpServerRequest from "effect/http/HttpServerRequest";
18
+ import * as HttpServerResponse from "effect/http/HttpServerResponse";
19
+ // src/sparql/GraphStore.ts
20
+ /**
21
+ * The SPARQL 1.1 Graph Store HTTP Protocol: `GET`, `HEAD`, `PUT`, `POST` and
22
+ * `DELETE` on graphs identified indirectly (`?default`, `?graph=<iri>`) or
23
+ * directly (the request URL is the graph IRI), and `POST` to the graph store
24
+ * itself to create a new graph (`201 Created` with its IRI in `Location`).
25
+ *
26
+ * Request bodies are parsed with the `Serialization.Formats` parser for their
27
+ * `Content-Type` (`multipart/form-data` bodies are parsed part by part);
28
+ * responses are serialised with the negotiated serializer.
29
+ *
30
+ * @since 0.1.0
31
+ */
32
+ var GraphStore_exports = /* @__PURE__ */ __exportAll({
33
+ handle: () => handle,
34
+ target: () => target
35
+ });
36
+ /**
37
+ * Determines the target graph of a request to the graph store whose root URL
38
+ * is `root`.
39
+ *
40
+ * @since 0.1.0
41
+ * @category decoding
42
+ */
43
+ const target = (url, root) => {
44
+ const params = searchParams(url.href);
45
+ const graphs = params.getAll("graph");
46
+ const isDefault = params.has("default");
47
+ if (isDefault && Arr.isReadonlyArrayNonEmpty(graphs)) return Effect.fail(badRequest("A request cannot have both 'default' and 'graph'"));
48
+ if (graphs.length > 1) return Effect.fail(badRequest("Exactly one 'graph' is allowed"));
49
+ if (isDefault) return Effect.succeed({ _tag: "Default" });
50
+ const graph = graphs[0];
51
+ if (graph !== void 0) {
52
+ const iri = resolve(graph, url.href);
53
+ if (!isAbsolute(iri) || /[\s<>"{}|^`\\]/.test(iri)) return Effect.fail(badRequest(`Invalid graph IRI: ${graph}`));
54
+ return Effect.succeed({
55
+ _tag: "Named",
56
+ graph: namedNode(iri)
57
+ });
58
+ }
59
+ const direct = new URL(url.href);
60
+ direct.search = "";
61
+ direct.hash = "";
62
+ const rootUrl = new URL(root, url);
63
+ if (requestPath(direct.pathname) === requestPath(rootUrl.pathname)) return Effect.succeed({ _tag: "Store" });
64
+ return Effect.succeed({
65
+ _tag: "Named",
66
+ graph: namedNode(direct.href)
67
+ });
68
+ };
69
+ const graphOf = (t) => Predicate.isTagged(t, "Named") ? t.graph : defaultGraph;
70
+ const describeTarget = (t) => Predicate.isTagged(t, "Named") ? `<${t.graph.value}>` : "the default graph";
71
+ const storeError = (e) => internal(e.message);
72
+ const exists = (store, t) => Predicate.isTagged(t, "Named") ? Effect.mapError(store.hasGraph(t.graph), storeError) : Effect.succeed(true);
73
+ const charsetUtf8 = (mediaType) => `${mediaType}; charset=utf-8`;
74
+ const parseDocument = (formats, contentType, text, baseIri) => {
75
+ const ct = parseContentType(contentType);
76
+ if (ct === void 0) return Effect.fail(unsupportedMediaType("Missing Content-Type"));
77
+ if (isNonUtf8(ct)) return Effect.fail(unsupportedMediaType(`Unsupported charset '${ct.parameters["charset"]}'`));
78
+ const parser = parserFor(formats, ct.mediaType);
79
+ if (Option.isNone(parser)) return Effect.fail(unsupportedMediaType(`Unsupported Content-Type '${ct.mediaType}'; supported: ${formats.parsers.map((p) => p.format.mediaType).join(", ")}`));
80
+ return parser.value.parse(text, { baseIri }).pipe(Effect.map((r) => Array.from(r.dataset)), Effect.mapError((e) => badRequest(formatError(e))));
81
+ };
82
+ const partContentType = (formats, contentType, name) => {
83
+ const ct = parseContentType(contentType);
84
+ if (ct !== void 0 && Option.isSome(parserFor(formats, ct.mediaType))) return contentType;
85
+ const dot = name.lastIndexOf(".");
86
+ if (dot >= 0) {
87
+ const parser = parserForExtension(formats, name.slice(dot + 1));
88
+ if (Option.isSome(parser)) return parser.value.format.mediaType;
89
+ }
90
+ return contentType;
91
+ };
92
+ const readQuads = (request, formats, baseIri) => Effect.gen(function* () {
93
+ const contentType = request.headers["content-type"];
94
+ const ct = parseContentType(contentType);
95
+ if (ct !== void 0 && ct.mediaType === "multipart/form-data") {
96
+ const parts = yield* Stream.runCollect(request.multipartStream).pipe(Effect.mapError((e) => badRequest(`Invalid multipart body: ${e.message}`)));
97
+ return (yield* Effect.forEach(parts, Effect.fnUntraced(function* (part) {
98
+ if (Predicate.isTagged(part, "Field")) {
99
+ if (part.value.trim() === "") return [];
100
+ return yield* parseDocument(formats, partContentType(formats, part.contentType, part.key), part.value, baseIri);
101
+ }
102
+ if (Predicate.isTagged(part, "File")) {
103
+ const bytes = yield* part.contentEffect.pipe(Effect.mapError((e) => badRequest(`Invalid multipart body: ${e.message}`)));
104
+ return yield* parseDocument(formats, partContentType(formats, part.contentType, part.name), new TextDecoder().decode(bytes), baseIri);
105
+ }
106
+ return [];
107
+ }), { concurrency: 1 })).flat();
108
+ }
109
+ const text = yield* Effect.mapError(request.text, (e) => badRequest(`Could not read the request body: ${e.message}`));
110
+ if (contentType === void 0 && text.trim() === "") return [];
111
+ return yield* parseDocument(formats, contentType ?? "", text, baseIri);
112
+ });
113
+ const intoGraph = (quads, graph) => quads.map((q) => new Quad(q.subject, q.predicate, q.object, graph));
114
+ /**
115
+ * Handles a Graph Store Protocol request. `root` is the path of the graph
116
+ * store.
117
+ *
118
+ * @since 0.1.0
119
+ * @category handlers
120
+ */
121
+ const handle = (options, root) => Effect.gen(function* () {
122
+ const request = yield* HttpServerRequest.HttpServerRequest;
123
+ const store = yield* QuadStore;
124
+ const formats = yield* Formats;
125
+ const url = requestUrl(request, options);
126
+ const t = yield* target(url, root);
127
+ const method = request.method;
128
+ const writes = [
129
+ "PUT",
130
+ "POST",
131
+ "DELETE"
132
+ ];
133
+ const allowed = options.readOnly ? [
134
+ "GET",
135
+ "HEAD",
136
+ "OPTIONS"
137
+ ] : Predicate.isTagged(t, "Store") ? ["POST", "OPTIONS"] : [
138
+ "GET",
139
+ "HEAD",
140
+ "PUT",
141
+ "POST",
142
+ "DELETE",
143
+ "OPTIONS"
144
+ ];
145
+ if (options.readOnly && writes.includes(method)) return yield* methodNotAllowed(method, allowed);
146
+ yield* Effect.annotateCurrentSpan({ "sparql.graph": describeTarget(t) });
147
+ const commit = (write, existed) => store.transaction(write).pipe(Effect.mapError(storeError), Effect.as(HttpServerResponse.empty({ status: existed ? 204 : 201 })));
148
+ return yield* Match.value(method).pipe(Match.when(Match.is("GET", "HEAD"), () => Effect.gen(function* () {
149
+ if (Predicate.isTagged(t, "Store")) return yield* badRequest("Identify a graph with '?default', '?graph=<iri>' or a URL below the graph store");
150
+ if (!(yield* exists(store, t))) return yield* notFound(`No such graph: ${describeTarget(t)}`);
151
+ const accept = request.headers["accept"];
152
+ const serializer = negotiateSerializer(formats, accept);
153
+ if (serializer === void 0) return yield* notAcceptable(accept ?? "", serializerMediaTypes(formats));
154
+ const headers = { "content-type": charsetUtf8(serializer.format.mediaType) };
155
+ if (method === "HEAD") return HttpServerResponse.empty({
156
+ status: 200,
157
+ headers
158
+ });
159
+ const quads = Stream.map(store.match({ graph: graphOf(t) }), (q) => new Quad(q.subject, q.predicate, q.object, defaultGraph));
160
+ const body = serializer.serializeStream(quads, { prefixes: make(options.prefixes) });
161
+ return HttpServerResponse.stream(Stream.encodeText(body), {
162
+ status: 200,
163
+ headers,
164
+ contentType: charsetUtf8(serializer.format.mediaType)
165
+ });
166
+ })), Match.when("PUT", () => Effect.gen(function* () {
167
+ if (Predicate.isTagged(t, "Store")) return yield* methodNotAllowed(method, allowed);
168
+ const base = Predicate.isTagged(t, "Named") ? t.graph.value : url.href;
169
+ const quads = yield* readQuads(request, formats, base);
170
+ const existed = Predicate.isTagged(t, "Named") ? yield* exists(store, t) : true;
171
+ return yield* commit(Effect.gen(function* () {
172
+ if (Predicate.isTagged(t, "Named")) {
173
+ yield* store.dropGraph(t.graph);
174
+ yield* store.createGraph(t.graph);
175
+ } else yield* store.clear(defaultGraph);
176
+ yield* store.insert(intoGraph(quads, graphOf(t)));
177
+ }), existed);
178
+ })), Match.when("POST", () => Effect.gen(function* () {
179
+ if (Predicate.isTagged(t, "Store")) {
180
+ const id = globalThis.crypto.randomUUID();
181
+ const rootUrl = new URL(root, url);
182
+ const graph = namedNode(`${rootUrl.href.replace(/\/$/, "")}/${id}`);
183
+ const quads = yield* readQuads(request, formats, graph.value);
184
+ yield* store.transaction(Effect.andThen(store.createGraph(graph), store.insert(intoGraph(quads, graph)))).pipe(Effect.mapError(storeError));
185
+ return HttpServerResponse.empty({
186
+ status: 201,
187
+ headers: { location: graph.value }
188
+ });
189
+ }
190
+ const base = Predicate.isTagged(t, "Named") ? t.graph.value : url.href;
191
+ const quads = yield* readQuads(request, formats, base);
192
+ const existed = yield* exists(store, t);
193
+ return yield* commit(Effect.gen(function* () {
194
+ if (Predicate.isTagged(t, "Named") && !existed) yield* store.createGraph(t.graph);
195
+ yield* store.insert(intoGraph(quads, graphOf(t)));
196
+ }), existed);
197
+ })), Match.when("DELETE", () => Effect.gen(function* () {
198
+ if (Predicate.isTagged(t, "Store")) return yield* methodNotAllowed(method, allowed);
199
+ if (!Predicate.isTagged(t, "Named")) {
200
+ yield* Effect.mapError(store.clear(defaultGraph), storeError);
201
+ return HttpServerResponse.empty({ status: 204 });
202
+ }
203
+ if (!(yield* exists(store, t))) return yield* notFound(`No such graph: ${describeTarget(t)}`);
204
+ yield* Effect.mapError(store.dropGraph(t.graph), storeError);
205
+ return HttpServerResponse.empty({ status: 204 });
206
+ })), Match.orElse(() => Effect.gen(function* () {
207
+ return yield* methodNotAllowed(method, allowed);
208
+ })));
209
+ }).pipe(Effect.withSpan("SparqlServer.graphStore"));
210
+ export { handle as n, target as r, GraphStore_exports as t };
211
+
212
+ //# sourceMappingURL=GraphStore-DvbqwKy1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphStore-DvbqwKy1.mjs","names":["Protocol.searchParams","ProtocolErrors.badRequest","Iri.resolve","Iri.isAbsolute","Term.namedNode","Options.requestPath","Term.defaultGraph","ProtocolErrors.internal","Protocol.parseContentType","ProtocolErrors.unsupportedMediaType","Protocol.isNonUtf8","Serialization.parserFor","Serialization.formatError","Serialization.parserForExtension","Term.Quad","Store.QuadStore","Serialization.Formats","Options.requestUrl","ProtocolErrors.methodNotAllowed","ProtocolErrors.notFound","ServerFormats.negotiateSerializer","ProtocolErrors.notAcceptable","ServerFormats.serializerMediaTypes","PrefixMap.make"],"sources":["../src/sparql/GraphStore.ts"],"sourcesContent":["/**\n * The SPARQL 1.1 Graph Store HTTP Protocol: `GET`, `HEAD`, `PUT`, `POST` and\n * `DELETE` on graphs identified indirectly (`?default`, `?graph=<iri>`) or\n * directly (the request URL is the graph IRI), and `POST` to the graph store\n * itself to create a new graph (`201 Created` with its IRI in `Location`).\n *\n * Request bodies are parsed with the `Serialization.Formats` parser for their\n * `Content-Type` (`multipart/form-data` bodies are parsed part by part);\n * responses are serialised with the negotiated serializer.\n *\n * @since 0.1.0\n */\nimport * as Match from 'effect/Match';\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Predicate from 'effect/Predicate';\nimport * as Option from 'effect/Option';\nimport * as Stream from 'effect/Stream';\nimport * as HttpServerRequest from 'effect/http/HttpServerRequest';\nimport * as HttpServerResponse from 'effect/http/HttpServerResponse';\nimport * as Iri from '../Iri.ts';\nimport * as PrefixMap from '../PrefixMap.ts';\nimport * as Serialization from '../Serialization.ts';\nimport * as Term from '../Term.ts';\nimport * as Store from './Store.ts';\nimport * as ProtocolErrors from './ProtocolErrors.ts';\nimport * as ServerFormats from './ServerFormats.ts';\nimport * as Options from './Options.ts';\nimport * as Protocol from './Protocol.ts';\n\n/**\n * The graph a Graph Store request operates on.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Target =\n | { readonly _tag: 'Default' }\n | { readonly _tag: 'Named'; readonly graph: Term.NamedNode }\n /** The graph store itself (a `POST` creates a new graph). */\n | { readonly _tag: 'Store' };\n\n/**\n * Determines the target graph of a request to the graph store whose root URL\n * is `root`.\n *\n * @since 0.1.0\n * @category decoding\n */\nexport const target = (\n url: URL,\n root: string,\n): Effect.Effect<Target, ProtocolErrors.ProtocolError> => {\n const params = Protocol.searchParams(url.href);\n const graphs = params.getAll('graph');\n const isDefault = params.has('default');\n if (isDefault && Arr.isReadonlyArrayNonEmpty(graphs)) {\n return Effect.fail(\n ProtocolErrors.badRequest(\"A request cannot have both 'default' and 'graph'\"),\n );\n }\n if (graphs.length > 1)\n return Effect.fail(ProtocolErrors.badRequest(\"Exactly one 'graph' is allowed\"));\n if (isDefault) return Effect.succeed({ _tag: 'Default' });\n const graph = graphs[0];\n if (graph !== undefined) {\n const iri = Iri.resolve(graph, url.href);\n if (!Iri.isAbsolute(iri) || /[\\s<>\"{}|^`\\\\]/.test(iri)) {\n return Effect.fail(ProtocolErrors.badRequest(`Invalid graph IRI: ${graph}`));\n }\n return Effect.succeed({ _tag: 'Named', graph: Term.namedNode(iri) });\n }\n const direct = new URL(url.href);\n direct.search = '';\n direct.hash = '';\n const rootUrl = new URL(root, url);\n if (Options.requestPath(direct.pathname) === Options.requestPath(rootUrl.pathname)) {\n return Effect.succeed({ _tag: 'Store' });\n }\n return Effect.succeed({ _tag: 'Named', graph: Term.namedNode(direct.href) });\n};\n\nconst graphOf = (t: Target): Term.Graph =>\n Predicate.isTagged(t, 'Named') ? t.graph : Term.defaultGraph;\n\nconst describeTarget = (t: Target): string =>\n Predicate.isTagged(t, 'Named') ? `<${t.graph.value}>` : 'the default graph';\n\nconst storeError = (e: Store.StoreError) => ProtocolErrors.internal(e.message);\n\nconst exists = (store: Store.QuadStoreShape, t: Target) =>\n Predicate.isTagged(t, 'Named')\n ? Effect.mapError(store.hasGraph(t.graph), storeError)\n : Effect.succeed(true);\n\nconst charsetUtf8 = (mediaType: string) => `${mediaType}; charset=utf-8`;\n\nconst parseDocument = (\n formats: Serialization.Formats['Service'],\n contentType: string,\n text: string,\n baseIri: string,\n): Effect.Effect<ReadonlyArray<Term.Quad>, ProtocolErrors.ProtocolError> => {\n const ct = Protocol.parseContentType(contentType);\n if (ct === undefined) {\n return Effect.fail(ProtocolErrors.unsupportedMediaType('Missing Content-Type'));\n }\n if (Protocol.isNonUtf8(ct)) {\n return Effect.fail(\n ProtocolErrors.unsupportedMediaType(`Unsupported charset '${ct.parameters['charset']}'`),\n );\n }\n const parser = Serialization.parserFor(formats, ct.mediaType);\n if (Option.isNone(parser)) {\n return Effect.fail(\n ProtocolErrors.unsupportedMediaType(\n `Unsupported Content-Type '${ct.mediaType}'; supported: ${formats.parsers.map((p) => p.format.mediaType).join(', ')}`,\n ),\n );\n }\n return parser.value.parse(text, { baseIri }).pipe(\n Effect.map((r) => Array.from(r.dataset)),\n Effect.mapError((e) => ProtocolErrors.badRequest(Serialization.formatError(e))),\n );\n};\n\nconst partContentType = (\n formats: Serialization.Formats['Service'],\n contentType: string,\n name: string,\n): string => {\n const ct = Protocol.parseContentType(contentType);\n if (ct !== undefined && Option.isSome(Serialization.parserFor(formats, ct.mediaType))) {\n return contentType;\n }\n const dot = name.lastIndexOf('.');\n if (dot >= 0) {\n const parser = Serialization.parserForExtension(formats, name.slice(dot + 1));\n if (Option.isSome(parser)) return parser.value.format.mediaType;\n }\n return contentType;\n};\n\nconst readQuads = (\n request: HttpServerRequest.HttpServerRequest,\n formats: Serialization.Formats['Service'],\n baseIri: string,\n): Effect.Effect<ReadonlyArray<Term.Quad>, ProtocolErrors.ProtocolError> =>\n Effect.gen(function* () {\n const contentType = request.headers['content-type'];\n const ct = Protocol.parseContentType(contentType);\n if (ct !== undefined && ct.mediaType === 'multipart/form-data') {\n const parts = yield* Stream.runCollect(request.multipartStream).pipe(\n Effect.mapError((e) => ProtocolErrors.badRequest(`Invalid multipart body: ${e.message}`)),\n );\n const perPart = yield* Effect.forEach(\n parts,\n Effect.fnUntraced(function* (part) {\n if (Predicate.isTagged(part, 'Field')) {\n if (part.value.trim() === '') return [];\n return yield* parseDocument(\n formats,\n partContentType(formats, part.contentType, part.key),\n part.value,\n baseIri,\n );\n }\n if (Predicate.isTagged(part, 'File')) {\n const bytes = yield* part.contentEffect.pipe(\n Effect.mapError((e) =>\n ProtocolErrors.badRequest(`Invalid multipart body: ${e.message}`),\n ),\n );\n return yield* parseDocument(\n formats,\n partContentType(formats, part.contentType, part.name),\n new TextDecoder().decode(bytes),\n baseIri,\n );\n }\n return [];\n }),\n { concurrency: 1 },\n );\n return perPart.flat();\n }\n const text = yield* Effect.mapError(request.text, (e) =>\n ProtocolErrors.badRequest(`Could not read the request body: ${e.message}`),\n );\n if (contentType === undefined && text.trim() === '') return [];\n return yield* parseDocument(formats, contentType ?? '', text, baseIri);\n });\n\nconst intoGraph = (quads: ReadonlyArray<Term.Quad>, graph: Term.Graph): Array<Term.Quad> =>\n quads.map((q) => new Term.Quad(q.subject, q.predicate, q.object, graph));\n\n/**\n * Handles a Graph Store Protocol request. `root` is the path of the graph\n * store.\n *\n * @since 0.1.0\n * @category handlers\n */\nexport const handle = (\n options: Options.Resolved,\n root: string,\n): Effect.Effect<\n HttpServerResponse.HttpServerResponse,\n ProtocolErrors.ProtocolError,\n HttpServerRequest.HttpServerRequest | Store.QuadStore | Serialization.Formats\n> =>\n Effect.gen(function* () {\n const request = yield* HttpServerRequest.HttpServerRequest;\n const store = yield* Store.QuadStore;\n const formats = yield* Serialization.Formats;\n const url = Options.requestUrl(request, options);\n const t = yield* target(url, root);\n const method = request.method;\n const writes = ['PUT', 'POST', 'DELETE'];\n const allowed = options.readOnly\n ? ['GET', 'HEAD', 'OPTIONS']\n : Predicate.isTagged(t, 'Store')\n ? ['POST', 'OPTIONS']\n : ['GET', 'HEAD', 'PUT', 'POST', 'DELETE', 'OPTIONS'];\n if (options.readOnly && writes.includes(method)) {\n return yield* ProtocolErrors.methodNotAllowed(method, allowed);\n }\n yield* Effect.annotateCurrentSpan({ 'sparql.graph': describeTarget(t) });\n\n // Runs a write in one transaction and answers 204 if the graph existed, 201 if it is new.\n const commit = (write: Effect.Effect<void, Store.StoreError>, existed: boolean) =>\n store\n .transaction(write)\n .pipe(\n Effect.mapError(storeError),\n Effect.as(HttpServerResponse.empty({ status: existed ? 204 : 201 })),\n );\n return yield* Match.value(method).pipe(\n Match.when(Match.is('GET', 'HEAD'), () =>\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Store')) {\n return yield* ProtocolErrors.badRequest(\n \"Identify a graph with '?default', '?graph=<iri>' or a URL below the graph store\",\n );\n }\n if (!(yield* exists(store, t))) {\n return yield* ProtocolErrors.notFound(`No such graph: ${describeTarget(t)}`);\n }\n const accept = request.headers['accept'];\n const serializer = ServerFormats.negotiateSerializer(formats, accept);\n if (serializer === undefined) {\n return yield* ProtocolErrors.notAcceptable(\n accept ?? '',\n ServerFormats.serializerMediaTypes(formats),\n );\n }\n const headers = { 'content-type': charsetUtf8(serializer.format.mediaType) };\n if (method === 'HEAD') return HttpServerResponse.empty({ status: 200, headers });\n const quads = Stream.map(\n store.match({ graph: graphOf(t) }),\n (q) => new Term.Quad(q.subject, q.predicate, q.object, Term.defaultGraph),\n );\n const body = serializer.serializeStream(quads, {\n prefixes: PrefixMap.make(options.prefixes),\n });\n return HttpServerResponse.stream(Stream.encodeText(body), {\n status: 200,\n headers,\n contentType: charsetUtf8(serializer.format.mediaType),\n });\n }),\n ),\n Match.when('PUT', () =>\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Store'))\n return yield* ProtocolErrors.methodNotAllowed(method, allowed);\n const base = Predicate.isTagged(t, 'Named') ? t.graph.value : url.href;\n const quads = yield* readQuads(request, formats, base);\n const existed = Predicate.isTagged(t, 'Named') ? yield* exists(store, t) : true;\n return yield* commit(\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Named')) {\n yield* store.dropGraph(t.graph);\n yield* store.createGraph(t.graph);\n } else {\n yield* store.clear(Term.defaultGraph);\n }\n yield* store.insert(intoGraph(quads, graphOf(t)));\n }),\n existed,\n );\n }),\n ),\n Match.when('POST', () =>\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Store')) {\n const id = globalThis.crypto.randomUUID();\n const rootUrl = new URL(root, url);\n const graph = Term.namedNode(`${rootUrl.href.replace(/\\/$/, '')}/${id}`);\n const quads = yield* readQuads(request, formats, graph.value);\n yield* store\n .transaction(\n Effect.andThen(store.createGraph(graph), store.insert(intoGraph(quads, graph))),\n )\n .pipe(Effect.mapError(storeError));\n return HttpServerResponse.empty({ status: 201, headers: { location: graph.value } });\n }\n const base = Predicate.isTagged(t, 'Named') ? t.graph.value : url.href;\n const quads = yield* readQuads(request, formats, base);\n const existed = yield* exists(store, t);\n return yield* commit(\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Named') && !existed) yield* store.createGraph(t.graph);\n yield* store.insert(intoGraph(quads, graphOf(t)));\n }),\n existed,\n );\n }),\n ),\n Match.when('DELETE', () =>\n Effect.gen(function* () {\n if (Predicate.isTagged(t, 'Store'))\n return yield* ProtocolErrors.methodNotAllowed(method, allowed);\n if (!Predicate.isTagged(t, 'Named')) {\n yield* Effect.mapError(store.clear(Term.defaultGraph), storeError);\n return HttpServerResponse.empty({ status: 204 });\n }\n if (!(yield* exists(store, t))) {\n return yield* ProtocolErrors.notFound(`No such graph: ${describeTarget(t)}`);\n }\n yield* Effect.mapError(store.dropGraph(t.graph), storeError);\n return HttpServerResponse.empty({ status: 204 });\n }),\n ),\n Match.orElse(() =>\n Effect.gen(function* () {\n return yield* ProtocolErrors.methodNotAllowed(method, allowed);\n }),\n ),\n );\n }).pipe(Effect.withSpan('SparqlServer.graphStore'));\n"],"mappings":"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"}