@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,953 @@
1
+ /**
2
+ * A strongly-typed, immutable query builder. Builders produce the SPARQL AST
3
+ * (`build()`), print as SPARQL text (`toString()`) and can be executed with
4
+ * the `SparqlEngine`, yielding rows whose type is derived from the selected
5
+ * variables:
6
+ *
7
+ * ```ts
8
+ * import { QueryBuilder as Q } from '@thomasfosterau/effect-rdf/sparql'
9
+ * const v = Q.vars('person', 'name', 'email')
10
+ *
11
+ * const query = Q.select('person', 'name', Q.maybe('email'))
12
+ * .where(Q.triple(v.person, foaf.name, v.name))
13
+ * .optional(Q.triple(v.person, foaf.mbox, v.email))
14
+ * .orderBy(v.name)
15
+ * .limit(10)
16
+ *
17
+ * // Stream<{ readonly person: GroundTerm; readonly name: GroundTerm; readonly email?: GroundTerm }>
18
+ * const rows = Q.execute(query)
19
+ * // Stream<{ name: string; email?: string }>, decoded with TermSchema
20
+ * const people = Q.decode(query, Schema.Struct({ name: TermSchema.string, email: Schema.optional(TermSchema.iri) }))
21
+ * ```
22
+ *
23
+ * @since 0.1.0
24
+ */
25
+ import * as Arr from 'effect/Array';
26
+ import * as Effect from 'effect/Effect';
27
+ import * as Match from 'effect/Match';
28
+ import { pipeArguments, type Pipeable } from 'effect/Pipeable';
29
+ import * as Record from 'effect/Record';
30
+ import * as Schema from 'effect/Schema';
31
+ import * as Stream from 'effect/Stream';
32
+ import type { Simplify } from 'effect/Types';
33
+ import * as Term from '../Term.ts';
34
+ import * as Xsd from '../Xsd.ts';
35
+ import * as Ast from './Ast.ts';
36
+ import * as B from './Bindings.ts';
37
+ import * as Engine from './Engine.ts';
38
+ import * as Generator from './Generator.ts';
39
+ import * as Predicate from 'effect/Predicate';
40
+
41
+ // -----------------------------------------------------------------------------
42
+ // Inputs
43
+ // -----------------------------------------------------------------------------
44
+
45
+ /**
46
+ * A JavaScript value usable as a literal.
47
+ *
48
+ * @since 0.1.0
49
+ * @category models
50
+ */
51
+ export type JsValue = string | number | bigint | boolean | Date;
52
+
53
+ /**
54
+ * An expression, or a JS value (converted to a literal).
55
+ *
56
+ * @since 0.1.0
57
+ * @category models
58
+ */
59
+ export type ExpressionInput = Ast.Expression | JsValue;
60
+
61
+ /**
62
+ * An object position input: a term pattern or a JS value (literal).
63
+ *
64
+ * @since 0.1.0
65
+ * @category models
66
+ */
67
+ export type ObjectInput = Ast.TermPattern | JsValue;
68
+
69
+ /**
70
+ * Anything accepted as (part of) a group graph pattern.
71
+ *
72
+ * @since 0.1.0
73
+ * @category models
74
+ */
75
+ export type PatternInput =
76
+ | Ast.TriplePattern
77
+ | Ast.PathPattern
78
+ | Ast.Pattern
79
+ | ReadonlyArray<PatternInput>;
80
+
81
+ const isJsValue = (
82
+ u: ExpressionInput | Alias<string, boolean> | Ast.OrderCondition,
83
+ ): u is JsValue =>
84
+ Predicate.isString(u) ||
85
+ Predicate.isNumber(u) ||
86
+ Predicate.isBigInt(u) ||
87
+ Predicate.isBoolean(u) ||
88
+ Predicate.isDate(u);
89
+
90
+ const isTerm = <T extends Term.Term>(u: T | JsValue): u is T => Term.isTerm(u);
91
+
92
+ const isAlias = (u: ExpressionInput | Alias<string, boolean>): u is Alias<string, boolean> =>
93
+ !isJsValue(u) && Predicate.isTagged(u, 'Alias');
94
+
95
+ const isOrderCondition = (u: ExpressionInput | Ast.OrderCondition): u is Ast.OrderCondition =>
96
+ !isJsValue(u) && 'descending' in u;
97
+
98
+ /**
99
+ * Converts a JS value to a literal (terms and expressions are returned
100
+ * unchanged).
101
+ *
102
+ * @since 0.1.0
103
+ * @category constructors
104
+ */
105
+ export const toExpression = (input: ExpressionInput): Ast.Expression =>
106
+ isJsValue(input) ? Xsd.fromJs(input) : input;
107
+
108
+ const toObject = (input: ObjectInput): Ast.TermPattern =>
109
+ isTerm(input) ? input : Xsd.fromJs(input);
110
+
111
+ // -----------------------------------------------------------------------------
112
+ // Variables
113
+ // -----------------------------------------------------------------------------
114
+
115
+ /**
116
+ * Creates a variable.
117
+ *
118
+ * @since 0.1.0
119
+ * @category variables
120
+ */
121
+ export const variable = <const N extends string>(name: N): Term.Variable<N> => Term.variable(name);
122
+
123
+ /**
124
+ * Variables by name, as `v` provides them.
125
+ *
126
+ * @since 0.1.0
127
+ * @category variables
128
+ */
129
+ export interface Variables {
130
+ readonly [name: string]: Term.Variable;
131
+ }
132
+
133
+ /**
134
+ * A proxy creating variables by property access: `v.name` is `?name`.
135
+ *
136
+ * @since 0.1.0
137
+ * @category variables
138
+ */
139
+ export const v: Variables = new Proxy<Variables>(
140
+ {},
141
+ { get: (_, name) => (Predicate.isString(name) ? Term.variable(name) : undefined) },
142
+ );
143
+
144
+ /**
145
+ * Creates several variables at once, typed by name:
146
+ * `const { s, name } = vars('s', 'name')`.
147
+ *
148
+ * @since 0.1.0
149
+ * @category variables
150
+ */
151
+ export const vars = <const N extends ReadonlyArray<string>>(
152
+ ...names: N
153
+ ): { readonly [K in N[number]]: Term.Variable<K> } =>
154
+ // SAFETY: one entry per name in `names`, each the variable of that name.
155
+ Record.fromEntries(names.map((n) => [n, Term.variable(n)])) as {
156
+ readonly [K in N[number]]: Term.Variable<K>;
157
+ };
158
+
159
+ /**
160
+ * The `as` constructor: an alias that is required unless marked optional.
161
+ *
162
+ * @since 0.1.0
163
+ * @category projection
164
+ */
165
+ export interface AsAlias {
166
+ <const N extends string>(expression: ExpressionInput, name: N): Alias<N>;
167
+ <const N extends string>(
168
+ expression: ExpressionInput,
169
+ name: N,
170
+ options: { readonly optional: true },
171
+ ): Alias<N, true>;
172
+ }
173
+
174
+ /**
175
+ * Marks a selected variable as possibly unbound (e.g. bound in an
176
+ * `OPTIONAL`): its row field becomes optional.
177
+ *
178
+ * @since 0.1.0
179
+ * @category projection
180
+ */
181
+ export interface MaybeVariable<N extends string> {
182
+ readonly _tag: 'Maybe';
183
+ readonly name: N;
184
+ }
185
+
186
+ /**
187
+ * @since 0.1.0
188
+ * @category projection
189
+ */
190
+ export const maybe = <const N extends string>(name: N): MaybeVariable<N> => ({
191
+ _tag: 'Maybe',
192
+ name,
193
+ });
194
+
195
+ /**
196
+ * A projected expression `(expr AS ?name)`.
197
+ *
198
+ * @since 0.1.0
199
+ * @category projection
200
+ */
201
+ export interface Alias<N extends string, Optional extends boolean = false> {
202
+ readonly _tag: 'Alias';
203
+ readonly name: N;
204
+ readonly expression: Ast.Expression;
205
+ readonly optional: Optional;
206
+ }
207
+
208
+ /**
209
+ * Projects an expression as a variable. Pass `{ optional: true }` when the
210
+ * expression may fail (leaving the variable unbound).
211
+ *
212
+ * @since 0.1.0
213
+ * @category projection
214
+ */
215
+ export const as: AsAlias = (
216
+ expression: ExpressionInput,
217
+ name: string,
218
+ options?: { readonly optional: true },
219
+ ): any => ({
220
+ _tag: 'Alias',
221
+ name,
222
+ expression: toExpression(expression),
223
+ optional: options?.optional ?? false,
224
+ });
225
+
226
+ /**
227
+ * An item of a `SELECT` list.
228
+ *
229
+ * @since 0.1.0
230
+ * @category projection
231
+ */
232
+ export type SelectItem = string | Term.Variable | MaybeVariable<string> | Alias<string, boolean>;
233
+
234
+ type RequiredOf<I> = I extends string
235
+ ? I
236
+ : I extends Term.Variable<infer N>
237
+ ? N
238
+ : I extends Alias<infer N>
239
+ ? N
240
+ : never;
241
+
242
+ type OptionalOf<I> =
243
+ I extends MaybeVariable<infer N> ? N : I extends Alias<infer N, true> ? N : never;
244
+
245
+ /**
246
+ * The row type of a `SELECT` query with required variables `R` and
247
+ * possibly-unbound variables `O`.
248
+ *
249
+ * @since 0.1.0
250
+ * @category models
251
+ */
252
+ export type Row<R extends string, O extends string> = Simplify<
253
+ { readonly [K in R]: Term.GroundTerm } & { readonly [K in O]?: Term.GroundTerm | undefined }
254
+ >;
255
+
256
+ // -----------------------------------------------------------------------------
257
+ // Patterns
258
+ // -----------------------------------------------------------------------------
259
+
260
+ /**
261
+ * A triple pattern. The predicate may be a property path; the object may be
262
+ * a JS value.
263
+ *
264
+ * @since 0.1.0
265
+ * @category patterns
266
+ */
267
+ export const triple = (
268
+ subject: Ast.TermPattern,
269
+ predicate: Ast.VarOrIri | Ast.Path,
270
+ object: ObjectInput,
271
+ ): Ast.TriplePattern | Ast.PathPattern =>
272
+ Ast.isPath(predicate)
273
+ ? Ast.pathPattern(subject, predicate, toObject(object))
274
+ : Ast.triplePattern(subject, predicate, toObject(object));
275
+
276
+ /**
277
+ * Property path constructors.
278
+ *
279
+ * @since 0.1.0
280
+ * @category patterns
281
+ */
282
+ export const path = {
283
+ link: (iri: Term.NamedNode): Ast.Path => Ast.link(iri),
284
+ inverse: (p: Ast.Path | Term.NamedNode): Ast.Path => Ast.inverse(toPath(p)),
285
+ sequence: (...ps: ReadonlyArray<Ast.Path | Term.NamedNode>): Ast.Path =>
286
+ Ast.sequence(...ps.map(toPath)),
287
+ alternative: (...ps: ReadonlyArray<Ast.Path | Term.NamedNode>): Ast.Path =>
288
+ Ast.alternative(...ps.map(toPath)),
289
+ zeroOrMore: (p: Ast.Path | Term.NamedNode): Ast.Path => Ast.zeroOrMore(toPath(p)),
290
+ oneOrMore: (p: Ast.Path | Term.NamedNode): Ast.Path => Ast.oneOrMore(toPath(p)),
291
+ zeroOrOne: (p: Ast.Path | Term.NamedNode): Ast.Path => Ast.zeroOrOne(toPath(p)),
292
+ negated: (
293
+ iris: ReadonlyArray<Term.NamedNode>,
294
+ inverse: ReadonlyArray<Term.NamedNode> = [],
295
+ ): Ast.Path => Ast.negated(iris, inverse),
296
+ } as const;
297
+
298
+ const toPath = (p: Ast.Path | Term.NamedNode): Ast.Path => (Ast.isPath(p) ? p : Ast.link(p));
299
+
300
+ /** Whether a pattern input is the list form (`Array.isArray` cannot narrow a `ReadonlyArray`). */
301
+ const isPatternList = (input: PatternInput): input is ReadonlyArray<PatternInput> =>
302
+ Array.isArray(input);
303
+
304
+ const isTriplePattern = (
305
+ p: Ast.TriplePattern | Ast.PathPattern | Ast.Pattern,
306
+ ): p is Ast.TriplePattern | Ast.PathPattern =>
307
+ Predicate.isTagged(p, 'TriplePattern') || Predicate.isTagged(p, 'PathPattern');
308
+
309
+ const flatten = (inputs: ReadonlyArray<PatternInput>): Array<Ast.Pattern> => {
310
+ const out: Array<Ast.Pattern> = [];
311
+ const go = (input: PatternInput): void => {
312
+ if (isPatternList(input)) {
313
+ input.forEach(go);
314
+ return;
315
+ }
316
+ if (isTriplePattern(input)) {
317
+ const last = out[out.length - 1];
318
+ if (Predicate.isTagged(last, 'Bgp')) {
319
+ out[out.length - 1] = Ast.bgp([...last.triples, input]);
320
+ } else out.push(Ast.bgp([input]));
321
+ } else out.push(input);
322
+ };
323
+ inputs.forEach(go);
324
+ return out;
325
+ };
326
+
327
+ /**
328
+ * A group graph pattern `{ … }`.
329
+ *
330
+ * @since 0.1.0
331
+ * @category patterns
332
+ */
333
+ export const group = (...patterns: ReadonlyArray<PatternInput>): Ast.GroupPattern =>
334
+ Ast.group(flatten(patterns));
335
+
336
+ /**
337
+ * `OPTIONAL { … }`
338
+ *
339
+ * @since 0.1.0
340
+ * @category patterns
341
+ */
342
+ export const optional = (...patterns: ReadonlyArray<PatternInput>): Ast.OptionalPattern =>
343
+ Ast.optional(group(...patterns));
344
+
345
+ /**
346
+ * `MINUS { … }`
347
+ *
348
+ * @since 0.1.0
349
+ * @category patterns
350
+ */
351
+ export const minus = (...patterns: ReadonlyArray<PatternInput>): Ast.MinusPattern =>
352
+ Ast.minus(group(...patterns));
353
+
354
+ /**
355
+ * `{ … } UNION { … }`; each argument is one alternative.
356
+ *
357
+ * @since 0.1.0
358
+ * @category patterns
359
+ */
360
+ export const union = (...alternatives: ReadonlyArray<PatternInput>): Ast.UnionPattern =>
361
+ Ast.union(alternatives.map((a) => group(a)));
362
+
363
+ /**
364
+ * `GRAPH name { … }`
365
+ *
366
+ * @since 0.1.0
367
+ * @category patterns
368
+ */
369
+ export const graph = (
370
+ name: Ast.VarOrIri,
371
+ ...patterns: ReadonlyArray<PatternInput>
372
+ ): Ast.GraphPattern => Ast.graph(name, group(...patterns));
373
+
374
+ /**
375
+ * `FILTER(expr)`
376
+ *
377
+ * @since 0.1.0
378
+ * @category patterns
379
+ */
380
+ export const filter = (expression: ExpressionInput): Ast.FilterPattern =>
381
+ Ast.filter(toExpression(expression));
382
+
383
+ /**
384
+ * `BIND(expr AS ?name)`
385
+ *
386
+ * @since 0.1.0
387
+ * @category patterns
388
+ */
389
+ export const bind = (expression: ExpressionInput, name: string | Term.Variable): Ast.BindPattern =>
390
+ Ast.bind(toExpression(expression), Predicate.isString(name) ? Term.variable(name) : name);
391
+
392
+ /**
393
+ * Inline data from records: `values([{ x: ex.a, y: 1 }, { x: ex.b }])`.
394
+ * Missing or `undefined` values are `UNDEF`.
395
+ *
396
+ * @since 0.1.0
397
+ * @category patterns
398
+ */
399
+ export const values = (
400
+ rows: ReadonlyArray<Readonly<Record<string, Term.GroundTerm | JsValue | undefined>>>,
401
+ ): Ast.ValuesPattern => {
402
+ const names = Arr.dedupe(rows.flatMap((r) => Record.keys(r)));
403
+ return Ast.values(
404
+ names.map((n) => Term.variable(n)),
405
+ rows.map((r) =>
406
+ names.map((n) => {
407
+ const x = r[n];
408
+ return x === undefined ? undefined : isTerm(x) ? x : Xsd.fromJs(x);
409
+ }),
410
+ ),
411
+ );
412
+ };
413
+
414
+ // -----------------------------------------------------------------------------
415
+ // Expressions
416
+ // -----------------------------------------------------------------------------
417
+
418
+ const op =
419
+ (operator: Ast.Operator) =>
420
+ (...args: ReadonlyArray<ExpressionInput>): Ast.Expression =>
421
+ Ast.operation(operator, ...args.map(toExpression));
422
+
423
+ const binary =
424
+ (operator: Ast.Operator) =>
425
+ (a: ExpressionInput, b: ExpressionInput): Ast.Expression =>
426
+ Ast.operation(operator, toExpression(a), toExpression(b));
427
+
428
+ const unary =
429
+ (operator: Ast.Operator) =>
430
+ (a: ExpressionInput): Ast.Expression =>
431
+ Ast.operation(operator, toExpression(a));
432
+
433
+ /** @since 0.1.0 @category expressions */
434
+ export const eq = binary('=');
435
+ /** @since 0.1.0 @category expressions */
436
+ export const ne = binary('!=');
437
+ /** @since 0.1.0 @category expressions */
438
+ export const lt = binary('<');
439
+ /** @since 0.1.0 @category expressions */
440
+ export const le = binary('<=');
441
+ /** @since 0.1.0 @category expressions */
442
+ export const gt = binary('>');
443
+ /** @since 0.1.0 @category expressions */
444
+ export const ge = binary('>=');
445
+ /** @since 0.1.0 @category expressions */
446
+ export const add = binary('+');
447
+ /** @since 0.1.0 @category expressions */
448
+ export const subtract = binary('-');
449
+ /** @since 0.1.0 @category expressions */
450
+ export const multiply = binary('*');
451
+ /** @since 0.1.0 @category expressions */
452
+ export const divide = binary('/');
453
+ /** @since 0.1.0 @category expressions */
454
+ export const negate = unary('UMINUS');
455
+ /** @since 0.1.0 @category expressions */
456
+ export const not = unary('!');
457
+
458
+ /**
459
+ * Logical conjunction of any number of conditions.
460
+ *
461
+ * @since 0.1.0
462
+ * @category expressions
463
+ */
464
+ export const and = (...args: ReadonlyArray<ExpressionInput>): Ast.Expression =>
465
+ args.map(toExpression).reduce((a, b) => Ast.operation('&&', a, b));
466
+
467
+ /**
468
+ * Logical disjunction of any number of conditions.
469
+ *
470
+ * @since 0.1.0
471
+ * @category expressions
472
+ */
473
+ export const or = (...args: ReadonlyArray<ExpressionInput>): Ast.Expression =>
474
+ args.map(toExpression).reduce((a, b) => Ast.operation('||', a, b));
475
+
476
+ /**
477
+ * `expr IN (…)`
478
+ *
479
+ * @since 0.1.0
480
+ * @category expressions
481
+ */
482
+ export const isIn = (
483
+ expression: ExpressionInput,
484
+ list: ReadonlyArray<ExpressionInput>,
485
+ ): Ast.Expression => Ast.operation('IN', toExpression(expression), ...list.map(toExpression));
486
+
487
+ /**
488
+ * `expr NOT IN (…)`
489
+ *
490
+ * @since 0.1.0
491
+ * @category expressions
492
+ */
493
+ export const notIn = (
494
+ expression: ExpressionInput,
495
+ list: ReadonlyArray<ExpressionInput>,
496
+ ): Ast.Expression => Ast.operation('NOT IN', toExpression(expression), ...list.map(toExpression));
497
+
498
+ /**
499
+ * Calls any built-in function by name, e.g. `fn('STRLEN', v.name)`.
500
+ *
501
+ * @since 0.1.0
502
+ * @category expressions
503
+ */
504
+ export const fn = (
505
+ name: Ast.BuiltInName,
506
+ ...args: ReadonlyArray<ExpressionInput>
507
+ ): Ast.Expression => Ast.operation(name, ...args.map(toExpression));
508
+
509
+ /**
510
+ * Calls an extension function (or XSD cast) by IRI.
511
+ *
512
+ * @since 0.1.0
513
+ * @category expressions
514
+ */
515
+ export const call = (
516
+ iri: Term.NamedNode,
517
+ ...args: ReadonlyArray<ExpressionInput>
518
+ ): Ast.Expression => Ast.functionCall(iri, args.map(toExpression));
519
+
520
+ /** @since 0.1.0 @category expressions */
521
+ export const bound = (variable: Term.Variable): Ast.Expression => Ast.operation('BOUND', variable);
522
+ /** @since 0.1.0 @category expressions */
523
+ export const str = op('STR');
524
+ /** @since 0.1.0 @category expressions */
525
+ export const lang = op('LANG');
526
+ /** @since 0.1.0 @category expressions */
527
+ export const langMatches = op('LANGMATCHES');
528
+ /** @since 0.1.0 @category expressions */
529
+ export const datatype = op('DATATYPE');
530
+ /** @since 0.1.0 @category expressions */
531
+ export const iri = op('IRI');
532
+ /** @since 0.1.0 @category expressions */
533
+ export const regex = op('REGEX');
534
+ /** @since 0.1.0 @category expressions */
535
+ export const contains = op('CONTAINS');
536
+ /** @since 0.1.0 @category expressions */
537
+ export const strStarts = op('STRSTARTS');
538
+ /** @since 0.1.0 @category expressions */
539
+ export const strEnds = op('STRENDS');
540
+ /** @since 0.1.0 @category expressions */
541
+ export const strlen = op('STRLEN');
542
+ /** @since 0.1.0 @category expressions */
543
+ export const ucase = op('UCASE');
544
+ /** @since 0.1.0 @category expressions */
545
+ export const lcase = op('LCASE');
546
+ /** @since 0.1.0 @category expressions */
547
+ export const concat = op('CONCAT');
548
+ /** @since 0.1.0 @category expressions */
549
+ export const substr = op('SUBSTR');
550
+ /** @since 0.1.0 @category expressions */
551
+ export const replace = op('REPLACE');
552
+ /** @since 0.1.0 @category expressions */
553
+ export const coalesce = op('COALESCE');
554
+ /** @since 0.1.0 @category expressions */
555
+ export const ifThenElse = op('IF');
556
+ /** @since 0.1.0 @category expressions */
557
+ export const isIri = op('ISIRI');
558
+ /** @since 0.1.0 @category expressions */
559
+ export const isBlank = op('ISBLANK');
560
+ /** @since 0.1.0 @category expressions */
561
+ export const isLiteral = op('ISLITERAL');
562
+ /** @since 0.1.0 @category expressions */
563
+ export const isNumeric = op('ISNUMERIC');
564
+ /** @since 0.1.0 @category expressions */
565
+ export const sameTerm = op('SAMETERM');
566
+
567
+ /**
568
+ * `EXISTS { … }`
569
+ *
570
+ * @since 0.1.0
571
+ * @category expressions
572
+ */
573
+ export const exists = (...patterns: ReadonlyArray<PatternInput>): Ast.Expression =>
574
+ Ast.exists(group(...patterns));
575
+
576
+ /**
577
+ * `NOT EXISTS { … }`
578
+ *
579
+ * @since 0.1.0
580
+ * @category expressions
581
+ */
582
+ export const notExists = (...patterns: ReadonlyArray<PatternInput>): Ast.Expression =>
583
+ Ast.exists(group(...patterns), true);
584
+
585
+ const aggregate =
586
+ (name: Ast.AggregateName) =>
587
+ (expression: ExpressionInput, options?: { readonly distinct?: boolean }): Ast.Expression =>
588
+ Ast.aggregate(name, toExpression(expression), options);
589
+
590
+ /**
591
+ * `COUNT(*)` (no argument) or `COUNT(expr)`.
592
+ *
593
+ * @since 0.1.0
594
+ * @category aggregates
595
+ */
596
+ export const count = (
597
+ expression?: ExpressionInput,
598
+ options?: { readonly distinct?: boolean },
599
+ ): Ast.Expression =>
600
+ Ast.aggregate('COUNT', expression === undefined ? '*' : toExpression(expression), options);
601
+ /** @since 0.1.0 @category aggregates */
602
+ export const sum = aggregate('SUM');
603
+ /** @since 0.1.0 @category aggregates */
604
+ export const avg = aggregate('AVG');
605
+ /** @since 0.1.0 @category aggregates */
606
+ export const min = aggregate('MIN');
607
+ /** @since 0.1.0 @category aggregates */
608
+ export const max = aggregate('MAX');
609
+ /** @since 0.1.0 @category aggregates */
610
+ export const sample = aggregate('SAMPLE');
611
+
612
+ /**
613
+ * `GROUP_CONCAT(expr; SEPARATOR = sep)`
614
+ *
615
+ * @since 0.1.0
616
+ * @category aggregates
617
+ */
618
+ export const groupConcat = (
619
+ expression: ExpressionInput,
620
+ options?: { readonly distinct?: boolean; readonly separator?: string },
621
+ ): Ast.Expression => Ast.aggregate('GROUP_CONCAT', toExpression(expression), options);
622
+
623
+ /**
624
+ * A descending `ORDER BY` condition.
625
+ *
626
+ * @since 0.1.0
627
+ * @category modifiers
628
+ */
629
+ export const desc = (expression: ExpressionInput): Ast.OrderCondition => ({
630
+ expression: toExpression(expression),
631
+ descending: true,
632
+ });
633
+
634
+ /**
635
+ * An ascending `ORDER BY` condition.
636
+ *
637
+ * @since 0.1.0
638
+ * @category modifiers
639
+ */
640
+ export const asc = (expression: ExpressionInput): Ast.OrderCondition => ({
641
+ expression: toExpression(expression),
642
+ descending: false,
643
+ });
644
+
645
+ // -----------------------------------------------------------------------------
646
+ // Builders
647
+ // -----------------------------------------------------------------------------
648
+
649
+ type Kind = Ast.Query['_tag'];
650
+
651
+ type QueryOf<K extends Kind> = Extract<Ast.Query, { readonly _tag: K }>;
652
+
653
+ /**
654
+ * An immutable query builder. `K` is the query form; `R` and `O` are the
655
+ * required and optional variables of `SELECT` rows.
656
+ *
657
+ * @since 0.1.0
658
+ * @category models
659
+ */
660
+ export class Builder<
661
+ K extends Kind,
662
+ R extends string = never,
663
+ O extends string = never,
664
+ > implements Pipeable {
665
+ /** @internal */
666
+ readonly query: QueryOf<K>;
667
+ constructor(query: QueryOf<K>) {
668
+ this.query = query;
669
+ }
670
+
671
+ private with(
672
+ patch: Partial<Ast.QueryBase> & Partial<Pick<Ast.SelectQuery, 'distinct' | 'reduced'>>,
673
+ ): Builder<K, R, O> {
674
+ // SAFETY: patching fields of a query keeps its kind `K`; the spread only loses the
675
+ // discriminant's narrowing.
676
+ return new Builder({ ...this.query, ...patch } as QueryOf<K>);
677
+ }
678
+
679
+ private append(patterns: ReadonlyArray<Ast.Pattern>): Builder<K, R, O> {
680
+ return this.with({ where: group(this.query.where.patterns, patterns) });
681
+ }
682
+
683
+ /** Adds patterns to the `WHERE` clause. */
684
+ where(...patterns: ReadonlyArray<PatternInput>): Builder<K, R, O> {
685
+ return this.append(flatten(patterns));
686
+ }
687
+
688
+ /** Adds an `OPTIONAL { … }` block. */
689
+ optional(...patterns: ReadonlyArray<PatternInput>): Builder<K, R, O> {
690
+ return this.append([optional(...patterns)]);
691
+ }
692
+
693
+ /** Adds a `MINUS { … }` block. */
694
+ minus(...patterns: ReadonlyArray<PatternInput>): Builder<K, R, O> {
695
+ return this.append([minus(...patterns)]);
696
+ }
697
+
698
+ /** Adds a `UNION` of alternatives. */
699
+ union(...alternatives: ReadonlyArray<PatternInput>): Builder<K, R, O> {
700
+ return this.append([union(...alternatives)]);
701
+ }
702
+
703
+ /** Adds a `FILTER`. */
704
+ filter(expression: ExpressionInput): Builder<K, R, O> {
705
+ return this.append([filter(expression)]);
706
+ }
707
+
708
+ /** Adds a `BIND`. */
709
+ bind(expression: ExpressionInput, name: string | Term.Variable): Builder<K, R, O> {
710
+ return this.append([bind(expression, name)]);
711
+ }
712
+
713
+ /** Adds a `GRAPH` block. */
714
+ graph(name: Ast.VarOrIri, ...patterns: ReadonlyArray<PatternInput>): Builder<K, R, O> {
715
+ return this.append([graph(name, ...patterns)]);
716
+ }
717
+
718
+ /** Adds inline data. */
719
+ values(rows: Parameters<typeof values>[0]): Builder<K, R, O> {
720
+ return this.append([values(rows)]);
721
+ }
722
+
723
+ /** Adds `GROUP BY` conditions (expressions or `as(expr, name)`). */
724
+ groupBy(
725
+ ...conditions: ReadonlyArray<ExpressionInput | Alias<string, boolean>>
726
+ ): Builder<K, R, O> {
727
+ return this.with({
728
+ groupBy: [
729
+ ...this.query.groupBy,
730
+ ...conditions.map((c): Ast.GroupCondition =>
731
+ isAlias(c)
732
+ ? { expression: c.expression, variable: Term.variable(c.name) }
733
+ : { expression: toExpression(c) },
734
+ ),
735
+ ],
736
+ });
737
+ }
738
+
739
+ /** Adds `HAVING` conditions. */
740
+ having(...conditions: ReadonlyArray<ExpressionInput>): Builder<K, R, O> {
741
+ return this.with({ having: [...this.query.having, ...conditions.map(toExpression)] });
742
+ }
743
+
744
+ /** Adds `ORDER BY` conditions (ascending unless wrapped with `desc`). */
745
+ orderBy(...conditions: ReadonlyArray<ExpressionInput | Ast.OrderCondition>): Builder<K, R, O> {
746
+ return this.with({
747
+ orderBy: [
748
+ ...this.query.orderBy,
749
+ ...conditions.map((c) => (isOrderCondition(c) ? c : asc(c))),
750
+ ],
751
+ });
752
+ }
753
+
754
+ /** Sets `LIMIT`. */
755
+ limit(limit: number): Builder<K, R, O> {
756
+ return this.with({ limit });
757
+ }
758
+
759
+ /** Sets `OFFSET`. */
760
+ offset(offset: number): Builder<K, R, O> {
761
+ return this.with({ offset });
762
+ }
763
+
764
+ /** Makes a `SELECT` query `DISTINCT`. */
765
+ distinct(): Builder<K, R, O> {
766
+ return this.with({ distinct: true, reduced: false });
767
+ }
768
+
769
+ /** Makes a `SELECT` query `REDUCED`. */
770
+ reduced(): Builder<K, R, O> {
771
+ return this.with({ reduced: true, distinct: false });
772
+ }
773
+
774
+ /** Adds `FROM` graphs. */
775
+ from(...graphs: ReadonlyArray<Term.NamedNode>): Builder<K, R, O> {
776
+ const d = this.query.dataset ?? { default: [], named: [] };
777
+ return this.with({ dataset: { default: [...d.default, ...graphs], named: d.named } });
778
+ }
779
+
780
+ /** Adds `FROM NAMED` graphs. */
781
+ fromNamed(...graphs: ReadonlyArray<Term.NamedNode>): Builder<K, R, O> {
782
+ const d = this.query.dataset ?? { default: [], named: [] };
783
+ return this.with({ dataset: { default: d.default, named: [...d.named, ...graphs] } });
784
+ }
785
+
786
+ /** Declares prefixes (used when printing). */
787
+ prefixes(prefixes: Readonly<Record<string, string>>): Builder<K, R, O> {
788
+ return this.with({
789
+ prologue: {
790
+ ...this.query.prologue,
791
+ prefixes: { ...this.query.prologue.prefixes, ...prefixes },
792
+ },
793
+ });
794
+ }
795
+
796
+ /** The query AST. */
797
+ build(): QueryOf<K> {
798
+ return this.query;
799
+ }
800
+
801
+ /** The query as SPARQL text. */
802
+ toString(): string {
803
+ return Generator.print(this.query);
804
+ }
805
+
806
+ pipe() {
807
+ return pipeArguments(this, arguments);
808
+ }
809
+ }
810
+
811
+ const empty = Ast.group([]);
812
+
813
+ const projectionItem = (item: SelectItem): Term.Variable | Ast.Projection => {
814
+ if (Predicate.isString(item)) return Term.variable(item);
815
+ return Match.value(item).pipe(
816
+ Match.tag('Variable', (x): Term.Variable | Ast.Projection => x),
817
+ Match.tag('Maybe', (m) => Term.variable(m.name)),
818
+ Match.tag('Alias', (a) => Ast.projection(a.expression, Term.variable(a.name))),
819
+ Match.exhaustive,
820
+ );
821
+ };
822
+
823
+ /**
824
+ * Starts a `SELECT` query. With no arguments, `SELECT *` (rows are then
825
+ * untyped records).
826
+ *
827
+ * @since 0.1.0
828
+ * @category constructors
829
+ */
830
+ export const select = <const Items extends ReadonlyArray<SelectItem>>(
831
+ ...items: Items
832
+ ): Builder<'Select', RequiredOf<Items[number]>, OptionalOf<Items[number]>> =>
833
+ new Builder(
834
+ Ast.select({
835
+ where: empty,
836
+ projection: Arr.isReadonlyArrayEmpty(items) ? '*' : items.map(projectionItem),
837
+ }),
838
+ );
839
+
840
+ /**
841
+ * Starts an `ASK` query.
842
+ *
843
+ * @since 0.1.0
844
+ * @category constructors
845
+ */
846
+ export const ask = (): Builder<'Ask'> => new Builder(Ast.ask({ where: empty }));
847
+
848
+ /**
849
+ * Starts a `CONSTRUCT` query with a template.
850
+ *
851
+ * @since 0.1.0
852
+ * @category constructors
853
+ */
854
+ export const construct = (
855
+ ...template: ReadonlyArray<Ast.TriplePattern | Ast.PathPattern>
856
+ ): Builder<'Construct'> =>
857
+ new Builder(
858
+ Ast.construct({
859
+ where: empty,
860
+ template: template.filter((t): t is Ast.TriplePattern =>
861
+ Predicate.isTagged(t, 'TriplePattern'),
862
+ ),
863
+ }),
864
+ );
865
+
866
+ /**
867
+ * Starts a `DESCRIBE` query.
868
+ *
869
+ * @since 0.1.0
870
+ * @category constructors
871
+ */
872
+ export const describe = (...terms: ReadonlyArray<Ast.VarOrIri>): Builder<'Describe'> =>
873
+ new Builder(Ast.describe({ terms: Arr.isReadonlyArrayEmpty(terms) ? '*' : terms }));
874
+
875
+ // -----------------------------------------------------------------------------
876
+ // Execution
877
+ // -----------------------------------------------------------------------------
878
+
879
+ /**
880
+ * Executes a `SELECT` builder, streaming typed rows.
881
+ *
882
+ * @since 0.1.0
883
+ * @category execution
884
+ */
885
+ export const execute = <R extends string, O extends string>(
886
+ builder: Builder<'Select', R, O>,
887
+ options?: Engine.RequestOptions,
888
+ ): Stream.Stream<Row<R, O>, Engine.SparqlError, Engine.SparqlEngine> =>
889
+ Stream.unwrap(
890
+ Effect.gen(function* () {
891
+ const engine = yield* Engine.SparqlEngine;
892
+ const result = yield* engine.select(builder.build(), options);
893
+ // SAFETY: the builder's type parameters track the projected variables, so a row has exactly
894
+ // `R` and optional `O` keys.
895
+ return Stream.map(result.bindings, (b) => B.toRecord(b) as Row<R, O>);
896
+ }),
897
+ );
898
+
899
+ /**
900
+ * Executes a `SELECT` builder and collects all rows.
901
+ *
902
+ * @since 0.1.0
903
+ * @category execution
904
+ */
905
+ export const executeAll = <R extends string, O extends string>(
906
+ builder: Builder<'Select', R, O>,
907
+ options?: Engine.RequestOptions,
908
+ ): Effect.Effect<ReadonlyArray<Row<R, O>>, Engine.SparqlError, Engine.SparqlEngine> =>
909
+ Stream.runCollect(execute(builder, options));
910
+
911
+ /**
912
+ * Executes a `SELECT` builder and decodes each row with a schema (whose
913
+ * fields are typically `TermSchema` codecs).
914
+ *
915
+ * @since 0.1.0
916
+ * @category execution
917
+ */
918
+ export const decode = <R extends string, O extends string, A, RD>(
919
+ builder: Builder<'Select', R, O>,
920
+ schema: Schema.Decoder<A, RD>,
921
+ options?: Engine.RequestOptions,
922
+ ): Stream.Stream<A, Engine.SparqlError | Schema.SchemaError, Engine.SparqlEngine | RD> =>
923
+ Stream.mapEffect(execute(builder, options), (row) => Schema.decodeUnknownEffect(schema)(row));
924
+
925
+ /**
926
+ * Executes an `ASK` builder.
927
+ *
928
+ * @since 0.1.0
929
+ * @category execution
930
+ */
931
+ export const executeAsk = (
932
+ builder: Builder<'Ask'>,
933
+ options?: Engine.RequestOptions,
934
+ ): Effect.Effect<boolean, Engine.SparqlError, Engine.SparqlEngine> =>
935
+ Effect.flatMap(Effect.service(Engine.SparqlEngine), (engine) =>
936
+ engine.ask(builder.build(), options),
937
+ );
938
+
939
+ /**
940
+ * Executes a `CONSTRUCT` or `DESCRIBE` builder, streaming triples.
941
+ *
942
+ * @since 0.1.0
943
+ * @category execution
944
+ */
945
+ export const executeGraph = (
946
+ builder: Builder<'Construct'> | Builder<'Describe'>,
947
+ options?: Engine.RequestOptions,
948
+ ): Stream.Stream<Term.Quad, Engine.SparqlError, Engine.SparqlEngine> =>
949
+ Stream.unwrap(
950
+ Effect.flatMap(Effect.service(Engine.SparqlEngine), (engine) =>
951
+ engine.construct(builder.build(), options),
952
+ ),
953
+ );