@thomasfosterau/effect-rdf 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2250 -1
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +187 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Server configuration.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Duration from 'effect/Duration';
7
+ import * as Result from 'effect/Result';
8
+ import type * as HttpServerRequest from 'effect/http/HttpServerRequest';
9
+
10
+ /**
11
+ * CORS settings.
12
+ *
13
+ * @since 0.1.0
14
+ * @category models
15
+ */
16
+ export interface CorsOptions {
17
+ /** Allowed origins (default: any, `*`). */
18
+ readonly allowedOrigins?: ReadonlyArray<string> | undefined;
19
+ /** Allowed request headers (default: whatever the preflight asks for). */
20
+ readonly allowedHeaders?: ReadonlyArray<string> | undefined;
21
+ /** Response headers exposed to scripts. */
22
+ readonly exposedHeaders?: ReadonlyArray<string> | undefined;
23
+ /** Preflight cache duration in seconds. */
24
+ readonly maxAge?: number | undefined;
25
+ /** Whether to allow credentials. */
26
+ readonly credentials?: boolean | undefined;
27
+ }
28
+
29
+ /**
30
+ * Server options. Every field is optional.
31
+ *
32
+ * @since 0.1.0
33
+ * @category models
34
+ */
35
+ export interface Options {
36
+ /** Path of the SPARQL query endpoint (default `/sparql`). */
37
+ readonly path?: `/${string}` | undefined;
38
+ /**
39
+ * Path of the SPARQL update endpoint (default: the query endpoint, which
40
+ * then accepts both).
41
+ */
42
+ readonly updatePath?: `/${string}` | undefined;
43
+ /**
44
+ * Path of the Graph Store Protocol endpoint (default `/rdf-graph-store`),
45
+ * or `false` to disable it. Graphs are identified indirectly with
46
+ * `?default` / `?graph=<iri>` on this path, or directly by any URL below it.
47
+ */
48
+ readonly graphStorePath?: `/${string}` | false | undefined;
49
+ /**
50
+ * The public origin of the server (e.g. `https://data.example.org`), used to
51
+ * build the request URLs that serve as base IRIs and as directly
52
+ * identified graph IRIs. Defaults to the request's `Host` header (and
53
+ * `X-Forwarded-Proto`).
54
+ */
55
+ readonly baseUrl?: string | undefined;
56
+ /**
57
+ * The base IRI for queries and updates. Defaults to the endpoint URL, as
58
+ * suggested by the protocol.
59
+ */
60
+ readonly baseIri?: string | undefined;
61
+ /** Rejects updates and Graph Store writes (default `false`). */
62
+ readonly readOnly?: boolean | undefined;
63
+ /**
64
+ * Time limit for evaluating a query. A query that produces no result in
65
+ * time is answered with `503 Service Unavailable`; a streaming response
66
+ * that exceeds it is aborted.
67
+ */
68
+ readonly queryTimeout?: Duration.Input | undefined;
69
+ /** Time limit for an update request (`503` when exceeded). */
70
+ readonly updateTimeout?: Duration.Input | undefined;
71
+ /** The maximum number of solutions or triples returned by a query. */
72
+ readonly maxResults?: number | undefined;
73
+ /** Enables CORS (`true` for permissive defaults). */
74
+ readonly cors?: boolean | CorsOptions | undefined;
75
+ /** Logs every request with Effect logging (default `false` for the handler). */
76
+ readonly logging?: boolean | undefined;
77
+ /** Serve a service description on `GET` without a query (default `true`). */
78
+ readonly serviceDescription?: boolean | undefined;
79
+ /** Advertised in the service description: `sd:UnionDefaultGraph`. */
80
+ readonly unionDefaultGraph?: boolean | undefined;
81
+ /** Advertised in the service description: `sd:BasicFederatedQuery`. */
82
+ readonly federation?: boolean | undefined;
83
+ /** Prefixes used when serialising graphs in syntaxes that support them. */
84
+ readonly prefixes?: Readonly<Record<string, string>> | undefined;
85
+ }
86
+
87
+ /**
88
+ * Options with defaults applied.
89
+ *
90
+ * @since 0.1.0
91
+ * @category models
92
+ */
93
+ export interface Resolved {
94
+ readonly path: `/${string}`;
95
+ readonly updatePath: `/${string}`;
96
+ readonly graphStorePath: `/${string}` | undefined;
97
+ readonly baseUrl: string | undefined;
98
+ readonly baseIri: string | undefined;
99
+ readonly readOnly: boolean;
100
+ readonly queryTimeout: Duration.Duration | undefined;
101
+ readonly updateTimeout: Duration.Duration | undefined;
102
+ readonly maxResults: number | undefined;
103
+ readonly cors: CorsOptions | undefined;
104
+ readonly logging: boolean;
105
+ readonly serviceDescription: boolean;
106
+ readonly unionDefaultGraph: boolean;
107
+ readonly federation: boolean;
108
+ readonly prefixes: Readonly<Record<string, string>>;
109
+ }
110
+
111
+ /** Removes a trailing slash (but not the root's): the path still starts with `/`. */
112
+ const trimSlash = (path: `/${string}`): `/${string}` =>
113
+ path.length > 1 && path.endsWith('/') ? `/${path.slice(1, -1)}` : path;
114
+
115
+ /**
116
+ * Applies the defaults.
117
+ *
118
+ * @since 0.1.0
119
+ * @category constructors
120
+ */
121
+ export const resolve = (options: Options = {}): Resolved => {
122
+ const path = trimSlash(options.path ?? '/sparql');
123
+ return {
124
+ path,
125
+ updatePath: trimSlash(options.updatePath ?? path),
126
+ graphStorePath:
127
+ options.graphStorePath === false
128
+ ? undefined
129
+ : trimSlash(options.graphStorePath ?? '/rdf-graph-store'),
130
+ baseUrl: options.baseUrl,
131
+ baseIri: options.baseIri,
132
+ readOnly: options.readOnly ?? false,
133
+ queryTimeout:
134
+ options.queryTimeout === undefined
135
+ ? undefined
136
+ : Duration.fromInputUnsafe(options.queryTimeout),
137
+ updateTimeout:
138
+ options.updateTimeout === undefined
139
+ ? undefined
140
+ : Duration.fromInputUnsafe(options.updateTimeout),
141
+ maxResults: options.maxResults,
142
+ cors: options.cors === true ? {} : options.cors === false ? undefined : options.cors,
143
+ logging: options.logging ?? false,
144
+ serviceDescription: options.serviceDescription ?? true,
145
+ unionDefaultGraph: options.unionDefaultGraph ?? false,
146
+ federation: options.federation ?? false,
147
+ prefixes: options.prefixes ?? {},
148
+ };
149
+ };
150
+
151
+ const stripTrailing = (path: string): string =>
152
+ path.length > 1 && path.endsWith('/') ? path.slice(0, -1) : path;
153
+
154
+ /**
155
+ * The absolute URL of a request (without fragment), using `baseUrl`, the
156
+ * request's absolute URL, or its `Host` header.
157
+ *
158
+ * @since 0.1.0
159
+ * @category utils
160
+ */
161
+ export const requestUrl = (
162
+ request: HttpServerRequest.HttpServerRequest,
163
+ options: Resolved,
164
+ ): URL => {
165
+ const raw = request.originalUrl;
166
+ const parsed = new URL(raw, 'http://localhost');
167
+ if (options.baseUrl !== undefined) {
168
+ return new URL(parsed.pathname + parsed.search, options.baseUrl);
169
+ }
170
+ if (/^[a-z][a-z0-9+.-]*:/i.test(raw)) return parsed;
171
+ const host = request.headers['host'] ?? 'localhost';
172
+ const proto = ((request.headers['x-forwarded-proto'] ?? 'http').split(',', 1)[0] ?? '').trim();
173
+ return new URL(parsed.pathname + parsed.search, `${proto}://${host}`);
174
+ };
175
+
176
+ /**
177
+ * The path of a request URL, without query string and trailing slash.
178
+ *
179
+ * @since 0.1.0
180
+ * @category utils
181
+ */
182
+ export const requestPath = (url: string): string => {
183
+ const pathname = new URL(url, 'http://localhost').pathname;
184
+ // A malformed percent-encoding is matched as written.
185
+ return stripTrailing(
186
+ Result.getOrElse(
187
+ Result.try(() => decodeURI(pathname)),
188
+ () => pathname,
189
+ ),
190
+ );
191
+ };
@@ -0,0 +1,173 @@
1
+ /**
2
+ * A complete parser for SPARQL 1.1 Query and Update, written with
3
+ * `@thomasfosterau/effect-parse` (see `internal/parser.ts`), including the SPARQL 1.2 additions (triple terms, reified triples,
4
+ * annotations, `VERSION`, directional language tags and the new built-in
5
+ * functions).
6
+ *
7
+ * The parser expands all abbreviations (prefixed names, relative IRIs,
8
+ * `a`, blank node property lists, collections, reifiers and annotations)
9
+ * and enforces the static constraints of the specification (blank node
10
+ * label scoping, grouping rules, `BIND`/`AS` scoping, `VALUES` arity,
11
+ * variable-free `INSERT DATA`, blank-node-free `DELETE` templates, …).
12
+ *
13
+ * @since 0.1.0
14
+ */
15
+ import * as Effect from 'effect/Effect';
16
+ import * as Option from 'effect/Option';
17
+ import * as Result from 'effect/Result';
18
+ import * as Schema from 'effect/Schema';
19
+ import type * as Ast from './Ast.ts';
20
+ import * as Internal from './internal/parser.ts';
21
+
22
+ // -----------------------------------------------------------------------------
23
+ // Errors and options
24
+ // -----------------------------------------------------------------------------
25
+
26
+ /**
27
+ * A syntax (or static semantic) error in a SPARQL query or update.
28
+ *
29
+ * @since 0.1.0
30
+ * @category errors
31
+ */
32
+ export class SparqlParseError extends Schema.TaggedError<SparqlParseError>()('SparqlParseError', {
33
+ message: Schema.String,
34
+ /** 1-based line of the error. */
35
+ line: Schema.Number,
36
+ /** 1-based column of the error. */
37
+ column: Schema.Number,
38
+ /** 0-based character offset of the error. */
39
+ offset: Schema.Number,
40
+ }) {}
41
+
42
+ /**
43
+ * @since 0.1.0
44
+ * @category models
45
+ */
46
+ export interface ParseOptions {
47
+ /** The base IRI used to resolve relative IRIs (unless overridden by `BASE`). */
48
+ readonly baseIri?: string | undefined;
49
+ /** Prefixes available without declaration. */
50
+ readonly prefixes?: Readonly<Record<string, string>> | undefined;
51
+ }
52
+
53
+ // -----------------------------------------------------------------------------
54
+ // Entry points
55
+ // -----------------------------------------------------------------------------
56
+
57
+ const position = (input: string, offset: number) => {
58
+ const before = input.slice(0, Math.max(0, Math.min(offset, input.length)));
59
+ const lineStart = before.lastIndexOf('\n') + 1;
60
+ return { line: before.split('\n').length, column: offset - lineStart + 1 };
61
+ };
62
+
63
+ /** The base IRI and prefixes of `options`, as the internal parser takes them. */
64
+ const internalOptions = (
65
+ options?: ParseOptions,
66
+ ): readonly [Option.Option<string>, Readonly<Record<string, string>>] => [
67
+ Option.fromUndefinedOr(options?.baseIri),
68
+ options?.prefixes ?? {},
69
+ ];
70
+
71
+ const toError =
72
+ (input: string) =>
73
+ (e: Internal.Failure): SparqlParseError => {
74
+ const { line, column } = position(input, e.offset);
75
+ return new SparqlParseError({
76
+ message: `${e.message} (line ${line}, column ${column})`,
77
+ line,
78
+ column,
79
+ offset: e.offset,
80
+ });
81
+ };
82
+
83
+ /**
84
+ * Parses a SPARQL query, returning a `Result`.
85
+ *
86
+ * @since 0.1.0
87
+ * @category parsing
88
+ */
89
+ export const parseQueryResult = (
90
+ input: string,
91
+ options?: ParseOptions,
92
+ ): Result.Result<Ast.Query, SparqlParseError> =>
93
+ Result.mapError(Internal.parseQuery(input, ...internalOptions(options)), toError(input));
94
+
95
+ /**
96
+ * Parses a SPARQL update request, returning a `Result`.
97
+ *
98
+ * @since 0.1.0
99
+ * @category parsing
100
+ */
101
+ export const parseUpdateResult = (
102
+ input: string,
103
+ options?: ParseOptions,
104
+ ): Result.Result<Ast.Update, SparqlParseError> =>
105
+ Result.mapError(Internal.parseUpdate(input, ...internalOptions(options)), toError(input));
106
+
107
+ /**
108
+ * Parses a SPARQL query.
109
+ *
110
+ * @since 0.1.0
111
+ * @category parsing
112
+ */
113
+ export const parseQuery = (
114
+ input: string,
115
+ options?: ParseOptions,
116
+ ): Effect.Effect<Ast.Query, SparqlParseError> =>
117
+ Effect.suspend(() => Effect.fromResult(parseQueryResult(input, options)));
118
+
119
+ /**
120
+ * Parses a SPARQL update request.
121
+ *
122
+ * @since 0.1.0
123
+ * @category parsing
124
+ */
125
+ export const parseUpdate = (
126
+ input: string,
127
+ options?: ParseOptions,
128
+ ): Effect.Effect<Ast.Update, SparqlParseError> =>
129
+ Effect.suspend(() => Effect.fromResult(parseUpdateResult(input, options)));
130
+
131
+ /**
132
+ * Parses either a query or an update request: the text is parsed as a query
133
+ * first and, if that fails, as an update.
134
+ *
135
+ * @since 0.1.0
136
+ * @category parsing
137
+ */
138
+ export const parse = (
139
+ input: string,
140
+ options?: ParseOptions,
141
+ ): Effect.Effect<Ast.Query | Ast.Update, SparqlParseError> =>
142
+ Effect.suspend((): Effect.Effect<Ast.Query | Ast.Update, SparqlParseError> => {
143
+ const q = parseQueryResult(input, options);
144
+ if (Result.isSuccess(q)) return Effect.succeed(q.success);
145
+ const u = parseUpdateResult(input, options);
146
+ if (Result.isSuccess(u)) return Effect.succeed(u.success);
147
+ // Report the error of the parse that got further.
148
+ return Effect.fail(q.failure.offset >= u.failure.offset ? q.failure : u.failure);
149
+ });
150
+
151
+ /**
152
+ * Parses a SPARQL query, throwing a `SparqlParseError` on failure.
153
+ *
154
+ * @since 0.1.0
155
+ * @category parsing
156
+ */
157
+ export const parseQueryUnsafe = (input: string, options?: ParseOptions): Ast.Query => {
158
+ const r = parseQueryResult(input, options);
159
+ if (Result.isFailure(r)) throw r.failure;
160
+ return r.success;
161
+ };
162
+
163
+ /**
164
+ * Parses a SPARQL update request, throwing a `SparqlParseError` on failure.
165
+ *
166
+ * @since 0.1.0
167
+ * @category parsing
168
+ */
169
+ export const parseUpdateUnsafe = (input: string, options?: ParseOptions): Ast.Update => {
170
+ const r = parseUpdateResult(input, options);
171
+ if (Result.isFailure(r)) throw r.failure;
172
+ return r.success;
173
+ };
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Decoding of SPARQL 1.1 Protocol requests.
3
+ *
4
+ * A request to the SPARQL endpoint is one of
5
+ *
6
+ * - a query: `GET` with a `query` parameter, `POST` with an
7
+ * `application/x-www-form-urlencoded` body holding `query`, or `POST` with
8
+ * an `application/sparql-query` body;
9
+ * - an update: `POST` with an `application/x-www-form-urlencoded` body
10
+ * holding `update`, or `POST` with an `application/sparql-update` body;
11
+ * - a service description request: `GET` without `query`.
12
+ *
13
+ * The dataset parameters (`default-graph-uri` / `named-graph-uri` for
14
+ * queries, `using-graph-uri` / `using-named-graph-uri` for updates) come from
15
+ * the URL query string, and also from the body of a form request.
16
+ *
17
+ * @since 0.1.0
18
+ */
19
+ import * as Match from 'effect/Match';
20
+ import * as Arr from 'effect/Array';
21
+ import * as Effect from 'effect/Effect';
22
+ import * as Option from 'effect/Option';
23
+ import type * as HttpServerRequest from 'effect/http/HttpServerRequest';
24
+ import * as Iri from '../Iri.ts';
25
+ import * as Term from '../Term.ts';
26
+ import type * as Store from './Store.ts';
27
+ import * as ProtocolErrors from './ProtocolErrors.ts';
28
+
29
+ /**
30
+ * The media type of a direct `POST` query body.
31
+ *
32
+ * @since 0.1.0
33
+ * @category media types
34
+ */
35
+ export const SPARQL_QUERY = 'application/sparql-query';
36
+
37
+ /**
38
+ * The media type of a direct `POST` update body.
39
+ *
40
+ * @since 0.1.0
41
+ * @category media types
42
+ */
43
+ export const SPARQL_UPDATE = 'application/sparql-update';
44
+
45
+ /**
46
+ * The media type of form-encoded requests.
47
+ *
48
+ * @since 0.1.0
49
+ * @category media types
50
+ */
51
+ export const FORM = 'application/x-www-form-urlencoded';
52
+
53
+ /**
54
+ * A decoded protocol operation.
55
+ *
56
+ * @since 0.1.0
57
+ * @category models
58
+ */
59
+ export type Operation =
60
+ | {
61
+ readonly _tag: 'Query';
62
+ readonly query: string;
63
+ /** The protocol dataset (`default-graph-uri` / `named-graph-uri`), if any. */
64
+ readonly dataset: Store.DatasetSpec | undefined;
65
+ }
66
+ | {
67
+ readonly _tag: 'Update';
68
+ readonly update: string;
69
+ /** The protocol dataset (`using-graph-uri` / `using-named-graph-uri`), if any. */
70
+ readonly using: Store.DatasetSpec | undefined;
71
+ }
72
+ | { readonly _tag: 'ServiceDescription' };
73
+
74
+ /**
75
+ * A parsed `Content-Type` header.
76
+ *
77
+ * @since 0.1.0
78
+ * @category models
79
+ */
80
+ export interface ContentType {
81
+ readonly mediaType: string;
82
+ readonly parameters: Readonly<Record<string, string>>;
83
+ }
84
+
85
+ /**
86
+ * Parses a `Content-Type` header (media type lower-cased, parameter names
87
+ * lower-cased, quotes removed).
88
+ *
89
+ * @since 0.1.0
90
+ * @category parsing
91
+ */
92
+ export const parseContentType = (header: string | undefined): ContentType | undefined => {
93
+ if (header === undefined || header.trim() === '') return undefined;
94
+ const [type, ...params] = header.split(';');
95
+ const parameters: Record<string, string> = {};
96
+ params.forEach((p) => {
97
+ const eq = p.indexOf('=');
98
+ if (eq < 0) return;
99
+ const key = p.slice(0, eq).trim().toLowerCase();
100
+ const raw = p.slice(eq + 1).trim();
101
+ parameters[key] =
102
+ raw.startsWith('"') && raw.endsWith('"') && raw.length >= 2 ? raw.slice(1, -1) : raw;
103
+ });
104
+ return { mediaType: (type ?? '').trim().toLowerCase(), parameters };
105
+ };
106
+
107
+ /**
108
+ * Whether a content type declares a charset other than UTF-8.
109
+ *
110
+ * @since 0.1.0
111
+ * @category parsing
112
+ */
113
+ export const isNonUtf8 = (contentType: ContentType): boolean => {
114
+ const charset = contentType.parameters['charset'];
115
+ return charset !== undefined && !/^utf-?8$/i.test(charset);
116
+ };
117
+
118
+ /**
119
+ * The query string parameters of a request URL.
120
+ *
121
+ * @since 0.1.0
122
+ * @category parsing
123
+ */
124
+ export const searchParams = (url: string): URLSearchParams => {
125
+ const q = url.indexOf('?');
126
+ if (q < 0) return new URLSearchParams();
127
+ const hash = url.indexOf('#', q);
128
+ return new URLSearchParams(url.slice(q + 1, hash < 0 ? undefined : hash));
129
+ };
130
+
131
+ const graphList = (
132
+ values: ReadonlyArray<string>,
133
+ baseIri: string,
134
+ ): Effect.Effect<Array<Term.NamedNode>, ProtocolErrors.ProtocolError> =>
135
+ Effect.forEach(
136
+ values,
137
+ (value) => {
138
+ const iri = Iri.resolve(value, baseIri);
139
+ return Iri.isAbsolute(iri) && !/[\s<>"{}|^`\\]/.test(iri)
140
+ ? Effect.succeed(Term.namedNode(iri))
141
+ : Effect.fail(ProtocolErrors.badRequest(`Invalid graph IRI: ${value}`));
142
+ },
143
+ { concurrency: 1 },
144
+ );
145
+
146
+ /**
147
+ * Builds the dataset described by protocol parameters (`undefined` when no
148
+ * parameter is present). When only named graphs are given the default graph
149
+ * is empty, as for `FROM NAMED` in a query.
150
+ *
151
+ * @since 0.1.0
152
+ * @category parsing
153
+ */
154
+ export const datasetFromParams = (
155
+ params: URLSearchParams,
156
+ defaultName: string,
157
+ namedName: string,
158
+ baseIri: string,
159
+ ): Effect.Effect<Store.DatasetSpec | undefined, ProtocolErrors.ProtocolError> =>
160
+ Effect.gen(function* () {
161
+ const defaults = params.getAll(defaultName);
162
+ const named = params.getAll(namedName);
163
+ if (Arr.isReadonlyArrayEmpty(defaults) && Arr.isReadonlyArrayEmpty(named)) return undefined;
164
+ return {
165
+ defaultGraph: yield* graphList(defaults, baseIri),
166
+ namedGraphs: yield* graphList(named, baseIri),
167
+ };
168
+ });
169
+
170
+ const merge = (a: URLSearchParams, b: URLSearchParams): URLSearchParams => {
171
+ const out = new URLSearchParams(a);
172
+ b.forEach((v, k) => out.append(k, v));
173
+ return out;
174
+ };
175
+
176
+ const single = (
177
+ params: URLSearchParams,
178
+ name: string,
179
+ ): Effect.Effect<Option.Option<string>, ProtocolErrors.ProtocolError> => {
180
+ const values = params.getAll(name);
181
+ if (values.length > 1) {
182
+ return Effect.fail(ProtocolErrors.badRequest(`Exactly one '${name}' parameter is allowed`));
183
+ }
184
+ return Effect.succeed(Arr.head(values));
185
+ };
186
+
187
+ const readBody = (
188
+ request: HttpServerRequest.HttpServerRequest,
189
+ ): Effect.Effect<string, ProtocolErrors.ProtocolError> =>
190
+ Effect.mapError(request.text, (e) =>
191
+ ProtocolErrors.badRequest(`Could not read the request body: ${e.message}`),
192
+ );
193
+
194
+ /**
195
+ * What a SPARQL endpoint accepts.
196
+ *
197
+ * @since 0.1.0
198
+ * @category models
199
+ */
200
+ export interface EndpointKind {
201
+ readonly query: boolean;
202
+ readonly update: boolean;
203
+ }
204
+
205
+ const fromParams = (
206
+ params: URLSearchParams,
207
+ kind: EndpointKind,
208
+ method: string,
209
+ baseIri: string,
210
+ ): Effect.Effect<Operation, ProtocolErrors.ProtocolError> =>
211
+ Effect.gen(function* () {
212
+ const query = yield* single(params, 'query');
213
+ const update = yield* single(params, 'update');
214
+ if (Option.isSome(query) && Option.isSome(update)) {
215
+ return yield* ProtocolErrors.badRequest("A request cannot have both 'query' and 'update'");
216
+ }
217
+ if (Option.isSome(update)) {
218
+ if (method !== 'POST') {
219
+ return yield* ProtocolErrors.badRequest('Updates must be sent with POST');
220
+ }
221
+ if (!kind.update)
222
+ return yield* ProtocolErrors.badRequest('This endpoint does not accept updates');
223
+ const using = yield* datasetFromParams(
224
+ params,
225
+ 'using-graph-uri',
226
+ 'using-named-graph-uri',
227
+ baseIri,
228
+ );
229
+ return { _tag: 'Update', update: update.value, using } as const;
230
+ }
231
+ if (Option.isSome(query)) {
232
+ if (!kind.query)
233
+ return yield* ProtocolErrors.badRequest('This endpoint does not accept queries');
234
+ const dataset = yield* datasetFromParams(
235
+ params,
236
+ 'default-graph-uri',
237
+ 'named-graph-uri',
238
+ baseIri,
239
+ );
240
+ return { _tag: 'Query', query: query.value, dataset } as const;
241
+ }
242
+ if (method === 'GET' || method === 'HEAD') return { _tag: 'ServiceDescription' } as const;
243
+ return yield* ProtocolErrors.badRequest("Missing 'query' or 'update' parameter");
244
+ });
245
+
246
+ /**
247
+ * Decodes a request to the SPARQL endpoint. `baseIri` resolves relative
248
+ * graph IRIs in the dataset parameters.
249
+ *
250
+ * @since 0.1.0
251
+ * @category decoding
252
+ */
253
+ export const decode = (
254
+ request: HttpServerRequest.HttpServerRequest,
255
+ kind: EndpointKind,
256
+ baseIri: string,
257
+ ): Effect.Effect<Operation, ProtocolErrors.ProtocolError> =>
258
+ Effect.gen(function* () {
259
+ const method = request.method;
260
+ const urlParams = searchParams(request.url);
261
+ if (method === 'GET' || method === 'HEAD') {
262
+ return yield* fromParams(urlParams, kind, method, baseIri);
263
+ }
264
+ if (method !== 'POST') {
265
+ return yield* ProtocolErrors.methodNotAllowed(method, ['GET', 'POST']);
266
+ }
267
+ const contentType = parseContentType(request.headers['content-type']);
268
+ if (contentType === undefined) {
269
+ return yield* ProtocolErrors.unsupportedMediaType(
270
+ `A POST request needs a Content-Type of ${FORM}, ${SPARQL_QUERY} or ${SPARQL_UPDATE}`,
271
+ );
272
+ }
273
+ if (isNonUtf8(contentType)) {
274
+ return yield* ProtocolErrors.unsupportedMediaType(
275
+ `Unsupported charset '${contentType.parameters['charset']}' (only UTF-8 is accepted)`,
276
+ );
277
+ }
278
+ return yield* Match.value(contentType).pipe(
279
+ Match.when({ mediaType: FORM }, () =>
280
+ Effect.gen(function* () {
281
+ const body = yield* readBody(request);
282
+ return yield* fromParams(
283
+ merge(urlParams, new URLSearchParams(body)),
284
+ kind,
285
+ method,
286
+ baseIri,
287
+ );
288
+ }),
289
+ ),
290
+ Match.when({ mediaType: SPARQL_QUERY }, () =>
291
+ Effect.gen(function* () {
292
+ if (!kind.query) {
293
+ return yield* ProtocolErrors.unsupportedMediaType(
294
+ 'This endpoint does not accept queries',
295
+ );
296
+ }
297
+ if (urlParams.has('query') || urlParams.has('update')) {
298
+ return yield* ProtocolErrors.badRequest(
299
+ `A ${SPARQL_QUERY} request cannot also have a 'query' or 'update' parameter`,
300
+ );
301
+ }
302
+ const query = yield* readBody(request);
303
+ const dataset = yield* datasetFromParams(
304
+ urlParams,
305
+ 'default-graph-uri',
306
+ 'named-graph-uri',
307
+ baseIri,
308
+ );
309
+ return { _tag: 'Query', query, dataset } as const;
310
+ }),
311
+ ),
312
+ Match.when({ mediaType: SPARQL_UPDATE }, () =>
313
+ Effect.gen(function* () {
314
+ if (!kind.update) {
315
+ return yield* ProtocolErrors.unsupportedMediaType(
316
+ 'This endpoint does not accept updates',
317
+ );
318
+ }
319
+ if (urlParams.has('query') || urlParams.has('update')) {
320
+ return yield* ProtocolErrors.badRequest(
321
+ `A ${SPARQL_UPDATE} request cannot also have a 'query' or 'update' parameter`,
322
+ );
323
+ }
324
+ const update = yield* readBody(request);
325
+ const using = yield* datasetFromParams(
326
+ urlParams,
327
+ 'using-graph-uri',
328
+ 'using-named-graph-uri',
329
+ baseIri,
330
+ );
331
+ return { _tag: 'Update', update, using } as const;
332
+ }),
333
+ ),
334
+ Match.orElse((other) =>
335
+ Effect.gen(function* () {
336
+ return yield* ProtocolErrors.unsupportedMediaType(
337
+ `Unsupported Content-Type '${other.mediaType}'; expected ${FORM}, ${SPARQL_QUERY} or ${SPARQL_UPDATE}`,
338
+ );
339
+ }),
340
+ ),
341
+ );
342
+ });