@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,84 @@
1
+ import * as Option from "effect/Option";
2
+ import * as Schema from "effect/Schema";
3
+ declare namespace Iri_d_exports {
4
+ export { IriReferenceSchema, IriSchema, isAbsolute, isValid, isValidReference, relativize, removeDotSegments, resolve, withoutFragment };
5
+ }
6
+ /**
7
+ * Removes `.` and `..` segments from a path (RFC 3986 §5.2.4).
8
+ *
9
+ * @since 0.1.0
10
+ */
11
+ declare const removeDotSegments: (path: string) => string;
12
+ /**
13
+ * Whether a string is an absolute IRI (has a scheme).
14
+ *
15
+ * @since 0.1.0
16
+ */
17
+ declare const isAbsolute: (iri: string) => boolean;
18
+ /**
19
+ * Resolves a (possibly relative) IRI reference against a base IRI, following
20
+ * RFC 3986 §5.2.
21
+ *
22
+ * @since 0.1.0
23
+ */
24
+ declare const resolve: (reference: string, base: string | undefined) => string;
25
+ /**
26
+ * Removes the fragment from an IRI.
27
+ *
28
+ * @since 0.1.0
29
+ */
30
+ declare const withoutFragment: (iri: string) => string;
31
+ /**
32
+ * Computes a relative reference for `iri` with respect to `base`, if a
33
+ * simple one exists (same scheme and authority). Resolving the result against
34
+ * `base` always yields `iri`.
35
+ *
36
+ * @since 0.1.0
37
+ */
38
+ declare const relativize: (iri: string, base: string) => Option.Option<string>;
39
+ /**
40
+ * Whether a string is a syntactically valid absolute IRI (RFC 3987).
41
+ *
42
+ * @since 0.1.0
43
+ */
44
+ declare const isValid: (iri: string) => boolean;
45
+ /**
46
+ * Whether a string is a syntactically valid IRI reference (RFC 3987): an
47
+ * absolute IRI, or a relative reference whose first path segment has no `:`.
48
+ *
49
+ * @since 0.1.0
50
+ */
51
+ declare const isValidReference: (reference: string) => boolean;
52
+ /**
53
+ * Schema of an absolute IRI (`isValid`): a string, with JSON Schema
54
+ * `format: "iri"`. Use it to validate IRIs from `Config`, CLI flags or HTTP
55
+ * parameters.
56
+ *
57
+ * @since 0.1.0
58
+ * @category schemas
59
+ */
60
+ declare const IriSchema: Schema.String;
61
+ /**
62
+ * The type `IriSchema` decodes to: a string.
63
+ *
64
+ * @since 0.1.0
65
+ * @category schemas
66
+ */
67
+ type IriSchema = typeof IriSchema.Type;
68
+ /**
69
+ * Schema of an IRI reference, absolute or relative (`isValidReference`): a
70
+ * string, with JSON Schema `format: "iri-reference"`.
71
+ *
72
+ * @since 0.1.0
73
+ * @category schemas
74
+ */
75
+ declare const IriReferenceSchema: Schema.String;
76
+ /**
77
+ * The type `IriReferenceSchema` decodes to: a string.
78
+ *
79
+ * @since 0.1.0
80
+ * @category schemas
81
+ */
82
+ type IriReferenceSchema = typeof IriReferenceSchema.Type;
83
+ export { isValid as a, removeDotSegments as c, isAbsolute as i, resolve as l, IriSchema as n, isValidReference as o, Iri_d_exports as r, relativize as s, IriReferenceSchema as t, withoutFragment as u };
84
+ //# sourceMappingURL=Iri-BB8Ks-BF.d.mts.map
@@ -0,0 +1,232 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { t as loop } from "./loop-DZ2hXlr_.mjs";
3
+ import * as Equal from "effect/Equal";
4
+ import * as Option from "effect/Option";
5
+ import * as Schema from "effect/Schema";
6
+ import * as Str from "effect/String";
7
+ // src/Iri.ts
8
+ /**
9
+ * IRI utilities: RFC 3986 reference resolution, relativisation and
10
+ * validation.
11
+ *
12
+ * @since 0.1.0
13
+ */
14
+ var Iri_exports = /* @__PURE__ */ __exportAll({
15
+ IriReferenceSchema: () => IriReferenceSchema,
16
+ IriSchema: () => IriSchema,
17
+ isAbsolute: () => isAbsolute,
18
+ isValid: () => isValid,
19
+ isValidReference: () => isValidReference,
20
+ relativize: () => relativize,
21
+ removeDotSegments: () => removeDotSegments,
22
+ resolve: () => resolve,
23
+ withoutFragment: () => withoutFragment
24
+ });
25
+ const PARTS = /^(?:([A-Za-z][A-Za-z0-9+.-]*):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?$/s;
26
+ const parse = (iri) => {
27
+ const m = PARTS.exec(iri) ?? [];
28
+ return {
29
+ scheme: Option.fromUndefinedOr(m[1]),
30
+ authority: Option.fromUndefinedOr(m[2]),
31
+ path: m[3] ?? "",
32
+ query: Option.fromUndefinedOr(m[4]),
33
+ fragment: Option.fromUndefinedOr(m[5])
34
+ };
35
+ };
36
+ let lastBase = "";
37
+ let lastBaseParts = parse("");
38
+ const parseBase = (base) => {
39
+ if (base !== lastBase) {
40
+ lastBaseParts = parse(base);
41
+ lastBase = base;
42
+ }
43
+ return lastBaseParts;
44
+ };
45
+ /** `part` between `before` and `after`, or nothing when it is absent. */
46
+ const affix = (part, before, after) => Option.match(part, {
47
+ onNone: () => "",
48
+ onSome: (v) => `${before}${v}${after}`
49
+ });
50
+ const recompose = (p) => affix(p.scheme, "", ":") + affix(p.authority, "//", "") + p.path + affix(p.query, "?", "") + affix(p.fragment, "#", "");
51
+ const DOT_SEGMENT = /(?:^|\/)\.\.?(?:\/|$)/;
52
+ /**
53
+ * Removes `.` and `..` segments from a path (RFC 3986 §5.2.4).
54
+ *
55
+ * @since 0.1.0
56
+ */
57
+ const removeDotSegments = (path) => {
58
+ if (!DOT_SEGMENT.test(path)) return path;
59
+ let input = path;
60
+ const output = [];
61
+ loop(() => {
62
+ if (!Str.isNonEmpty(input)) return false;
63
+ if (input.startsWith("../")) input = input.slice(3);
64
+ else if (input.startsWith("./")) input = input.slice(2);
65
+ else if (input.startsWith("/./")) input = input.slice(2);
66
+ else if (input === "/.") input = "/";
67
+ else if (input.startsWith("/../")) {
68
+ input = input.slice(3);
69
+ output.pop();
70
+ } else if (input === "/..") {
71
+ input = "/";
72
+ output.pop();
73
+ } else if (input === "." || input === "..") input = "";
74
+ else {
75
+ const start = input.startsWith("/") ? 1 : 0;
76
+ const next = input.indexOf("/", start);
77
+ const segment = next === -1 ? input : input.slice(0, next);
78
+ output.push(segment);
79
+ input = next === -1 ? "" : input.slice(next);
80
+ }
81
+ return true;
82
+ });
83
+ return output.join("");
84
+ };
85
+ const merge = (base, ref) => {
86
+ if (Option.isSome(base.authority) && base.path === "") return `/${ref}`;
87
+ const i = base.path.lastIndexOf("/");
88
+ return i === -1 ? ref : base.path.slice(0, i + 1) + ref;
89
+ };
90
+ const SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*:/;
91
+ /**
92
+ * Whether a string is an absolute IRI (has a scheme).
93
+ *
94
+ * @since 0.1.0
95
+ */
96
+ const isAbsolute = (iri) => SCHEME.test(iri);
97
+ const SCHEME_THEN_PATH = /^[A-Za-z][A-Za-z0-9+.-]*:(?!\.)/;
98
+ /**
99
+ * Whether `iri` has a scheme and no `.` or `..` segment anywhere, without
100
+ * splitting it into its parts: such a reference resolves to itself
101
+ * (RFC 3986 §5.2.2), and most references in a document are like that. A
102
+ * `/.` anywhere (even in the query or fragment) or a path starting with `.`
103
+ * sends the reference down the full algorithm.
104
+ */
105
+ const isPlainAbsolute = (iri) => SCHEME_THEN_PATH.test(iri) && !iri.includes("/.");
106
+ /**
107
+ * Resolves a (possibly relative) IRI reference against a base IRI, following
108
+ * RFC 3986 §5.2.
109
+ *
110
+ * @since 0.1.0
111
+ */
112
+ const resolve = (reference, base) => {
113
+ if (base === void 0 || base === "") return reference;
114
+ if (isPlainAbsolute(reference)) return reference;
115
+ const r = parse(reference);
116
+ if (Option.isSome(r.scheme) && !DOT_SEGMENT.test(r.path)) return reference;
117
+ const b = parseBase(base);
118
+ const fragment = r.fragment;
119
+ const t = Option.isSome(r.scheme) ? {
120
+ scheme: r.scheme,
121
+ authority: r.authority,
122
+ path: removeDotSegments(r.path),
123
+ query: r.query,
124
+ fragment
125
+ } : Option.isSome(r.authority) ? {
126
+ scheme: b.scheme,
127
+ authority: r.authority,
128
+ path: removeDotSegments(r.path),
129
+ query: r.query,
130
+ fragment
131
+ } : r.path === "" ? {
132
+ scheme: b.scheme,
133
+ authority: b.authority,
134
+ path: b.path,
135
+ query: Option.orElse(r.query, () => b.query),
136
+ fragment
137
+ } : {
138
+ scheme: b.scheme,
139
+ authority: b.authority,
140
+ path: r.path.startsWith("/") ? removeDotSegments(r.path) : removeDotSegments(merge(b, r.path)),
141
+ query: r.query,
142
+ fragment
143
+ };
144
+ return recompose(t);
145
+ };
146
+ /**
147
+ * Removes the fragment from an IRI.
148
+ *
149
+ * @since 0.1.0
150
+ */
151
+ const withoutFragment = (iri) => {
152
+ const i = iri.indexOf("#");
153
+ return i === -1 ? iri : iri.slice(0, i);
154
+ };
155
+ /**
156
+ * Computes a relative reference for `iri` with respect to `base`, if a
157
+ * simple one exists (same scheme and authority). Resolving the result against
158
+ * `base` always yields `iri`.
159
+ *
160
+ * @since 0.1.0
161
+ */
162
+ const relativize = (iri, base) => {
163
+ if (iri === base) return Option.some("");
164
+ const i = parse(iri);
165
+ const b = parse(base);
166
+ if (!Equal.equals(i.scheme, b.scheme) || !Equal.equals(i.authority, b.authority) || Option.isNone(i.scheme)) return Option.none();
167
+ const relative = (path) => recompose({
168
+ scheme: Option.none(),
169
+ authority: Option.none(),
170
+ path,
171
+ query: i.query,
172
+ fragment: i.fragment
173
+ });
174
+ const dir = b.path.slice(0, b.path.lastIndexOf("/") + 1);
175
+ const rest = i.path.slice(dir.length);
176
+ const candidate = i.path === b.path ? Equal.equals(i.query, b.query) ? Option.map(i.fragment, (f) => `#${f}`) : Option.isSome(i.query) ? Option.some(relative("")) : Option.none() : Option.orElse(dir !== "" && i.path.startsWith(dir) && rest !== "" && !/^[^/]*:/.test(rest) ? Option.some(relative(rest)) : Option.none(), () => i.path.startsWith("/") && !i.path.startsWith("//") ? Option.some(relative(i.path)) : Option.none());
177
+ return Option.filter(candidate, (c) => resolve(c, base) === iri);
178
+ };
179
+ const UCSCHAR = "\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\u{10000}-\\u{1FFFD}\\u{20000}-\\u{2FFFD}\\u{30000}-\\u{3FFFD}\\u{40000}-\\u{4FFFD}\\u{50000}-\\u{5FFFD}\\u{60000}-\\u{6FFFD}\\u{70000}-\\u{7FFFD}\\u{80000}-\\u{8FFFD}\\u{90000}-\\u{9FFFD}\\u{A0000}-\\u{AFFFD}\\u{B0000}-\\u{BFFFD}\\u{C0000}-\\u{CFFFD}\\u{D0000}-\\u{DFFFD}\\u{E1000}-\\u{EFFFD}";
180
+ const IPRIVATE = "\\uE000-\\uF8FF\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}";
181
+ const IUNRESERVED = `A-Za-z0-9\\-._~${UCSCHAR}`;
182
+ const SUBDELIMS = "!$&'()*+,;=";
183
+ const PCT = "%[0-9A-Fa-f]{2}";
184
+ const IPCHAR = `(?:[${IUNRESERVED}${SUBDELIMS}:@]|${PCT})`;
185
+ const IRI_AFTER_SCHEME = `(?://(?:(?:[${IUNRESERVED}${SUBDELIMS}:]|${PCT})*@)?(?:\\[[0-9A-Fa-f:.vV${IUNRESERVED}${SUBDELIMS}]*\\]|(?:[${IUNRESERVED}${SUBDELIMS}]|${PCT})*)(?::[0-9]*)?)?(?:/?${IPCHAR}*)*(?:\\?(?:${IPCHAR}|[/?${IPRIVATE}])*)?(?:#(?:${IPCHAR}|[/?])*)?`;
186
+ const IRI_RE = new RegExp(`^[A-Za-z][A-Za-z0-9+.\\-]*:${IRI_AFTER_SCHEME}$`, "u");
187
+ /**
188
+ * Whether a string is a syntactically valid absolute IRI (RFC 3987).
189
+ *
190
+ * @since 0.1.0
191
+ */
192
+ const isValid = (iri) => IRI_RE.test(iri);
193
+ const RELATIVE_RE = new RegExp(`^${IRI_AFTER_SCHEME}$`, "u");
194
+ /**
195
+ * Whether a string is a syntactically valid IRI reference (RFC 3987): an
196
+ * absolute IRI, or a relative reference whose first path segment has no `:`.
197
+ *
198
+ * @since 0.1.0
199
+ */
200
+ const isValidReference = (reference) => isAbsolute(reference) ? isValid(reference) : !/^[^/?#]*:/.test(reference) && RELATIVE_RE.test(reference);
201
+ /**
202
+ * Schema of an absolute IRI (`isValid`): a string, with JSON Schema
203
+ * `format: "iri"`. Use it to validate IRIs from `Config`, CLI flags or HTTP
204
+ * parameters.
205
+ *
206
+ * @since 0.1.0
207
+ * @category schemas
208
+ */
209
+ const IriSchema = Schema.String.check(Schema.makeFilter((s) => isValid(s), {
210
+ identifier: "isIri",
211
+ title: "IRI",
212
+ description: "An absolute IRI (RFC 3987).",
213
+ expected: "an absolute IRI",
214
+ toJsonSchema: () => ({ format: "iri" })
215
+ })).annotate({ identifier: "Iri" });
216
+ /**
217
+ * Schema of an IRI reference, absolute or relative (`isValidReference`): a
218
+ * string, with JSON Schema `format: "iri-reference"`.
219
+ *
220
+ * @since 0.1.0
221
+ * @category schemas
222
+ */
223
+ const IriReferenceSchema = Schema.String.check(Schema.makeFilter((s) => isValidReference(s), {
224
+ identifier: "isIriReference",
225
+ title: "IRI reference",
226
+ description: "An absolute IRI or relative reference (RFC 3987).",
227
+ expected: "an IRI reference",
228
+ toJsonSchema: () => ({ format: "iri-reference" })
229
+ })).annotate({ identifier: "IriReference" });
230
+ export { isValid as a, removeDotSegments as c, isAbsolute as i, resolve as l, IriSchema as n, isValidReference as o, Iri_exports as r, relativize as s, IriReferenceSchema as t, withoutFragment as u };
231
+
232
+ //# sourceMappingURL=Iri-Cr92gsQV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Iri-Cr92gsQV.mjs","names":[],"sources":["../src/Iri.ts"],"sourcesContent":["/**\n * IRI utilities: RFC 3986 reference resolution, relativisation and\n * validation.\n *\n * @since 0.1.0\n */\nimport * as Equal from 'effect/Equal';\nimport * as Str from 'effect/String';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport { loop } from './internal/loop.ts';\n\ninterface Parts {\n readonly scheme: Option.Option<string>;\n readonly authority: Option.Option<string>;\n readonly path: string;\n readonly query: Option.Option<string>;\n readonly fragment: Option.Option<string>;\n}\n\nconst PARTS =\n /^(?:([A-Za-z][A-Za-z0-9+.-]*):)?(?:\\/\\/([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$/s;\n\nconst parse = (iri: string): Parts => {\n // Every part of the pattern is optional, so it matches any string\n const m = PARTS.exec(iri) ?? [];\n return {\n scheme: Option.fromUndefinedOr(m[1]),\n authority: Option.fromUndefinedOr(m[2]),\n path: m[3] ?? '',\n query: Option.fromUndefinedOr(m[4]),\n fragment: Option.fromUndefinedOr(m[5]),\n };\n};\n\n// A document resolves many references against one base, so the last base's\n// parts are kept. `Parts` are never mutated once parsed.\nlet lastBase = '';\nlet lastBaseParts: Parts = parse('');\n\nconst parseBase = (base: string): Parts => {\n if (base !== lastBase) {\n lastBaseParts = parse(base);\n lastBase = base;\n }\n return lastBaseParts;\n};\n\n/** `part` between `before` and `after`, or nothing when it is absent. */\nconst affix = (part: Option.Option<string>, before: string, after: string): string =>\n Option.match(part, { onNone: () => '', onSome: (v) => `${before}${v}${after}` });\n\nconst recompose = (p: Parts): string =>\n affix(p.scheme, '', ':') +\n affix(p.authority, '//', '') +\n p.path +\n affix(p.query, '?', '') +\n affix(p.fragment, '#', '');\n\n// A `.` or `..` segment: the only thing `removeDotSegments` changes.\nconst DOT_SEGMENT = /(?:^|\\/)\\.\\.?(?:\\/|$)/;\n\n/**\n * Removes `.` and `..` segments from a path (RFC 3986 §5.2.4).\n *\n * @since 0.1.0\n */\nexport const removeDotSegments = (path: string): string => {\n // Most paths have no dot segment, and the algorithm leaves those unchanged.\n if (!DOT_SEGMENT.test(path)) return path;\n let input = path;\n const output: Array<string> = [];\n loop(() => {\n if (!Str.isNonEmpty(input)) return false;\n if (input.startsWith('../')) input = input.slice(3);\n else if (input.startsWith('./')) input = input.slice(2);\n else if (input.startsWith('/./')) input = input.slice(2);\n else if (input === '/.') input = '/';\n else if (input.startsWith('/../')) {\n input = input.slice(3);\n output.pop();\n } else if (input === '/..') {\n input = '/';\n output.pop();\n } else if (input === '.' || input === '..') input = '';\n else {\n const start = input.startsWith('/') ? 1 : 0;\n const next = input.indexOf('/', start);\n const segment = next === -1 ? input : input.slice(0, next);\n output.push(segment);\n input = next === -1 ? '' : input.slice(next);\n }\n return true;\n });\n return output.join('');\n};\n\nconst merge = (base: Parts, ref: string): string => {\n if (Option.isSome(base.authority) && base.path === '') return `/${ref}`;\n const i = base.path.lastIndexOf('/');\n return i === -1 ? ref : base.path.slice(0, i + 1) + ref;\n};\n\n// Hoisted: a regex literal makes a new `RegExp` each time it is evaluated.\nconst SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*:/;\n\n/**\n * Whether a string is an absolute IRI (has a scheme).\n *\n * @since 0.1.0\n */\nexport const isAbsolute = (iri: string): boolean => SCHEME.test(iri);\n\nconst SCHEME_THEN_PATH = /^[A-Za-z][A-Za-z0-9+.-]*:(?!\\.)/;\n\n/**\n * Whether `iri` has a scheme and no `.` or `..` segment anywhere, without\n * splitting it into its parts: such a reference resolves to itself\n * (RFC 3986 §5.2.2), and most references in a document are like that. A\n * `/.` anywhere (even in the query or fragment) or a path starting with `.`\n * sends the reference down the full algorithm.\n */\nconst isPlainAbsolute = (iri: string): boolean => SCHEME_THEN_PATH.test(iri) && !iri.includes('/.');\n\n/**\n * Resolves a (possibly relative) IRI reference against a base IRI, following\n * RFC 3986 §5.2.\n *\n * @since 0.1.0\n */\nexport const resolve = (reference: string, base: string | undefined): string => {\n if (base === undefined || base === '') return reference;\n if (isPlainAbsolute(reference)) return reference;\n const r = parse(reference);\n // An absolute reference without dot segments resolves to itself (§5.2.2:\n // only its path is rewritten, by `removeDotSegments`).\n if (Option.isSome(r.scheme) && !DOT_SEGMENT.test(r.path)) return reference;\n const b = parseBase(base);\n const fragment = r.fragment;\n const t: Parts = Option.isSome(r.scheme)\n ? {\n scheme: r.scheme,\n authority: r.authority,\n path: removeDotSegments(r.path),\n query: r.query,\n fragment,\n }\n : Option.isSome(r.authority)\n ? {\n scheme: b.scheme,\n authority: r.authority,\n path: removeDotSegments(r.path),\n query: r.query,\n fragment,\n }\n : r.path === ''\n ? {\n scheme: b.scheme,\n authority: b.authority,\n path: b.path,\n query: Option.orElse(r.query, () => b.query),\n fragment,\n }\n : {\n scheme: b.scheme,\n authority: b.authority,\n path: r.path.startsWith('/')\n ? removeDotSegments(r.path)\n : removeDotSegments(merge(b, r.path)),\n query: r.query,\n fragment,\n };\n return recompose(t);\n};\n\n/**\n * Removes the fragment from an IRI.\n *\n * @since 0.1.0\n */\nexport const withoutFragment = (iri: string): string => {\n const i = iri.indexOf('#');\n return i === -1 ? iri : iri.slice(0, i);\n};\n\n/**\n * Computes a relative reference for `iri` with respect to `base`, if a\n * simple one exists (same scheme and authority). Resolving the result against\n * `base` always yields `iri`.\n *\n * @since 0.1.0\n */\nexport const relativize = (iri: string, base: string): Option.Option<string> => {\n if (iri === base) return Option.some('');\n const i = parse(iri);\n const b = parse(base);\n if (\n !Equal.equals(i.scheme, b.scheme) ||\n !Equal.equals(i.authority, b.authority) ||\n Option.isNone(i.scheme)\n ) {\n return Option.none();\n }\n // `iri` as a reference with only `path` and its query and fragment\n const relative = (path: string): string =>\n recompose({\n scheme: Option.none(),\n authority: Option.none(),\n path,\n query: i.query,\n fragment: i.fragment,\n });\n const dir = b.path.slice(0, b.path.lastIndexOf('/') + 1);\n const rest = i.path.slice(dir.length);\n const candidate: Option.Option<string> =\n i.path === b.path\n ? Equal.equals(i.query, b.query)\n ? Option.map(i.fragment, (f) => `#${f}`)\n : Option.isSome(i.query)\n ? Option.some(relative(''))\n : Option.none()\n : Option.orElse(\n // Avoid references whose first segment looks like a scheme.\n dir !== '' && i.path.startsWith(dir) && rest !== '' && !/^[^/]*:/.test(rest)\n ? Option.some(relative(rest))\n : Option.none(),\n () =>\n i.path.startsWith('/') && !i.path.startsWith('//')\n ? Option.some(relative(i.path))\n : Option.none(),\n );\n return Option.filter(candidate, (c) => resolve(c, base) === iri);\n};\n\n// IRI grammar (RFC 3987) character classes, used for validation.\nconst UCSCHAR =\n '\\\\u00A0-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}';\nconst IPRIVATE = '\\\\uE000-\\\\uF8FF\\\\u{F0000}-\\\\u{FFFFD}\\\\u{100000}-\\\\u{10FFFD}';\nconst IUNRESERVED = `A-Za-z0-9\\\\-._~${UCSCHAR}`;\nconst SUBDELIMS = \"!$&'()*+,;=\";\nconst PCT = '%[0-9A-Fa-f]{2}';\nconst IPCHAR = `(?:[${IUNRESERVED}${SUBDELIMS}:@]|${PCT})`;\n// `ihier-part` / `irelative-part` (optional authority, then a path), query and fragment: the\n// IRI grammar after the scheme, shared by absolute IRIs and relative references.\nconst IRI_AFTER_SCHEME =\n `(?://(?:(?:[${IUNRESERVED}${SUBDELIMS}:]|${PCT})*@)?(?:\\\\[[0-9A-Fa-f:.vV${IUNRESERVED}${SUBDELIMS}]*\\\\]|(?:[${IUNRESERVED}${SUBDELIMS}]|${PCT})*)(?::[0-9]*)?)?` +\n `(?:/?${IPCHAR}*)*` +\n `(?:\\\\?(?:${IPCHAR}|[/?${IPRIVATE}])*)?` +\n `(?:#(?:${IPCHAR}|[/?])*)?`;\nconst IRI_RE = new RegExp(`^[A-Za-z][A-Za-z0-9+.\\\\-]*:${IRI_AFTER_SCHEME}$`, 'u');\n\n/**\n * Whether a string is a syntactically valid absolute IRI (RFC 3987).\n *\n * @since 0.1.0\n */\nexport const isValid = (iri: string): boolean => IRI_RE.test(iri);\n\n// A relative reference (RFC 3987 `irelative-ref`): the IRI grammar without the scheme.\nconst RELATIVE_RE = new RegExp(`^${IRI_AFTER_SCHEME}$`, 'u');\n\n/**\n * Whether a string is a syntactically valid IRI reference (RFC 3987): an\n * absolute IRI, or a relative reference whose first path segment has no `:`.\n *\n * @since 0.1.0\n */\nexport const isValidReference = (reference: string): boolean =>\n isAbsolute(reference)\n ? isValid(reference)\n : !/^[^/?#]*:/.test(reference) && RELATIVE_RE.test(reference);\n\n/**\n * Schema of an absolute IRI (`isValid`): a string, with JSON Schema\n * `format: \"iri\"`. Use it to validate IRIs from `Config`, CLI flags or HTTP\n * parameters.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const IriSchema: Schema.String = Schema.String.check(\n Schema.makeFilter((s: string) => isValid(s), {\n identifier: 'isIri',\n title: 'IRI',\n description: 'An absolute IRI (RFC 3987).',\n expected: 'an absolute IRI',\n toJsonSchema: () => ({ format: 'iri' }),\n }),\n).annotate({ identifier: 'Iri' });\n\n/**\n * The type `IriSchema` decodes to: a string.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type IriSchema = typeof IriSchema.Type;\n\n/**\n * Schema of an IRI reference, absolute or relative (`isValidReference`): a\n * string, with JSON Schema `format: \"iri-reference\"`.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport const IriReferenceSchema: Schema.String = Schema.String.check(\n Schema.makeFilter((s: string) => isValidReference(s), {\n identifier: 'isIriReference',\n title: 'IRI reference',\n description: 'An absolute IRI or relative reference (RFC 3987).',\n expected: 'an IRI reference',\n toJsonSchema: () => ({ format: 'iri-reference' }),\n }),\n).annotate({ identifier: 'IriReference' });\n\n/**\n * The type `IriReferenceSchema` decodes to: a string.\n *\n * @since 0.1.0\n * @category schemas\n */\nexport type IriReferenceSchema = typeof IriReferenceSchema.Type;\n"],"mappings":"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"}
package/dist/Iri.d.mts ADDED
@@ -0,0 +1,2 @@
1
+ import { a as isValid, c as removeDotSegments, i as isAbsolute, l as resolve, n as IriSchema, o as isValidReference, s as relativize, t as IriReferenceSchema, u as withoutFragment } from "./Iri-BB8Ks-BF.mjs";
2
+ export { IriReferenceSchema, IriSchema, isAbsolute, isValid, isValidReference, relativize, removeDotSegments, resolve, withoutFragment };
package/dist/Iri.mjs ADDED
@@ -0,0 +1 @@
1
+ export { t as IriReferenceSchema, n as IriSchema, i as isAbsolute, a as isValid, o as isValidReference, s as relativize, c as removeDotSegments, l as resolve, u as withoutFragment } from "./Iri-Cr92gsQV.mjs";
@@ -0,0 +1,28 @@
1
+ import { i as Formula } from "./Model-DaMmxurZ.mjs";
2
+ import * as Option from "effect/Option";
3
+ declare namespace Isomorphism_d_exports {
4
+ export { bijection, isomorphic };
5
+ }
6
+ /**
7
+ * Finds a renaming of blank nodes and variables from `self` to `that` under
8
+ * which the two formulas are equal. Keys of the returned map are
9
+ * `_:label` / `?name` of `self`, values those of `that` (nodes generated for
10
+ * collections and nested formulas are omitted).
11
+ *
12
+ * @since 0.1.0
13
+ * @category isomorphism
14
+ */
15
+ declare const bijection: (self: Formula, that: Formula) => Option.Option<ReadonlyMap<string, string>>;
16
+ /**
17
+ * Whether two formulas are isomorphic: equal up to a consistent renaming of
18
+ * blank nodes and variables, recursively through nested formulas.
19
+ *
20
+ * @since 0.1.0
21
+ * @category isomorphism
22
+ */
23
+ declare const isomorphic: {
24
+ (that: Formula): (self: Formula) => boolean;
25
+ (self: Formula, that: Formula): boolean;
26
+ };
27
+ export { bijection as n, isomorphic as r, Isomorphism_d_exports as t };
28
+ //# sourceMappingURL=Isomorphism-B6qTY-xy.d.mts.map
@@ -0,0 +1,232 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { K as isTriple, M as hasBlankNodes, N as isBlankNode, X as mapTerms, t as BlankNode } from "./Term-CFLG1qu4.mjs";
3
+ import { t as loop } from "./loop-DZ2hXlr_.mjs";
4
+ import { T as map, v as has } from "./Dataset-BlmlcI7J.mjs";
5
+ import * as Arr from "effect/Array";
6
+ import { dual } from "effect/Function";
7
+ import * as Iterable from "effect/Iterable";
8
+ import * as MutableHashMap from "effect/MutableHashMap";
9
+ import * as MutableHashSet from "effect/MutableHashSet";
10
+ import * as Option from "effect/Option";
11
+ import * as Predicate from "effect/Predicate";
12
+ import * as Order from "effect/Order";
13
+ // src/Isomorphism.ts
14
+ /**
15
+ * Blank-node-aware dataset comparison (RDF graph isomorphism).
16
+ *
17
+ * Uses iterative signature refinement to partition blank nodes, then a
18
+ * backtracking search over the (usually tiny) ambiguous classes.
19
+ *
20
+ * @since 0.1.0
21
+ */
22
+ var Isomorphism_exports = /* @__PURE__ */ __exportAll({
23
+ bijection: () => bijection,
24
+ isomorphic: () => isomorphic,
25
+ relabel: () => relabel
26
+ });
27
+ const fnv = (s) => {
28
+ let h1 = 2166136261;
29
+ let h2 = 16777619;
30
+ loop((i) => {
31
+ if (i >= s.length) return false;
32
+ const c = s.charCodeAt(i);
33
+ h1 = Math.imul(h1 ^ c, 16777619);
34
+ h2 = Math.imul(h2 ^ c, 1540483477);
35
+ return true;
36
+ });
37
+ return (h1 >>> 0).toString(36) + (h2 >>> 0).toString(36);
38
+ };
39
+ /** Appends the blank nodes of `t` (and of the triple terms inside it) to `out`, each once. */
40
+ const collectBlankNodes = (t, out) => {
41
+ if (isBlankNode(t)) {
42
+ if (!out.includes(t.value)) out.push(t.value);
43
+ } else if (isTriple(t)) {
44
+ collectBlankNodes(t.subject, out);
45
+ collectBlankNodes(t.object, out);
46
+ }
47
+ };
48
+ /** The distinct blank nodes of a quad, in order of first occurrence. */
49
+ const quadBlankNodes = (q) => {
50
+ const out = [];
51
+ collectBlankNodes(q.subject, out);
52
+ collectBlankNodes(q.object, out);
53
+ collectBlankNodes(q.graph, out);
54
+ return out;
55
+ };
56
+ const labelOf = (labels, node) => Option.getOrElse(MutableHashMap.get(labels, node), () => "");
57
+ const compile = (t, self, index, out) => {
58
+ if (isBlankNode(t)) {
59
+ if (t.value === self) out.push("@self");
60
+ else out.push(Option.getOrElse(MutableHashMap.get(index, t.value), () => "@"));
61
+ } else if (isTriple(t)) {
62
+ out.push("<<");
63
+ compile(t.subject, self, index, out);
64
+ out.push(` ${t.predicate.key} `);
65
+ compile(t.object, self, index, out);
66
+ out.push(">>");
67
+ } else out.push(t.key);
68
+ };
69
+ const template = (q, self, index) => {
70
+ const out = [];
71
+ compile(q.subject, self, index, out);
72
+ out.push(` ${q.predicate.key} `);
73
+ compile(q.object, self, index, out);
74
+ out.push(" ");
75
+ compile(q.graph, self, index, out);
76
+ return out;
77
+ };
78
+ /** A template with the blank nodes' labels filled in. */
79
+ const render = (t, labels) => t.map((part) => Predicate.isString(part) ? part : `@${labels[part] ?? ""}`).join("");
80
+ /** The quads a blank node occurs in. */
81
+ const quadsOf = (p, node) => Option.getOrElse(MutableHashMap.get(p.byNode, node), () => []);
82
+ const refine = (quads) => {
83
+ const byNode = MutableHashMap.empty();
84
+ quads.forEach((q) => {
85
+ quadBlankNodes(q).forEach((b) => {
86
+ const list = MutableHashMap.get(byNode, b);
87
+ if (Option.isSome(list)) list.value.push(q);
88
+ else MutableHashMap.set(byNode, b, [q]);
89
+ });
90
+ });
91
+ const nodes = Arr.fromIterable(MutableHashMap.keys(byNode));
92
+ const index = MutableHashMap.fromIterable(nodes.map((n, i) => [n, i]));
93
+ const templates = nodes.map((n) => Option.getOrElse(MutableHashMap.get(byNode, n), () => []).map((q) => template(q, n, index)));
94
+ let labels = nodes.map(() => "");
95
+ let classes = 1;
96
+ loop((round) => {
97
+ if (round > nodes.length) return false;
98
+ const current = labels;
99
+ const next = templates.map((ts, i) => fnv(`${current[i] ?? ""}|${Arr.sort(ts.map((t) => render(t, current)), Order.String).join("\n")}`));
100
+ const nextClasses = MutableHashSet.size(MutableHashSet.fromIterable(next));
101
+ labels = next;
102
+ if (nextClasses === classes) return false;
103
+ classes = nextClasses;
104
+ return true;
105
+ });
106
+ const final = labels;
107
+ return {
108
+ nodes,
109
+ labels: MutableHashMap.fromIterable(nodes.map((n, i) => [n, final[i] ?? ""])),
110
+ byNode
111
+ };
112
+ };
113
+ /** `q` with its blank nodes renamed by `mapping` (those it does not map are kept). */
114
+ const renameBlankNodes = (q, mapping) => mapTerms(q, (t) => isBlankNode(t) ? new BlankNode(Option.getOrElse(MutableHashMap.get(mapping, t.value), () => t.value)) : t);
115
+ const rename = (q, mapping) => renameBlankNodes(q, mapping).key;
116
+ /** The blank nodes of a partition grouped by label, in order. */
117
+ const groupsOf = (p) => {
118
+ const groups = MutableHashMap.empty();
119
+ p.nodes.forEach((n) => {
120
+ const l = labelOf(p.labels, n);
121
+ const group = MutableHashMap.get(groups, l);
122
+ if (Option.isSome(group)) group.value.push(n);
123
+ else MutableHashMap.set(groups, l, [n]);
124
+ });
125
+ return groups;
126
+ };
127
+ /** The class of `node`: the nodes of `groups` with its label in `labels`. */
128
+ const classOf = (groups, labels, node) => Option.getOrElse(MutableHashMap.get(groups, labelOf(labels, node)), () => []);
129
+ /**
130
+ * The public result of `bijection`: a native `ReadonlyMap`, copied once
131
+ * from the search's map at the end.
132
+ */
133
+ const toReadonlyMap = (mapping) => new Map(mapping);
134
+ /**
135
+ * Finds a blank node bijection from `self` to `that` under which the two
136
+ * datasets are equal, if one exists.
137
+ *
138
+ * @since 0.1.0
139
+ * @category isomorphism
140
+ */
141
+ const bijection = (self, that) => {
142
+ if (self.size !== that.size) return Option.none();
143
+ const aBlank = [];
144
+ if (Iterable.some(self, (q) => {
145
+ if (!hasBlankNodes(q)) return !has(that, q);
146
+ aBlank.push(q);
147
+ return false;
148
+ })) return Option.none();
149
+ const bBlank = Arr.filter(Arr.fromIterable(that), (q) => hasBlankNodes(q));
150
+ if (aBlank.length !== bBlank.length) return Option.none();
151
+ if (Arr.isReadonlyArrayEmpty(aBlank)) return Option.some(toReadonlyMap(MutableHashMap.empty()));
152
+ const a = refine(aBlank);
153
+ const b = refine(bBlank);
154
+ if (a.nodes.length !== b.nodes.length) return Option.none();
155
+ const groupsB = groupsOf(b);
156
+ const groupsA = groupsOf(a);
157
+ if (!!Iterable.some(groupsA, ([l, g]) => !Option.exists(MutableHashMap.get(groupsB, l), (gb) => gb.length === g.length))) return Option.none();
158
+ const target = MutableHashSet.fromIterable(bBlank.map((q) => q.key));
159
+ const mapping = MutableHashMap.empty();
160
+ const used = MutableHashSet.empty();
161
+ const order = Arr.sort(a.nodes, Order.mapInput(Order.Number, (x) => classOf(groupsA, a.labels, x).length));
162
+ const consistent = (node) => !quadsOf(a, node).some((q) => {
163
+ return quadBlankNodes(q).every((x) => MutableHashMap.has(mapping, x)) && !MutableHashSet.has(target, rename(q, mapping));
164
+ });
165
+ const cursors = [0];
166
+ let found = false;
167
+ loop(() => {
168
+ const i = cursors.length - 1;
169
+ const node = order[i];
170
+ if (i < 0 || node === void 0) {
171
+ found = i === order.length;
172
+ return false;
173
+ }
174
+ const candidates = classOf(groupsB, a.labels, node);
175
+ const previous = MutableHashMap.get(mapping, node);
176
+ if (Option.isSome(previous)) {
177
+ MutableHashMap.remove(mapping, node);
178
+ MutableHashSet.remove(used, previous.value);
179
+ }
180
+ let next = cursors[i] ?? 0;
181
+ let advanced = false;
182
+ loop(() => {
183
+ const candidate = candidates[next];
184
+ if (candidate === void 0) return false;
185
+ next++;
186
+ if (MutableHashSet.has(used, candidate)) return true;
187
+ MutableHashMap.set(mapping, node, candidate);
188
+ MutableHashSet.add(used, candidate);
189
+ if (consistent(node)) {
190
+ advanced = true;
191
+ return false;
192
+ }
193
+ MutableHashMap.remove(mapping, node);
194
+ MutableHashSet.remove(used, candidate);
195
+ return true;
196
+ });
197
+ cursors[i] = next;
198
+ if (advanced) cursors.push(0);
199
+ else cursors.pop();
200
+ return true;
201
+ });
202
+ return found ? Option.some(toReadonlyMap(mapping)) : Option.none();
203
+ };
204
+ /**
205
+ * Whether two datasets are isomorphic: equal up to a consistent renaming of
206
+ * blank nodes.
207
+ *
208
+ * @since 0.1.0
209
+ * @category isomorphism
210
+ */
211
+ const isomorphic = dual(2, (self, that) => Option.isSome(bijection(self, that)));
212
+ /**
213
+ * Relabels blank nodes in a dataset with fresh labels `prefix0`, `prefix1`,
214
+ * … in a deterministic order derived from their structural signatures.
215
+ *
216
+ * Isomorphic datasets without automorphic blank nodes yield identical
217
+ * results; this is not a full canonicalisation algorithm.
218
+ *
219
+ * @since 0.1.0
220
+ * @category isomorphism
221
+ */
222
+ const relabel = (self, prefix = "c") => {
223
+ const blank = Array.from(self).filter(hasBlankNodes);
224
+ if (Arr.isReadonlyArrayEmpty(blank)) return self;
225
+ const { nodes, labels } = refine(blank);
226
+ const sorted = Arr.sort(nodes, Order.mapInput(Order.String, (x) => labelOf(labels, x)));
227
+ const mapping = MutableHashMap.fromIterable(sorted.map((n, i) => [n, `${prefix}${i}`]));
228
+ return map(self, (q) => renameBlankNodes(q, mapping));
229
+ };
230
+ export { relabel as i, bijection as n, isomorphic as r, Isomorphism_exports as t };
231
+
232
+ //# sourceMappingURL=Isomorphism-BmqxhKyJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Isomorphism-BmqxhKyJ.mjs","names":["Term.isBlankNode","Term.isTriple","Term.mapTerms","Term.BlankNode","Term.hasBlankNodes","Dataset.has","Dataset.map"],"sources":["../src/Isomorphism.ts"],"sourcesContent":["/**\n * Blank-node-aware dataset comparison (RDF graph isomorphism).\n *\n * Uses iterative signature refinement to partition blank nodes, then a\n * backtracking search over the (usually tiny) ambiguous classes.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport { dual } from 'effect/Function';\nimport * as Iterable from 'effect/Iterable';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Predicate from 'effect/Predicate';\nimport * as Dataset from './Dataset.ts';\nimport { loop } from './internal/loop.ts';\nimport * as Term from './Term.ts';\n\n/** Blank node labels, by blank node label. */\ntype Labels = MutableHashMap.MutableHashMap<string, string>;\n\nconst fnv = (s: string): string => {\n let h1 = 0x811c9dc5;\n let h2 = 0x01000193;\n loop((i) => {\n if (i >= s.length) return false;\n const c = s.charCodeAt(i);\n h1 = Math.imul(h1 ^ c, 0x01000193);\n h2 = Math.imul(h2 ^ c, 0x5bd1e995);\n return true;\n });\n return (h1 >>> 0).toString(36) + (h2 >>> 0).toString(36);\n};\n\n/** Appends the blank nodes of `t` (and of the triple terms inside it) to `out`, each once. */\nconst collectBlankNodes = (t: Term.Term, out: Array<string>): void => {\n if (Term.isBlankNode(t)) {\n if (!out.includes(t.value)) out.push(t.value);\n } else if (Term.isTriple(t)) {\n collectBlankNodes(t.subject, out);\n collectBlankNodes(t.object, out);\n }\n};\n\n/** The distinct blank nodes of a quad, in order of first occurrence. */\nconst quadBlankNodes = (q: Term.Quad): ReadonlyArray<string> => {\n const out: Array<string> = [];\n collectBlankNodes(q.subject, out);\n collectBlankNodes(q.object, out);\n collectBlankNodes(q.graph, out);\n return out;\n};\n\nconst labelOf = (labels: Labels, node: string): string =>\n Option.getOrElse(MutableHashMap.get(labels, node), () => '');\n\n/**\n * A quad's signature for one of its blank nodes, compiled once: text, and in\n * between the indexes (into `Partition.nodes`) of the other blank nodes,\n * whose current labels each refinement round fills in. The node itself is\n * `@self`.\n */\ntype Template = ReadonlyArray<string | number>;\n\nconst compile = (\n t: Term.Term,\n self: string,\n index: MutableHashMap.MutableHashMap<string, number>,\n out: Array<string | number>,\n): void => {\n if (Term.isBlankNode(t)) {\n if (t.value === self) out.push('@self');\n else out.push(Option.getOrElse(MutableHashMap.get(index, t.value), () => '@'));\n } else if (Term.isTriple(t)) {\n out.push('<<');\n compile(t.subject, self, index, out);\n out.push(` ${t.predicate.key} `);\n compile(t.object, self, index, out);\n out.push('>>');\n } else out.push(t.key);\n};\n\nconst template = (\n q: Term.Quad,\n self: string,\n index: MutableHashMap.MutableHashMap<string, number>,\n): Template => {\n const out: Array<string | number> = [];\n compile(q.subject, self, index, out);\n out.push(` ${q.predicate.key} `);\n compile(q.object, self, index, out);\n out.push(' ');\n compile(q.graph, self, index, out);\n return out;\n};\n\n/** A template with the blank nodes' labels filled in. */\nconst render = (t: Template, labels: ReadonlyArray<string>): string =>\n t.map((part) => (Predicate.isString(part) ? part : `@${labels[part] ?? ''}`)).join('');\n\ninterface Partition {\n readonly nodes: ReadonlyArray<string>;\n readonly labels: Labels;\n readonly byNode: MutableHashMap.MutableHashMap<string, Array<Term.Quad>>;\n}\n\n/** The quads a blank node occurs in. */\nconst quadsOf = (p: Partition, node: string): ReadonlyArray<Term.Quad> =>\n Option.getOrElse(MutableHashMap.get(p.byNode, node), () => []);\n\nconst refine = (quads: ReadonlyArray<Term.Quad>): Partition => {\n const byNode = MutableHashMap.empty<string, Array<Term.Quad>>();\n quads.forEach((q) => {\n quadBlankNodes(q).forEach((b) => {\n const list = MutableHashMap.get(byNode, b);\n if (Option.isSome(list)) list.value.push(q);\n else MutableHashMap.set(byNode, b, [q]);\n });\n });\n const nodes = Arr.fromIterable(MutableHashMap.keys(byNode));\n const index = MutableHashMap.fromIterable(nodes.map((n, i) => [n, i] as const));\n const templates = nodes.map((n) =>\n Option.getOrElse(MutableHashMap.get(byNode, n), () => []).map((q) => template(q, n, index)),\n );\n let labels: ReadonlyArray<string> = nodes.map(() => '');\n let classes = 1;\n // Refine until the number of classes stops growing (at most one round per node)\n loop((round) => {\n if (round > nodes.length) return false;\n const current = labels;\n const next = templates.map((ts, i) =>\n fnv(\n `${current[i] ?? ''}|${Arr.sort(\n ts.map((t) => render(t, current)),\n Order.String,\n ).join('\\n')}`,\n ),\n );\n const nextClasses = MutableHashSet.size(MutableHashSet.fromIterable(next));\n labels = next;\n if (nextClasses === classes) return false;\n classes = nextClasses;\n return true;\n });\n const final = labels;\n return {\n nodes,\n labels: MutableHashMap.fromIterable(nodes.map((n, i) => [n, final[i] ?? ''] as const)),\n byNode,\n };\n};\n\n/** `q` with its blank nodes renamed by `mapping` (those it does not map are kept). */\nconst renameBlankNodes = (q: Term.Quad, mapping: Labels): Term.Quad =>\n Term.mapTerms(q, (t) =>\n Term.isBlankNode(t)\n ? new Term.BlankNode(Option.getOrElse(MutableHashMap.get(mapping, t.value), () => t.value))\n : t,\n );\n\nconst rename = (q: Term.Quad, mapping: Labels): string => renameBlankNodes(q, mapping).key;\n\n/** The blank nodes of a partition grouped by label, in order. */\nconst groupsOf = (p: Partition): MutableHashMap.MutableHashMap<string, Array<string>> => {\n const groups = MutableHashMap.empty<string, Array<string>>();\n p.nodes.forEach((n) => {\n const l = labelOf(p.labels, n);\n const group = MutableHashMap.get(groups, l);\n if (Option.isSome(group)) group.value.push(n);\n else MutableHashMap.set(groups, l, [n]);\n });\n return groups;\n};\n\n/** The class of `node`: the nodes of `groups` with its label in `labels`. */\nconst classOf = (\n groups: MutableHashMap.MutableHashMap<string, ReadonlyArray<string>>,\n labels: Labels,\n node: string,\n): ReadonlyArray<string> =>\n Option.getOrElse(MutableHashMap.get(groups, labelOf(labels, node)), () => []);\n\n/**\n * The public result of `bijection`: a native `ReadonlyMap`, copied once\n * from the search's map at the end.\n */\nconst toReadonlyMap = (mapping: Labels): ReadonlyMap<string, string> => new Map(mapping);\n\n/**\n * Finds a blank node bijection from `self` to `that` under which the two\n * datasets are equal, if one exists.\n *\n * @since 0.1.0\n * @category isomorphism\n */\nexport const bijection = (\n self: Dataset.Dataset,\n that: Dataset.Dataset,\n): Option.Option<ReadonlyMap<string, string>> => {\n if (self.size !== that.size) return Option.none();\n const aBlank: Array<Term.Quad> = [];\n const groundMissing = Iterable.some(self, (q) => {\n if (!Term.hasBlankNodes(q)) return !Dataset.has(that, q);\n aBlank.push(q);\n return false;\n });\n if (groundMissing) return Option.none();\n const bBlank = Arr.filter(Arr.fromIterable(that), (q) => Term.hasBlankNodes(q));\n if (aBlank.length !== bBlank.length) return Option.none();\n if (Arr.isReadonlyArrayEmpty(aBlank)) return Option.some(toReadonlyMap(MutableHashMap.empty()));\n\n const a = refine(aBlank);\n const b = refine(bBlank);\n if (a.nodes.length !== b.nodes.length) return Option.none();\n\n const groupsB = groupsOf(b);\n const groupsA = groupsOf(a);\n const sameClasses = !Iterable.some(\n groupsA,\n ([l, g]) => !Option.exists(MutableHashMap.get(groupsB, l), (gb) => gb.length === g.length),\n );\n if (!sameClasses) return Option.none();\n\n const target = MutableHashSet.fromIterable(bBlank.map((q) => q.key));\n const mapping: Labels = MutableHashMap.empty();\n const used = MutableHashSet.empty<string>();\n // Assign unambiguous nodes first, then search the rest smallest class first.\n const order = Arr.sort(\n a.nodes,\n Order.mapInput(Order.Number, (x: string) => classOf(groupsA, a.labels, x).length),\n );\n\n const consistent = (node: string): boolean =>\n !quadsOf(a, node).some((q) => {\n const complete = quadBlankNodes(q).every((x) => MutableHashMap.has(mapping, x));\n return complete && !MutableHashSet.has(target, rename(q, mapping));\n });\n\n // Iterative depth-first search (graphs can have many thousands of blank nodes).\n const cursors: Array<number> = [0];\n let found = false;\n loop(() => {\n const i = cursors.length - 1;\n const node = order[i];\n if (i < 0 || node === undefined) {\n // The search is exhausted, or every node is assigned\n found = i === order.length;\n return false;\n }\n const candidates = classOf(groupsB, a.labels, node);\n const previous = MutableHashMap.get(mapping, node);\n if (Option.isSome(previous)) {\n MutableHashMap.remove(mapping, node);\n MutableHashSet.remove(used, previous.value);\n }\n let next = cursors[i] ?? 0;\n let advanced = false;\n loop(() => {\n const candidate = candidates[next];\n if (candidate === undefined) return false;\n next++;\n if (MutableHashSet.has(used, candidate)) return true;\n MutableHashMap.set(mapping, node, candidate);\n MutableHashSet.add(used, candidate);\n if (consistent(node)) {\n advanced = true;\n return false;\n }\n MutableHashMap.remove(mapping, node);\n MutableHashSet.remove(used, candidate);\n return true;\n });\n cursors[i] = next;\n if (advanced) cursors.push(0);\n else cursors.pop();\n return true;\n });\n return found ? Option.some(toReadonlyMap(mapping)) : Option.none();\n};\n\n/**\n * Whether two datasets are isomorphic: equal up to a consistent renaming of\n * blank nodes.\n *\n * @since 0.1.0\n * @category isomorphism\n */\nexport const isomorphic: {\n (that: Dataset.Dataset): (self: Dataset.Dataset) => boolean;\n (self: Dataset.Dataset, that: Dataset.Dataset): boolean;\n} = dual(2, (self: Dataset.Dataset, that: Dataset.Dataset): boolean =>\n Option.isSome(bijection(self, that)),\n);\n\n/**\n * Relabels blank nodes in a dataset with fresh labels `prefix0`, `prefix1`,\n * … in a deterministic order derived from their structural signatures.\n *\n * Isomorphic datasets without automorphic blank nodes yield identical\n * results; this is not a full canonicalisation algorithm.\n *\n * @since 0.1.0\n * @category isomorphism\n */\nexport const relabel = (self: Dataset.Dataset, prefix = 'c'): Dataset.Dataset => {\n const blank = Array.from(self).filter(Term.hasBlankNodes);\n if (Arr.isReadonlyArrayEmpty(blank)) return self;\n const { nodes, labels } = refine(blank);\n const sorted = Arr.sort(\n nodes,\n Order.mapInput(Order.String, (x: string) => labelOf(labels, x)),\n );\n const mapping: Labels = MutableHashMap.fromIterable(\n sorted.map((n, i) => [n, `${prefix}${i}`] as const),\n );\n return Dataset.map(self, (q) => renameBlankNodes(q, mapping));\n};\n"],"mappings":"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"}