@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,1162 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { B as isNamedNode, K as isTriple, N as isBlankNode, P as isDefaultGraph, U as isResource, q as isVariable, rt as triple, z as isLiteral } from "./Term-CFLG1qu4.mjs";
3
+ import { E as match, t as DatasetSchema } from "./Dataset-BlmlcI7J.mjs";
4
+ import { _ as isValidLexical, g as isNumericDatatype } from "./Xsd-Cdgx5zRB.mjs";
5
+ import { c as withExternalCode, t as SemActHandler } from "./SemAct-CmyT4yI8.mjs";
6
+ import { n as ShExImportError, o as ShExValidationError } from "./ShExError-CVtq2NnM.mjs";
7
+ import { A as cardinality } from "./ShExJ-COiPd9Xw.mjs";
8
+ import { a as isStart, c as resolve } from "./ShapeMap-CsgKxB2G.mjs";
9
+ import { n as check, o as iterate, r as makeIndex } from "./Structure-BjMo4Bkc.mjs";
10
+ import * as Arr from "effect/Array";
11
+ import * as Iterable from "effect/Iterable";
12
+ import * as MutableHashMap from "effect/MutableHashMap";
13
+ import * as MutableHashSet from "effect/MutableHashSet";
14
+ import * as Option from "effect/Option";
15
+ import * as Predicate from "effect/Predicate";
16
+ import * as Schema from "effect/Schema";
17
+ import * as SchemaTransformation from "effect/SchemaTransformation";
18
+ import * as Effect from "effect/Effect";
19
+ import * as Match from "effect/Match";
20
+ import * as SchemaIssue from "effect/SchemaIssue";
21
+ import * as Context from "effect/Context";
22
+ import * as Layer from "effect/Layer";
23
+ import * as Result from "effect/Result";
24
+ // src/shex/internal/xpathRegex.ts
25
+ /**
26
+ * Translation of XPath / XML Schema regular expressions (as used by the
27
+ * ShEx `pattern` facet and `fn:matches`) to JavaScript `RegExp`s.
28
+ *
29
+ * Handled differences: `.` excludes only `\n` and `\r`; `\d`, `\w`, `\i`,
30
+ * `\c` and their complements use the XML Schema definitions; character class
31
+ * subtraction (`[a-z-[aeiou]]`); `\p{IsBlock}` names; the `x` flag removes
32
+ * whitespace; escapes JavaScript rejects in Unicode mode are normalised.
33
+ *
34
+ * @internal
35
+ */
36
+ const NAME_START = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}";
37
+ const NAME_CHAR = `${NAME_START}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;
38
+ /** Class body fragments for the multi-character escapes. */
39
+ const CLASS_ESCAPES = {
40
+ d: {
41
+ body: "\\p{Nd}",
42
+ negated: false
43
+ },
44
+ D: {
45
+ body: "\\p{Nd}",
46
+ negated: true
47
+ },
48
+ w: {
49
+ body: "\\p{L}\\p{M}\\p{N}\\p{S}",
50
+ negated: false
51
+ },
52
+ W: {
53
+ body: "\\p{L}\\p{M}\\p{N}\\p{S}",
54
+ negated: true
55
+ },
56
+ s: {
57
+ body: " \\t\\n\\r",
58
+ negated: false
59
+ },
60
+ S: {
61
+ body: " \\t\\n\\r",
62
+ negated: true
63
+ },
64
+ i: {
65
+ body: NAME_START,
66
+ negated: false
67
+ },
68
+ I: {
69
+ body: NAME_START,
70
+ negated: true
71
+ },
72
+ c: {
73
+ body: NAME_CHAR,
74
+ negated: false
75
+ },
76
+ C: {
77
+ body: NAME_CHAR,
78
+ negated: true
79
+ }
80
+ };
81
+ const BLOCKS = {
82
+ BasicLatin: "\\u0000-\\u007F",
83
+ "Latin-1Supplement": "\\u0080-\\u00FF",
84
+ LatinExtended_A: "\\u0100-\\u017F",
85
+ "LatinExtended-A": "\\u0100-\\u017F",
86
+ "LatinExtended-B": "\\u0180-\\u024F",
87
+ IPAExtensions: "\\u0250-\\u02AF",
88
+ Greek: "\\u0370-\\u03FF",
89
+ GreekandCoptic: "\\u0370-\\u03FF",
90
+ Cyrillic: "\\u0400-\\u04FF",
91
+ Hebrew: "\\u0590-\\u05FF",
92
+ Arabic: "\\u0600-\\u06FF",
93
+ CJKUnifiedIdeographs: "\\u4E00-\\u9FFF",
94
+ Hiragana: "\\u3040-\\u309F",
95
+ Katakana: "\\u30A0-\\u30FF"
96
+ };
97
+ const SYNTAX = MutableHashSet.make("^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", "|", "/");
98
+ const escapeOf = Match.fn((c, _t) => c).pipe(Match.withReturnType(), Match.when("n", () => ({
99
+ kind: "char",
100
+ text: "\\n"
101
+ })), Match.when("r", () => ({
102
+ kind: "char",
103
+ text: "\\r"
104
+ })), Match.when("t", () => ({
105
+ kind: "char",
106
+ text: "\\t"
107
+ })), Match.when(Match.is("p", "P"), (c, _c, t) => {
108
+ return {
109
+ kind: "class",
110
+ ...t.property(c === "P")
111
+ };
112
+ }), Match.orElse((c, _c, t) => {
113
+ const ce = CLASS_ESCAPES[c];
114
+ if (ce !== void 0) return {
115
+ kind: "class",
116
+ ...ce
117
+ };
118
+ if (/[0-9]/.test(c)) return {
119
+ kind: "char",
120
+ text: `\\${c}`
121
+ };
122
+ if (c === "-") return {
123
+ kind: "char",
124
+ text: "\\-"
125
+ };
126
+ if (MutableHashSet.has(SYNTAX, c)) return {
127
+ kind: "char",
128
+ text: `\\${c}`
129
+ };
130
+ return t.fail(`invalid escape \\${c}`);
131
+ }));
132
+ var Translator = class {
133
+ i = 0;
134
+ src;
135
+ dotAll;
136
+ extended;
137
+ constructor(src, dotAll, extended) {
138
+ this.src = src;
139
+ this.dotAll = dotAll;
140
+ this.extended = extended;
141
+ }
142
+ fail(msg) {
143
+ throw new SyntaxError(`${msg} at ${this.i} in /${this.src}/`);
144
+ }
145
+ /** Translates a property escape `\p{..}` / `\P{..}` (cursor after `p`/`P`). */
146
+ property(negated) {
147
+ if (this.src[this.i] !== "{") this.fail("expected {");
148
+ const end = this.src.indexOf("}", this.i);
149
+ if (end === -1) this.fail("unterminated property escape");
150
+ const name = this.src.slice(this.i + 1, end);
151
+ this.i = end + 1;
152
+ if (name.startsWith("Is")) {
153
+ const block = BLOCKS[name.slice(2)];
154
+ if (block === void 0) this.fail(`unsupported block ${name}`);
155
+ return {
156
+ body: block,
157
+ negated
158
+ };
159
+ }
160
+ return {
161
+ body: `\\p{${name}}`,
162
+ negated
163
+ };
164
+ }
165
+ /** Reads an escape inside or outside a class (cursor after the backslash). */
166
+ escape() {
167
+ const c = this.src[this.i++];
168
+ if (c === void 0) this.fail("dangling backslash");
169
+ return escapeOf(c, this);
170
+ }
171
+ /** Translates a character class (cursor after `[`); returns a JS fragment. */
172
+ charClass() {
173
+ const negated = this.src[this.i] === "^";
174
+ if (negated) this.i++;
175
+ const state = {
176
+ extra: [],
177
+ subtraction: Option.none()
178
+ };
179
+ const raw = Arr.unfold(true, (first) => Option.map(this.classAtom(first, state), (fragment) => [fragment, false])).join("");
180
+ const body = restoreRanges(raw);
181
+ const { extra } = state;
182
+ const set = Arr.isReadonlyArrayEmpty(extra) ? `[${negated ? "^" : ""}${body}]` : this.union(negated, [...body === "" ? [] : [`[${body}]`], ...extra]);
183
+ return Option.match(state.subtraction, {
184
+ onNone: () => set,
185
+ onSome: (subtraction) => `(?:(?!${subtraction})${set})`
186
+ });
187
+ }
188
+ /** A class with complemented escapes: the union of its alternatives (or its complement). */
189
+ union(negated, alts) {
190
+ const union = `(?:${alts.join("|")})`;
191
+ return negated ? `(?:(?!${union})[\\s\\S])` : union;
192
+ }
193
+ /**
194
+ * Reads the next atom of a character class, returning its body fragment,
195
+ * or none once the class ends (`]`, or a subtraction, which ends it).
196
+ */
197
+ classAtom(first, state) {
198
+ const c = this.src[this.i];
199
+ if (c === void 0) this.fail("unterminated character class");
200
+ if (c === "]" && !first) {
201
+ this.i++;
202
+ return Option.none();
203
+ }
204
+ if (c === "-" && this.src[this.i + 1] === "[") {
205
+ this.i += 2;
206
+ state.subtraction = Option.some(this.charClass());
207
+ if (this.src[this.i] !== "]") this.fail("expected ] after class subtraction");
208
+ this.i++;
209
+ return Option.none();
210
+ }
211
+ this.i++;
212
+ if (c === "\\") {
213
+ const e = this.escape();
214
+ if (e.kind === "char") return Option.some(e.text);
215
+ if (!e.negated) return Option.some(e.body);
216
+ state.extra.push(`[^${e.body}]`);
217
+ return Option.some("");
218
+ }
219
+ if (c === "[" || c === "/" || c === "{" || c === "}" || c === "(" || c === ")" || c === "|") return Option.some(`\\${c}`);
220
+ return Option.some(c === "-" ? "\\-" : c);
221
+ }
222
+ /** Translates the atom at the cursor (outside a class). */
223
+ atom() {
224
+ const c = this.src.charAt(this.i);
225
+ if (this.extended && /\s/.test(c)) {
226
+ this.i++;
227
+ return "";
228
+ }
229
+ if (c === "\\") {
230
+ this.i++;
231
+ const e = this.escape();
232
+ return e.kind === "char" ? e.text === "\\-" ? "-" : e.text : `[${e.negated ? "^" : ""}${e.body}]`;
233
+ }
234
+ if (c === "[") {
235
+ this.i++;
236
+ return this.charClass();
237
+ }
238
+ if (c === "{") {
239
+ const q = /^\{\d+(?:,\d*)?\}/.exec(this.src.slice(this.i));
240
+ if (q !== null) {
241
+ this.i += q[0].length;
242
+ return q[0];
243
+ }
244
+ this.i++;
245
+ return "\\{";
246
+ }
247
+ this.i++;
248
+ if (c === ".") return this.dotAll ? "[\\s\\S]" : "[^\\n\\r]";
249
+ if (c === "/") return "\\/";
250
+ if (c === "]" || c === "}") return `\\${c}`;
251
+ return c;
252
+ }
253
+ translate() {
254
+ return Arr.unfold(this, (t) => t.i < t.src.length ? Option.some([t.atom(), t]) : Option.none()).join("");
255
+ }
256
+ };
257
+ /**
258
+ * Inside a translated class body, a `-` between two class atoms that was
259
+ * written unescaped is a range; we escaped every `-` while scanning, so turn
260
+ * back those that had atoms on both sides in the source.
261
+ */
262
+ const restoreRanges = (body) => {
263
+ const atoms = body.match(CLASS_ATOM) ?? [];
264
+ const endpointAt = (k) => {
265
+ const a = atoms[k];
266
+ return a !== void 0 && isRangeEndpoint(a);
267
+ };
268
+ return Arr.map(atoms, (a, k) => a === "\\-" && endpointAt(k - 1) && endpointAt(k + 1) ? "-" : a).join("");
269
+ };
270
+ const CLASS_ATOM = /\\(?:[pP]\{[^}]*\}|u\{[0-9A-Fa-f]+\}|u[0-9A-Fa-f]{4}|.)|./gsu;
271
+ const isRangeEndpoint = (atom) => !/^\\[pPdDwWsS]/.test(atom) && atom !== "\\-";
272
+ /**
273
+ * Compiles an XPath regular expression with XPath flags (`s`, `m`, `i`, `x`,
274
+ * `q`) to a JavaScript `RegExp` (Unicode mode).
275
+ *
276
+ * @internal
277
+ */
278
+ const compileXPathRegex = (pattern, flags) => {
279
+ if (flags.includes("q")) {
280
+ const escaped = pattern.replace(/[\\^$.*+?()[\]{}|/-]/g, "\\$&");
281
+ return new RegExp(escaped, `u${flags.includes("i") ? "i" : ""}`);
282
+ }
283
+ const source = new Translator(pattern, flags.includes("s"), flags.includes("x")).translate();
284
+ let jsFlags = "u";
285
+ if (flags.includes("i")) jsFlags += "i";
286
+ if (flags.includes("m")) jsFlags += "m";
287
+ return new RegExp(source, jsFlags);
288
+ };
289
+ // src/shex/internal/nodeConstraint.ts
290
+ /**
291
+ * Node constraint evaluation (`satisfies2`): node kinds, datatypes, XML
292
+ * Schema string and numeric facets, and value sets.
293
+ *
294
+ * @internal
295
+ */
296
+ const XSD = "http://www.w3.org/2001/XMLSchema#";
297
+ const XSD_STRING = `${XSD}string`;
298
+ const RDF_LANG_STRING = "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString";
299
+ const decimalDerived = MutableHashSet.fromIterable([
300
+ "decimal",
301
+ "integer",
302
+ "nonPositiveInteger",
303
+ "negativeInteger",
304
+ "long",
305
+ "int",
306
+ "short",
307
+ "byte",
308
+ "nonNegativeInteger",
309
+ "unsignedLong",
310
+ "unsignedInt",
311
+ "unsignedShort",
312
+ "unsignedByte",
313
+ "positiveInteger"
314
+ ].map((l) => XSD + l));
315
+ /** The string a string facet applies to. */
316
+ const lexicalForm = (n) => isLiteral(n) || isNamedNode(n) || isBlankNode(n) ? n.value : n.key;
317
+ /** The number of code points (a lone surrogate counts as one, as string iteration does). */
318
+ const codePointLength = (s) => s.length - (s.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)?.length ?? 0);
319
+ const regexCache = MutableHashMap.empty();
320
+ /** Compiles (once) an XPath pattern; fails with the reason it is invalid. */
321
+ const getRegex = (pattern, flags) => {
322
+ const key = `${flags}/${pattern}`;
323
+ return Option.getOrElse(MutableHashMap.get(regexCache, key), () => {
324
+ const re = Result.try({
325
+ try: () => compileXPathRegex(pattern, flags),
326
+ catch: (e) => Predicate.hasProperty(e, "message") && Predicate.isString(e.message) ? e.message : String(e)
327
+ });
328
+ MutableHashMap.set(regexCache, key, re);
329
+ return re;
330
+ });
331
+ };
332
+ const decimalParts = (lexical) => {
333
+ const m = /^([+-]?)(\d*)(?:\.(\d*))?$/.exec(lexical.trim());
334
+ if (m === null || (m[2] ?? "") === "" && (m[3] ?? "") === "") return Option.none();
335
+ const int = (m[2] ?? "").replace(/^0+/, "");
336
+ const frac = (m[3] ?? "").replace(/0+$/, "");
337
+ return Option.some({
338
+ negative: m[1] === "-" && (int !== "" || frac !== ""),
339
+ int,
340
+ frac
341
+ });
342
+ };
343
+ const compareDecimalParts = (a, b) => {
344
+ if (a.negative !== b.negative) return a.negative ? -1 : 1;
345
+ const sign = a.negative ? -1 : 1;
346
+ if (a.int.length !== b.int.length) return sign * (a.int.length < b.int.length ? -1 : 1);
347
+ if (a.int !== b.int) return sign * (a.int < b.int ? -1 : 1);
348
+ const len = Math.max(a.frac.length, b.frac.length);
349
+ const fa = a.frac.padEnd(len, "0");
350
+ const fb = b.frac.padEnd(len, "0");
351
+ if (fa === fb) return 0;
352
+ return sign * (fa < fb ? -1 : 1);
353
+ };
354
+ const numberToDecimalParts = (n) => {
355
+ if (!Number.isFinite(n)) return Option.none();
356
+ const s = String(n);
357
+ if (/e/i.test(s)) {
358
+ const m = /^(-?)(\d+)(?:\.(\d+))?e([+-]\d+)$/i.exec(s);
359
+ if (m === null) return Option.none();
360
+ const digits = (m[2] ?? "") + (m[3] ?? "");
361
+ const exp = parseInt(m[4] ?? "", 10) - (m[3] ?? "").length;
362
+ const body = exp >= 0 ? digits + "0".repeat(exp) : (() => {
363
+ const padded = digits.padStart(-exp + 1, "0");
364
+ return `${padded.slice(0, exp)}.${padded.slice(exp)}`;
365
+ })();
366
+ return decimalParts(m[1] + body);
367
+ }
368
+ return decimalParts(s);
369
+ };
370
+ const numericValue = (n) => {
371
+ if (!isLiteral(n)) return Option.none();
372
+ const dt = n.datatype.value;
373
+ if (!isNumericDatatype(dt) || !isValidLexical(dt, n.value)) return Option.none();
374
+ if (MutableHashSet.has(decimalDerived, dt)) return Option.map(decimalParts(n.value), (parts) => ({
375
+ kind: "decimal",
376
+ parts
377
+ }));
378
+ const v = n.value.trim();
379
+ const value = v === "INF" || v === "+INF" ? Infinity : v === "-INF" ? -Infinity : v === "NaN" ? NaN : Number(v);
380
+ return Option.some({
381
+ kind: "float",
382
+ value
383
+ });
384
+ };
385
+ /** Compares a numeric value with a facet; returns NaN when incomparable. */
386
+ const compareWith = (v, facet) => {
387
+ if (v.kind === "decimal") {
388
+ const { parts } = v;
389
+ return Option.match(numberToDecimalParts(facet), {
390
+ onNone: () => Number.isNaN(facet) ? NaN : facet === Infinity ? -1 : 1,
391
+ onSome: (f) => compareDecimalParts(parts, f)
392
+ });
393
+ }
394
+ if (Number.isNaN(v.value) || Number.isNaN(facet)) return NaN;
395
+ return v.value < facet ? -1 : v.value > facet ? 1 : 0;
396
+ };
397
+ const lowerEq = (a, b) => a.toLowerCase() === b.toLowerCase();
398
+ /** Basic language-range filtering (RFC 4647 §3.3.1). */
399
+ const languageMatches = (tag, range) => {
400
+ if (range === "" || range === "*") return tag !== "";
401
+ const t = tag.toLowerCase();
402
+ const r = range.toLowerCase();
403
+ return t === r || t.startsWith(`${r}-`);
404
+ };
405
+ const literalEquals = (n, v) => {
406
+ if (n.value !== v.value) return false;
407
+ if (v.language !== void 0) return n.language !== "" && lowerEq(n.language, v.language);
408
+ if (n.language !== "") return false;
409
+ return n.datatype.value === (v.type ?? XSD_STRING);
410
+ };
411
+ /**
412
+ * Whether a value is in an IRI or literal stem range: under its stem (any
413
+ * value, for a wildcard) and under none of its exclusions.
414
+ */
415
+ const inStemRange = (value, range) => (!Predicate.isString(range.stem) || value.startsWith(range.stem)) && !range.exclusions.some((e) => Predicate.isString(e) ? value === e : value.startsWith(e.stem));
416
+ const stemValueMatches = Match.fn((v, _n) => v).pipe(Match.withReturnType(), Match.when({ type: "IriStem" }, (v, _v, n) => isNamedNode(n) && n.value.startsWith(v.stem)), Match.when({ type: "IriStemRange" }, (v, _v, n) => isNamedNode(n) && inStemRange(n.value, v)), Match.when({ type: "LiteralStem" }, (v, _v, n) => isLiteral(n) && n.value.startsWith(v.stem)), Match.when({ type: "LiteralStemRange" }, (v, _v, n) => isLiteral(n) && inStemRange(n.value, v)), Match.when({ type: "Language" }, (v, _v, n) => isLiteral(n) && n.language !== "" && lowerEq(n.language, v.languageTag)), Match.when({ type: "LanguageStem" }, (v, _v, n) => isLiteral(n) && n.language !== "" && languageMatches(n.language, v.stem)), Match.when({ type: "LanguageStemRange" }, (v, _v, n) => {
417
+ if (!isLiteral(n) || n.language === "") return false;
418
+ if (Predicate.isString(v.stem) && !languageMatches(n.language, v.stem)) return false;
419
+ return !v.exclusions.some((e) => Predicate.isString(e) ? lowerEq(n.language, e) : languageMatches(n.language, e.stem));
420
+ }), Match.orElse(() => false));
421
+ /**
422
+ * Whether a term matches a value set value.
423
+ *
424
+ * @internal
425
+ */
426
+ const valueMatches = (n, v) => {
427
+ if (Predicate.isString(v)) return isNamedNode(n) && n.value === v;
428
+ if (!("type" in v) || "value" in v) return isLiteral(n) && literalEquals(n, v);
429
+ return stemValueMatches(v, n);
430
+ };
431
+ const failure = (cond, message) => cond ? Option.some(message()) : Option.none();
432
+ const nodeKindFailure = Match.fn((nc, _n) => nc.nodeKind).pipe(Match.withReturnType(), Match.when("iri", (_kind, _nc, n) => failure(!isNamedNode(n), () => `${n.key} is not an IRI`)), Match.when("bnode", (_kind, _nc, n) => failure(!isBlankNode(n), () => `${n.key} is not a blank node`)), Match.when("literal", (_kind, _nc, n) => failure(!isLiteral(n), () => `${n.key} is not a literal`)), Match.when("nonliteral", (_kind, _nc, n) => failure(!isResource(n), () => `${n.key} is not an IRI or blank node`)), Match.orElse(() => Option.none()));
433
+ /** The numeric range facets: how each reads its limit, and which comparisons it accepts. */
434
+ const numericFacets = [
435
+ [
436
+ "mininclusive",
437
+ (nc) => Option.fromUndefinedOr(nc.mininclusive),
438
+ (c) => c >= 0
439
+ ],
440
+ [
441
+ "minexclusive",
442
+ (nc) => Option.fromUndefinedOr(nc.minexclusive),
443
+ (c) => c > 0
444
+ ],
445
+ [
446
+ "maxinclusive",
447
+ (nc) => Option.fromUndefinedOr(nc.maxinclusive),
448
+ (c) => c <= 0
449
+ ],
450
+ [
451
+ "maxexclusive",
452
+ (nc) => Option.fromUndefinedOr(nc.maxexclusive),
453
+ (c) => c < 0
454
+ ]
455
+ ];
456
+ /** The datatype check of a node constraint with a `datatype`. */
457
+ const datatypeFailure = (n, datatype) => {
458
+ if (!isLiteral(n)) return Option.some(`${n.key} is not a literal of datatype <${datatype}>`);
459
+ if ((n.language !== "" ? RDF_LANG_STRING : n.datatype.value) !== datatype && !(n.language !== "" && n.datatype.value === datatype)) return Option.some(`${n.key} does not have datatype <${datatype}>`);
460
+ return failure(n.language === "" && (!isValidLexical(datatype, n.value) || (datatype === `${XSD}float` || datatype === `${XSD}double`) && n.value === "+INF"), () => `${n.key} is not a valid <${datatype}>`);
461
+ };
462
+ /** The string facets (`length`, `minlength`, `maxlength`, `pattern`). */
463
+ const stringFacetFailure = (n, nc) => {
464
+ const lex = lexicalForm(n);
465
+ const len = codePointLength(lex);
466
+ if (nc.length !== void 0 && len !== nc.length) return Option.some(`${n.key} has length ${len}, expected ${nc.length}`);
467
+ if (nc.minlength !== void 0 && len < nc.minlength) return Option.some(`${n.key} has length ${len}, expected at least ${nc.minlength}`);
468
+ if (nc.maxlength !== void 0 && len > nc.maxlength) return Option.some(`${n.key} has length ${len}, expected at most ${nc.maxlength}`);
469
+ if (nc.pattern === void 0) return Option.none();
470
+ const compiled = getRegex(nc.pattern, nc.flags ?? "");
471
+ if (Result.isFailure(compiled)) return Option.some(`invalid pattern /${nc.pattern}/: ${compiled.failure}`);
472
+ const re = compiled.success;
473
+ re.lastIndex = 0;
474
+ return failure(!re.test(lex), () => `${n.key} does not match /${nc.pattern}/${nc.flags ?? ""}`);
475
+ };
476
+ /** The numeric range facets, in order: the first one the node violates. */
477
+ const numericFacetFailure = (n, nc) => Arr.findFirst(numericFacets, ([facet, limitOf, ok]) => Option.flatMap(limitOf(nc), (limit) => Option.match(numericValue(n), {
478
+ onNone: () => Option.some(`${n.key} is not numeric (${facet})`),
479
+ onSome: (v) => failure(!ok(compareWith(v, limit)), () => `${n.key} violates ${facet} ${limit}`)
480
+ })));
481
+ /** The digits facets (`totaldigits`, `fractiondigits`). */
482
+ const digitsFailure = (n, nc) => {
483
+ const parts = isLiteral(n) && MutableHashSet.has(decimalDerived, n.datatype.value) && isValidLexical(n.datatype.value, n.value) ? decimalParts(n.value) : Option.none();
484
+ return Option.match(parts, {
485
+ onNone: () => Option.some(`${n.key} is not an xsd:decimal value`),
486
+ onSome: ({ int, frac }) => {
487
+ const total = Math.max(1, int.length + frac.length);
488
+ if (nc.totaldigits !== void 0 && total > nc.totaldigits) return Option.some(`${n.key} has ${total} digits, expected at most ${nc.totaldigits}`);
489
+ return failure(nc.fractiondigits !== void 0 && frac.length > nc.fractiondigits, () => `${n.key} has ${frac.length} fraction digits, expected at most ${nc.fractiondigits}`);
490
+ }
491
+ });
492
+ };
493
+ /**
494
+ * Evaluates a node constraint (without its semantic actions): none on
495
+ * success, or the reason it fails.
496
+ *
497
+ * @internal
498
+ */
499
+ const checkNodeConstraint = (n, nc) => {
500
+ const kindFailure = nodeKindFailure(nc, n);
501
+ if (Option.isSome(kindFailure)) return kindFailure;
502
+ if (nc.datatype !== void 0) {
503
+ const f = datatypeFailure(n, nc.datatype);
504
+ if (Option.isSome(f)) return f;
505
+ }
506
+ if (nc.length !== void 0 || nc.minlength !== void 0 || nc.maxlength !== void 0 || nc.pattern !== void 0) {
507
+ const f = stringFacetFailure(n, nc);
508
+ if (Option.isSome(f)) return f;
509
+ }
510
+ const numeric = numericFacetFailure(n, nc);
511
+ if (Option.isSome(numeric)) return numeric;
512
+ if (nc.totaldigits !== void 0 || nc.fractiondigits !== void 0) {
513
+ const f = digitsFailure(n, nc);
514
+ if (Option.isSome(f)) return f;
515
+ }
516
+ return failure(nc.values !== void 0 && !nc.values.some((v) => valueMatches(n, v)), () => `${n.key} is not in the value set`);
517
+ };
518
+ // src/shex/internal/engine.ts
519
+ /**
520
+ * The ShEx validation engine: a synchronous evaluator of `satisfies` with
521
+ * memoisation and coinductive (greatest fixed point) handling of recursive
522
+ * references, partition search for triple expressions over bags of triple
523
+ * constraint assignments, and ShEx 2.2 `EXTENDS` / `ABSTRACT` /
524
+ * `RESTRICTS` semantics.
525
+ *
526
+ * @internal
527
+ */
528
+ const FULL = {
529
+ arcs: Option.none(),
530
+ target: Option.none(),
531
+ partitionClosed: false
532
+ };
533
+ const success = Option.none();
534
+ const unused = {
535
+ used: false,
536
+ r: success
537
+ };
538
+ /** A failure reason as the messages print it (`undefined` when there is none). */
539
+ const show = (o) => Option.getOrElse(o, () => "undefined");
540
+ const bagKey = (bag) => bag.join(",");
541
+ const dedupe = (bags) => Arr.fromIterable(MutableHashMap.values(MutableHashMap.fromIterable(Arr.map(bags, (b) => [bagKey(b), b]))));
542
+ /** The first of the alternatives of a `ShapeOr` that `n` satisfies, preferring the target. */
543
+ const satisfiesOr = (e, engine, n, ctx, deps) => {
544
+ let first = Option.none();
545
+ let passed = false;
546
+ return Arr.some(e.shapeExprs, (c) => {
547
+ const before = Option.match(ctx.target, {
548
+ onNone: () => 0,
549
+ onSome: (t) => t.count
550
+ });
551
+ const r = engine.satisfies(n, c, ctx, deps, Option.none());
552
+ if (Option.isNone(r)) {
553
+ if (Option.match(ctx.target, {
554
+ onNone: () => true,
555
+ onSome: (t) => t.count > before
556
+ })) return true;
557
+ passed = true;
558
+ } else if (Option.isNone(first)) first = r;
559
+ return false;
560
+ }) || passed ? success : Option.some(`${n.key} matches none of the alternatives (${show(first)})`);
561
+ };
562
+ const satisfiesExpr = Match.fn((e, _engine, _n, _ctx, _deps, _declLabel) => e).pipe(Match.withReturnType(), Match.when({ type: "ShapeAnd" }, (e, _e, engine, n, ctx, deps) => Arr.findFirst(e.shapeExprs, (c) => engine.satisfies(n, c, ctx, deps, Option.none()))), Match.when({ type: "ShapeOr" }, (e, _e, engine, n, ctx, deps) => satisfiesOr(e, engine, n, ctx, deps)), Match.when({ type: "ShapeNot" }, (e, _e, engine, n, ctx, deps) => Option.isNone(engine.satisfies(n, e.shapeExpr, ctx, deps, Option.none())) ? Option.some(`${n.key} matches a negated shape expression`) : success), Match.when({ type: "NodeConstraint" }, (e, _e, engine, n) => {
563
+ const r = checkNodeConstraint(n, e);
564
+ if (Option.isSome(r)) return r;
565
+ return engine.runSemActs(e.semActs, {
566
+ site: "nodeConstraint",
567
+ node: n
568
+ });
569
+ }), Match.when({ type: "ShapeExternal" }, (_e, _input, engine, n, ctx, deps, declLabel) => Option.match(Option.flatMap(declLabel, (l) => MutableHashMap.get(engine.externs, l)), {
570
+ onNone: () => Option.some(`no definition available for external shape ${Option.getOrElse(declLabel, () => "undefined")}`),
571
+ onSome: (ext) => engine.satisfies(n, ext.shapeExpr, ctx, deps, Option.none())
572
+ })), Match.when({ type: "Shape" }, (e, _e, engine, n, ctx, deps) => engine.matchesShape(n, e, ctx, deps)), Match.exhaustive);
573
+ /** Appends to `out` the triple constraints of `tcs` it does not have yet. */
574
+ const addAll = (out, tcs) => tcs.forEach((tc) => {
575
+ if (!out.includes(tc)) out.push(tc);
576
+ });
577
+ const extensionTcsOf = Match.fn((e, _engine, _out, _seen) => e).pipe(Match.when({ type: "Shape" }, (e, _e, engine, out, seen) => {
578
+ addAll(out, engine.localTcs(e));
579
+ e.extends?.forEach((x) => engine.extensionTcs(x, out, seen));
580
+ }), Match.when({ type: Match.is("ShapeAnd", "ShapeOr") }, (e, _e, engine, out, seen) => {
581
+ e.shapeExprs.forEach((c) => engine.extensionTcs(c, out, seen));
582
+ }), Match.when({ type: "ShapeNot" }, (e, _e, engine, out, seen) => {
583
+ engine.extensionTcs(e.shapeExpr, out, seen);
584
+ }), Match.orElse(() => void 0));
585
+ /** The arcs of `quads` in one direction, each triple once. */
586
+ const arcsOf = (quads, dir, valueOf) => {
587
+ const seen = MutableHashSet.empty();
588
+ return Arr.filterMap(Arr.fromIterable(quads), (q) => {
589
+ const t = triple(q.subject, q.predicate, q.object);
590
+ if (MutableHashSet.has(seen, t.key)) return Result.failVoid;
591
+ MutableHashSet.add(seen, t.key);
592
+ return Result.succeed({
593
+ triple: t,
594
+ dir,
595
+ predicate: q.predicate.value,
596
+ value: valueOf(q)
597
+ });
598
+ });
599
+ };
600
+ var Engine = class {
601
+ cache = MutableHashMap.empty();
602
+ inProgress = MutableHashSet.empty();
603
+ neighbourhoods = MutableHashMap.empty();
604
+ shapeTcs = /* @__PURE__ */ new WeakMap();
605
+ index;
606
+ dataset;
607
+ handler;
608
+ externs;
609
+ constructor(index, dataset, handler, externs) {
610
+ this.index = index;
611
+ this.dataset = dataset;
612
+ this.handler = handler;
613
+ this.externs = externs;
614
+ }
615
+ neighbourhood(n) {
616
+ return Option.getOrElse(MutableHashMap.get(this.neighbourhoods, n.key), () => {
617
+ const arcs = [...isResource(n) || isTriple(n) ? arcsOf(match(this.dataset, { subject: n }), "out", (q) => q.object) : [], ...!isVariable(n) && !isDefaultGraph(n) ? arcsOf(match(this.dataset, { object: n }), "in", (q) => q.subject) : []];
618
+ MutableHashMap.set(this.neighbourhoods, n.key, arcs);
619
+ return arcs;
620
+ });
621
+ }
622
+ runSemActs(acts = [], context) {
623
+ return Arr.findFirst(acts, (act) => {
624
+ const r = this.handler(act, context);
625
+ return Option.isSome(r) && !r.value ? Option.some(`semantic action <${act.name}> failed`) : Option.none();
626
+ });
627
+ }
628
+ /** Validates `n` against a shape label (or a descendant) on its full neighbourhood. */
629
+ validateLabel(n, label, deps) {
630
+ return this.memoized(`${n.key}\u0000${label}`, deps, (local) => this.satisfiesDescendant(n, label, local));
631
+ }
632
+ /** Validates `n` against the start shape expression. */
633
+ validateStart(n, deps) {
634
+ const start = this.index.schema.start;
635
+ if (start === void 0) return Option.some("the schema has no start shape");
636
+ return this.memoized(`${n.key}\u0000\u0000START`, deps, (local) => this.satisfies(n, start, FULL, local, Option.none()));
637
+ }
638
+ /**
639
+ * Runs `check` once per `key` (a node and shape pair), caching its outcome.
640
+ * A key already in progress is a recursive reference: it succeeds for now
641
+ * and is reported to the caller in `deps`, and an outcome is cached only
642
+ * once it no longer depends on an unfinished key.
643
+ */
644
+ memoized(key, deps, check) {
645
+ const cached = MutableHashMap.get(this.cache, key);
646
+ if (Option.isSome(cached)) return cached.value;
647
+ if (MutableHashSet.has(this.inProgress, key)) {
648
+ MutableHashSet.add(deps, key);
649
+ return success;
650
+ }
651
+ MutableHashSet.add(this.inProgress, key);
652
+ const local = MutableHashSet.empty();
653
+ const result = Result.try(() => check(local));
654
+ MutableHashSet.remove(this.inProgress, key);
655
+ if (Result.isFailure(result)) throw result.failure;
656
+ const r = result.success;
657
+ MutableHashSet.remove(local, key);
658
+ if (Option.isSome(r) || MutableHashSet.size(local) === 0) MutableHashMap.set(this.cache, key, r);
659
+ Iterable.forEach(local, (d) => MutableHashSet.add(deps, d));
660
+ return r;
661
+ }
662
+ satisfiesDescendant(n, label, deps) {
663
+ if (this.index.shapes.get(label) === void 0) return Option.some(`unknown shape ${label}`);
664
+ const candidates = [label, ...this.index.descendants.get(label) ?? []].filter((l) => this.index.shapes.get(l)?.abstract !== true);
665
+ if (Arr.isReadonlyArrayEmpty(candidates)) return Option.some(`${label} is abstract and has no concrete extension`);
666
+ let first = Option.none();
667
+ return Arr.some(candidates, (c) => {
668
+ const target = c === label ? Option.none() : Option.some({
669
+ label,
670
+ count: 0
671
+ });
672
+ const r = this.satisfiesDecl(n, c, {
673
+ arcs: Option.none(),
674
+ target,
675
+ partitionClosed: false
676
+ }, deps);
677
+ if (Option.isNone(r) && Option.match(target, {
678
+ onNone: () => true,
679
+ onSome: (t) => t.count > 0
680
+ })) return true;
681
+ if (Option.isNone(first)) first = Option.orElse(r, () => Option.some(`${n.key} matches ${c} but not through ${label}`));
682
+ return false;
683
+ }) ? success : first;
684
+ }
685
+ satisfiesDecl(n, label, ctx, deps) {
686
+ const decl = this.index.shapes.get(label);
687
+ if (decl === void 0) return Option.some(`unknown shape ${label}`);
688
+ return Arr.findFirst([...decl.restricts ?? [], decl.shapeExpr], (e) => this.satisfies(n, e, ctx, deps, Option.some(label)));
689
+ }
690
+ satisfies(n, e, ctx, deps, declLabel) {
691
+ if (Predicate.isString(e)) {
692
+ if (Option.isNone(ctx.arcs)) return this.validateLabel(n, e, deps);
693
+ const r = this.satisfiesDecl(n, e, ctx, deps);
694
+ if (Option.isNone(r) && Option.isSome(ctx.target) && ctx.target.value.label === e) ctx.target.value.count++;
695
+ return r;
696
+ }
697
+ return satisfiesExpr(e, this, n, ctx, deps, declLabel);
698
+ }
699
+ /** The triple constraints of a triple expression (through inclusions). */
700
+ tcsOf(te, out, seen) {
701
+ if (Predicate.isString(te)) {
702
+ if (MutableHashSet.has(seen, te)) return;
703
+ MutableHashSet.add(seen, te);
704
+ const included = this.index.tripleExprs.get(te);
705
+ if (included !== void 0) this.tcsOf(included, out, seen);
706
+ return;
707
+ }
708
+ if (te.type === "TripleConstraint") {
709
+ if (!out.includes(te)) out.push(te);
710
+ } else te.expressions.forEach((c) => this.tcsOf(c, out, seen));
711
+ }
712
+ localTcs(shape) {
713
+ const cached = this.shapeTcs.get(shape);
714
+ if (cached !== void 0) return cached;
715
+ const out = [];
716
+ if (shape.expression !== void 0) this.tcsOf(shape.expression, out, MutableHashSet.empty());
717
+ this.shapeTcs.set(shape, out);
718
+ return out;
719
+ }
720
+ /** All triple constraints of the shapes an extension refers to (recursively). */
721
+ extensionTcs(e, out, seen) {
722
+ if (Predicate.isString(e)) {
723
+ if (MutableHashSet.has(seen, e)) return;
724
+ MutableHashSet.add(seen, e);
725
+ const decl = this.index.shapes.get(e);
726
+ if (decl !== void 0) {
727
+ decl.restricts?.forEach((r) => this.extensionTcs(r, out, seen));
728
+ this.extensionTcs(decl.shapeExpr, out, seen);
729
+ }
730
+ return;
731
+ }
732
+ extensionTcsOf(e, this, out, seen);
733
+ }
734
+ matchesShape(n, shape, ctx, deps) {
735
+ const arcs = Option.getOrElse(ctx.arcs, () => this.neighbourhood(n));
736
+ const closed = shape.closed === true || ctx.partitionClosed;
737
+ const local = this.localTcs(shape);
738
+ const extensions = shape.extends ?? [];
739
+ const extTcs = Arr.map(extensions, (x) => {
740
+ const out = [];
741
+ this.extensionTcs(x, out, MutableHashSet.empty());
742
+ return out;
743
+ });
744
+ const all = Arr.dedupeWith([...local, ...Arr.flatten(extTcs)], (a, b) => a === b);
745
+ const localIndex = new WeakMap(Arr.map(local, (tc, i) => [tc, i]));
746
+ const extGroupsOf = /* @__PURE__ */ new WeakMap();
747
+ extTcs.forEach((group, i) => group.forEach((tc) => {
748
+ if (localIndex.has(tc)) return;
749
+ const g = extGroupsOf.get(tc);
750
+ if (g === void 0) extGroupsOf.set(tc, [i]);
751
+ else g.push(i);
752
+ }));
753
+ const byPredicate = Arr.groupBy(all, (tc) => `${tc.inverse === true ? "in" : "out"} ${tc.predicate}`);
754
+ const extra = MutableHashSet.fromIterable(shape.extra ?? []);
755
+ const choices = [];
756
+ const valueCache = MutableHashMap.empty();
757
+ const valueOutcome = (tc, valueExpr, arc) => {
758
+ const ck = `${all.indexOf(tc)} ${arc.value.key}`;
759
+ return Option.getOrElse(MutableHashMap.get(valueCache, ck), () => {
760
+ const r = this.satisfies(arc.value, valueExpr, FULL, deps, Option.none());
761
+ MutableHashMap.set(valueCache, ck, r);
762
+ return r;
763
+ });
764
+ };
765
+ const arcFailure = Arr.findFirst(arcs, (arc) => {
766
+ const tcs = byPredicate[`${arc.dir} ${arc.predicate}`];
767
+ if (tcs === void 0) return arc.dir === "out" && closed ? Option.some(`closed shape does not allow ${arc.triple.key}`) : success;
768
+ let firstReason = Option.none();
769
+ const ok = Arr.filter(tcs, (tc) => {
770
+ if (tc.valueExpr === void 0) return true;
771
+ const r = valueOutcome(tc, tc.valueExpr, arc);
772
+ if (Option.isNone(r)) return true;
773
+ if (Option.isNone(firstReason)) firstReason = r;
774
+ return false;
775
+ });
776
+ if (Arr.isReadonlyArrayEmpty(ok)) return MutableHashSet.has(extra, arc.predicate) ? success : Option.some(`${arc.triple.key} does not match its triple constraint: ${show(firstReason)}`);
777
+ choices.push({
778
+ arc,
779
+ tcs: ok
780
+ });
781
+ return success;
782
+ });
783
+ if (Option.isSome(arcFailure)) return arcFailure;
784
+ const hasTcSemActs = local.some((tc) => tc.semActs !== void 0);
785
+ const tried = MutableHashSet.empty();
786
+ const assignment = [];
787
+ let firstFailure = Option.none();
788
+ const tryAssignment = () => {
789
+ const counts = Array.from({ length: local.length }, () => 0);
790
+ const partitions = extensions.map(() => []);
791
+ const keyParts = Arr.filterMap(assignment, ({ arc, tc }) => {
792
+ const li = localIndex.get(tc);
793
+ if (li !== void 0) {
794
+ counts[li] = (counts[li] ?? 0) + 1;
795
+ return hasTcSemActs ? Result.succeed(`L${li}`) : Result.failVoid;
796
+ }
797
+ const groups = extGroupsOf.get(tc) ?? [];
798
+ groups.forEach((g) => partitions[g]?.push(arc));
799
+ return Result.succeed(`E${groups.join(".")}`);
800
+ });
801
+ const key = `${counts.join(",")}|${keyParts.join("-")}`;
802
+ if (MutableHashSet.has(tried, key)) return Option.some("duplicate partition");
803
+ MutableHashSet.add(tried, key);
804
+ if (shape.expression !== void 0) {
805
+ if (!this.matchBag(shape.expression, counts, localIndex)) return Option.some(`the triples of ${n.key} do not match the triple expression`);
806
+ } else if (counts.some((c) => c > 0)) return Option.some("unexpected triples");
807
+ const extFailure = Arr.findFirst(extensions, (x, i) => this.satisfies(n, x, {
808
+ arcs: Option.some(partitions[i] ?? []),
809
+ target: ctx.target,
810
+ partitionClosed: closed
811
+ }, deps, Option.none()));
812
+ if (Option.isSome(extFailure)) return extFailure;
813
+ const matched = Arr.map(assignment, ({ arc }) => arc.triple);
814
+ const tcFailure = Arr.findFirst(assignment, ({ arc, tc }) => localIndex.has(tc) ? this.runSemActs(tc.semActs, {
815
+ site: "tripleConstraint",
816
+ node: n,
817
+ triple: arc.triple
818
+ }) : success);
819
+ if (Option.isSome(tcFailure)) return tcFailure;
820
+ if (shape.expression !== void 0) {
821
+ const r = this.groupSemActs(shape.expression, counts, localIndex, n, matched);
822
+ if (Option.isSome(r)) return r;
823
+ }
824
+ return this.runSemActs(shape.semActs, {
825
+ site: "shape",
826
+ node: n,
827
+ triples: matched
828
+ });
829
+ };
830
+ const search = (i) => {
831
+ const choice = choices[i];
832
+ if (choice === void 0) {
833
+ const r = tryAssignment();
834
+ if (Option.isNone(r)) return true;
835
+ if (r.value !== "duplicate partition" && Option.isNone(firstFailure)) firstFailure = r;
836
+ return false;
837
+ }
838
+ return Arr.some(choice.tcs, (tc) => {
839
+ assignment[i] = {
840
+ arc: choice.arc,
841
+ tc
842
+ };
843
+ return search(i + 1);
844
+ });
845
+ };
846
+ if (search(0)) return success;
847
+ return Option.orElse(firstFailure, () => Option.some(`${n.key} does not match the shape`));
848
+ }
849
+ /** Whether the bag of triple constraint counts matches the triple expression. */
850
+ matchBag(te, counts, localIndex) {
851
+ const zero = bagKey(counts.map(() => 0));
852
+ return this.step(te, counts, localIndex, 0).some((b) => bagKey(b) === zero);
853
+ }
854
+ resolveTe(te) {
855
+ return Predicate.isString(te) ? Option.fromUndefinedOr(this.index.tripleExprs.get(te)) : Option.some(te);
856
+ }
857
+ /** All bags remaining after `te` (with its cardinality) consumes part of `bag`. */
858
+ step(te0, bag, localIndex, depth) {
859
+ const resolved = this.resolveTe(te0);
860
+ if (Option.isNone(resolved) || depth > 64) return [];
861
+ const te = resolved.value;
862
+ const { min, max } = cardinality(te);
863
+ if (te.type === "TripleConstraint") {
864
+ const k = localIndex.get(te);
865
+ if (k === void 0) return min === 0 ? [bag] : [];
866
+ const avail = bag[k] ?? 0;
867
+ const hi = Math.min(max, avail);
868
+ return hi < min ? [] : Arr.map(Arr.range(min, hi), (c) => {
869
+ const nb = bag.slice();
870
+ nb[k] = avail - c;
871
+ return nb;
872
+ });
873
+ }
874
+ const once = (b) => te.type === "OneOf" ? dedupe(te.expressions.flatMap((x) => this.step(x, b, localIndex, depth + 1))) : Arr.reduce(te.expressions, [b], (sets, x) => Arr.isReadonlyArrayEmpty(sets) ? sets : dedupe(sets.flatMap((s) => this.step(x, s, localIndex, depth + 1))));
875
+ const result = MutableHashMap.empty();
876
+ if (min === 0) MutableHashMap.set(result, bagKey(bag), bag);
877
+ iterate({
878
+ i: 1,
879
+ frontier: [bag]
880
+ }, ({ i, frontier }) => {
881
+ if (i > max || Arr.isReadonlyArrayEmpty(frontier)) return Option.none();
882
+ const next = dedupe(frontier.flatMap(once));
883
+ if (i < min) return Option.some({
884
+ i: i + 1,
885
+ frontier: next
886
+ });
887
+ const fresh = Arr.filter(next, (b) => {
888
+ const k = bagKey(b);
889
+ if (MutableHashMap.has(result, k)) return false;
890
+ MutableHashMap.set(result, k, b);
891
+ return true;
892
+ });
893
+ return Option.some({
894
+ i: i + 1,
895
+ frontier: fresh
896
+ });
897
+ });
898
+ return Arr.fromIterable(MutableHashMap.values(result));
899
+ }
900
+ /** Runs the semantic actions of the groups (EachOf/OneOf) that took part in a match. */
901
+ groupSemActs(te0, counts, localIndex, n, triples) {
902
+ const visit = (node, seen) => {
903
+ if (Predicate.isString(node)) {
904
+ if (MutableHashSet.has(seen, node)) return unused;
905
+ MutableHashSet.add(seen, node);
906
+ }
907
+ const resolved = this.resolveTe(node);
908
+ if (Option.isNone(resolved)) return unused;
909
+ const te = resolved.value;
910
+ if (te.type === "TripleConstraint") {
911
+ const k = localIndex.get(te);
912
+ return {
913
+ used: k !== void 0 && (counts[k] ?? 0) > 0,
914
+ r: success
915
+ };
916
+ }
917
+ let used = false;
918
+ const failed = Arr.findFirst(te.expressions, (x) => {
919
+ const v = visit(x, seen);
920
+ if (Option.isSome(v.r)) return Option.some(v);
921
+ used ||= v.used;
922
+ return Option.none();
923
+ });
924
+ if (Option.isSome(failed)) return failed.value;
925
+ if (used || cardinality(te).min > 0) {
926
+ const r = this.runSemActs(te.semActs, {
927
+ site: "tripleExpression",
928
+ node: n,
929
+ triples
930
+ });
931
+ if (Option.isSome(r)) return {
932
+ used,
933
+ r
934
+ };
935
+ }
936
+ return {
937
+ used,
938
+ r: success
939
+ };
940
+ };
941
+ return visit(te0, MutableHashSet.empty()).r;
942
+ }
943
+ };
944
+ // src/shex/Validator.ts
945
+ /**
946
+ * ShEx validation: checks node/shape associations of a shape map against an
947
+ * RDF dataset per the ShEx 2.1 semantics (with the ShEx 2.2 `EXTENDS`,
948
+ * `ABSTRACT` and `RESTRICTS` extensions).
949
+ *
950
+ * Recursive references are evaluated coinductively (the maximal typing) and
951
+ * memoised; schemas are checked for the structural requirements, which
952
+ * guarantee a stratification so that negation is well-defined. Imports are
953
+ * loaded through the `SchemaLoader` service and semantic actions are
954
+ * dispatched to the `SemAct.SemActHandler` service.
955
+ *
956
+ * @since 0.1.0
957
+ */
958
+ var Validator_exports = /* @__PURE__ */ __exportAll({
959
+ SchemaLoader: () => SchemaLoader,
960
+ formatResult: () => formatResult,
961
+ loaderFromRecord: () => loaderFromRecord,
962
+ loaderLayer: () => loaderLayer,
963
+ make: () => make,
964
+ resolveImports: () => resolveImports,
965
+ schema: () => schema,
966
+ validate: () => validate,
967
+ validateNode: () => validateNode
968
+ });
969
+ /**
970
+ * The service used to resolve `IMPORT`s. The default loader fails for every
971
+ * import.
972
+ *
973
+ * @since 0.1.0
974
+ * @category services
975
+ */
976
+ const SchemaLoader = Context.Reference("@thomasfosterau/effect-rdf/shex/SchemaLoader", { defaultValue: () => ({ load: (iri) => Effect.fail(new ShExImportError({
977
+ iri,
978
+ message: "no SchemaLoader is configured"
979
+ })) }) });
980
+ /**
981
+ * A layer providing a `SchemaLoader`.
982
+ *
983
+ * @since 0.1.0
984
+ * @category layers
985
+ */
986
+ const loaderLayer = (loader) => Layer.succeed(SchemaLoader, loader);
987
+ /**
988
+ * A loader serving schemas from a map of IRIs (useful for tests and bundled
989
+ * schemas).
990
+ *
991
+ * @since 0.1.0
992
+ * @category constructors
993
+ */
994
+ const loaderFromRecord = (schemas) => ({ load: (iri) => {
995
+ const s = schemas[iri];
996
+ return s === void 0 ? Effect.fail(new ShExImportError({
997
+ iri,
998
+ message: "unknown schema"
999
+ })) : Effect.succeed(s);
1000
+ } });
1001
+ /**
1002
+ * Loads the imports of a schema (transitively, each IRI once) and merges
1003
+ * their declarations into it. The importing schema's `start` and `startActs`
1004
+ * are kept.
1005
+ *
1006
+ * @since 0.1.0
1007
+ * @category imports
1008
+ */
1009
+ const resolveImports = Effect.fnUntraced(function* (schema, schemaIri) {
1010
+ if (schema.imports === void 0 || Arr.isReadonlyArrayEmpty(schema.imports)) return schema;
1011
+ const loader = yield* SchemaLoader;
1012
+ const seen = MutableHashSet.fromIterable(schemaIri === void 0 ? [] : [schemaIri]);
1013
+ const shapes = [...schema.shapes ?? []];
1014
+ const labels = MutableHashSet.fromIterable(shapes.map((s) => s.id));
1015
+ const load = (queue) => Arr.match(queue, {
1016
+ onEmpty: () => Effect.void,
1017
+ onNonEmpty: ([iri, ...rest]) => {
1018
+ if (MutableHashSet.has(seen, iri)) return load(rest);
1019
+ MutableHashSet.add(seen, iri);
1020
+ return Effect.flatMap(loader.load(iri), (imported) => {
1021
+ imported.shapes?.forEach((d) => {
1022
+ if (MutableHashSet.has(labels, d.id)) return;
1023
+ MutableHashSet.add(labels, d.id);
1024
+ shapes.push(d);
1025
+ });
1026
+ return load([...rest, ...imported.imports ?? []]);
1027
+ });
1028
+ }
1029
+ });
1030
+ yield* load(schema.imports);
1031
+ const { imports: _, ...rest } = schema;
1032
+ return Arr.isReadonlyArrayNonEmpty(shapes) ? {
1033
+ ...rest,
1034
+ shapes
1035
+ } : rest;
1036
+ });
1037
+ const isFixedMap = (map) => map.every((a) => !Predicate.isTagged(a.node, "TriplePattern"));
1038
+ /**
1039
+ * Prepares a validator: loads imports through `SchemaLoader`, checks the
1040
+ * structural requirements and indexes the schema. Semantic actions are
1041
+ * dispatched to the `SemAct.SemActHandler` in scope when the validator is
1042
+ * made.
1043
+ *
1044
+ * @since 0.1.0
1045
+ * @category constructors
1046
+ */
1047
+ const make = Effect.fnUntraced(function* (schema, options = {}) {
1048
+ const resolved = yield* resolveImports(schema, options.schemaIri);
1049
+ yield* check(resolved);
1050
+ const index = makeIndex(resolved);
1051
+ const baseHandler = yield* SemActHandler;
1052
+ const handler = options.externalSemActs === void 0 ? baseHandler : withExternalCode(baseHandler, options.externalSemActs);
1053
+ const externs = MutableHashMap.fromIterable(Arr.map(options.externalShapes?.shapes ?? [], (d) => [d.id, d]));
1054
+ const validate = (dataset, shapeMap) => Effect.suspend(() => {
1055
+ const fixed = isFixedMap(shapeMap) ? shapeMap : resolve(shapeMap, dataset);
1056
+ const invalid = Arr.findFirst(fixed, (a) => isStart(a.shape) ? resolved.start === void 0 ? Option.some("the shape map uses START but the schema has no start") : Option.none() : index.shapes.has(a.shape) ? Option.none() : Option.some(`the schema does not declare shape ${a.shape}`));
1057
+ if (Option.isSome(invalid)) return Effect.fail(new ShExValidationError({ message: invalid.value }));
1058
+ const engine = new Engine(index, dataset, handler, externs);
1059
+ const startFailure = engine.runSemActs(resolved.startActs, {
1060
+ site: "start",
1061
+ node: void 0
1062
+ });
1063
+ const results = fixed.map((a) => {
1064
+ const reason = Option.orElse(startFailure, () => isStart(a.shape) ? engine.validateStart(a.node, MutableHashSet.empty()) : engine.validateLabel(a.node, a.shape, MutableHashSet.empty()));
1065
+ return Option.match(reason, {
1066
+ onNone: () => ({
1067
+ node: a.node,
1068
+ shape: a.shape,
1069
+ status: "conformant"
1070
+ }),
1071
+ onSome: (why) => ({
1072
+ node: a.node,
1073
+ shape: a.shape,
1074
+ status: "nonconformant",
1075
+ reason: why
1076
+ })
1077
+ });
1078
+ });
1079
+ const conformant = results.every((r) => r.status === "conformant");
1080
+ return Effect.as(Effect.annotateCurrentSpan({
1081
+ "shex.associations": results.length,
1082
+ "shex.nonconformant": results.filter((r) => r.status === "nonconformant").length,
1083
+ "shex.conformant": conformant
1084
+ }), {
1085
+ results,
1086
+ conformant
1087
+ });
1088
+ }).pipe(Effect.withSpan("ShEx.validate"));
1089
+ return {
1090
+ schema: resolved,
1091
+ index,
1092
+ validate
1093
+ };
1094
+ });
1095
+ /**
1096
+ * Validates a shape map against a dataset with a schema.
1097
+ *
1098
+ * @since 0.1.0
1099
+ * @category validation
1100
+ */
1101
+ const validate = (dataset, schema, shapeMap, options = {}) => Effect.flatMap(make(schema, options), (v) => v.validate(dataset, shapeMap));
1102
+ /**
1103
+ * Validates a single node against a shape label (or `START`).
1104
+ *
1105
+ * @since 0.1.0
1106
+ * @category validation
1107
+ */
1108
+ const validateNode = (dataset, schema, node, shape, options = {}) => Effect.map(validate(dataset, schema, [{
1109
+ node,
1110
+ shape
1111
+ }], options), (r) => Arr.getUnsafe(r.results, 0));
1112
+ /**
1113
+ * Formats a shape result on one line: `<node>@<shape>` and, when it does
1114
+ * not conform, why.
1115
+ *
1116
+ * @since 0.1.0
1117
+ * @category formatting
1118
+ */
1119
+ const formatResult = (result) => {
1120
+ const label = isStart(result.shape) ? "START" : `<${result.shape}>`;
1121
+ const association = `${result.node.key}@${label}`;
1122
+ return result.reason === void 0 ? `${association}: ${result.status}` : `${association}: ${result.reason}`;
1123
+ };
1124
+ const nonconformance = (failing, data, options) => {
1125
+ const issues = Arr.map(failing, (result) => new SchemaIssue.InvalidValue({
1126
+ message: formatResult(result),
1127
+ result
1128
+ }, result, options));
1129
+ return new SchemaIssue.Composite(DatasetSchema.ast, issues, data);
1130
+ };
1131
+ /**
1132
+ * A `Schema` that accepts a `Dataset` only if every association of the
1133
+ * shape map (or the single `{ node, shape }`) conforms, so ShEx validation
1134
+ * fits into `Schema.decode` pipelines. It takes a prepared `Validator`
1135
+ * (`make`), so imports are resolved before the schema is built and decoding
1136
+ * needs no services.
1137
+ *
1138
+ * Decoding fails with a `SchemaIssue.Composite` holding one `InvalidValue`
1139
+ * issue per nonconformant association: its `message` annotation is the
1140
+ * formatted result (`formatResult`) and its `result` annotation the
1141
+ * `ShapeResult`. A shape map naming an undeclared shape fails with one
1142
+ * `InvalidValue`. Encoding is the identity.
1143
+ *
1144
+ * Compose it with a syntax codec to parse and validate in one decode:
1145
+ * `Turtle.codec.schema.pipe(Schema.decodeTo(Validator.schema(validator, map)))`.
1146
+ *
1147
+ * @since 0.1.0
1148
+ * @category schemas
1149
+ */
1150
+ const schema = (validator, shapeMap) => {
1151
+ const map = "node" in shapeMap ? [shapeMap] : shapeMap;
1152
+ return DatasetSchema.pipe(Schema.decodeTo(DatasetSchema, SchemaTransformation.transformEffect({
1153
+ decode: (data, options) => validator.validate(data, map).pipe(Effect.mapError((e) => new SchemaIssue.InvalidValue({ message: e.message }, data, options)), Effect.flatMap((report) => {
1154
+ const failing = Arr.filter(report.results, (r) => r.status === "nonconformant");
1155
+ return Arr.isReadonlyArrayNonEmpty(failing) ? Effect.fail(nonconformance(failing, data, options)) : Effect.succeed(data);
1156
+ })),
1157
+ encode: (data) => Effect.succeed(data)
1158
+ })));
1159
+ };
1160
+ export { loaderLayer as a, schema as c, loaderFromRecord as i, validate as l, Validator_exports as n, make as o, formatResult as r, resolveImports as s, SchemaLoader as t, validateNode as u };
1161
+
1162
+ //# sourceMappingURL=Validator-BzXMKDeJ.mjs.map