@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,98 @@
1
+ /**
2
+ * BCP 47 language tags, as RDF 1.2 requires them: well-formedness (BCP 47
3
+ * §2.2.9, the `Language-Tag` ABNF of §2.1), the canonical lower-case form
4
+ * RDF terms carry, and a `Schema` for validating tags at a boundary.
5
+ *
6
+ * The syntax packages keep their grammar's own `LANGTAG` production
7
+ * (`[a-zA-Z]+ ('-' [a-zA-Z0-9]+)*`), which the W3C suites test and which is
8
+ * looser than BCP 47; use `isWellFormed` where full BCP 47 is wanted.
9
+ *
10
+ * @since 0.1.0
11
+ */
12
+ import * as Schema from 'effect/Schema';
13
+
14
+ const ALNUM = '[a-z0-9]';
15
+ // language = 2*3ALPHA ["-" extlang] / 4ALPHA / 5*8ALPHA; extlang = 3ALPHA *2("-" 3ALPHA)
16
+ const LANGUAGE = '(?:[a-z]{2,3}(?:-[a-z]{3}){0,3}|[a-z]{4,8})';
17
+ const SCRIPT = '(?:-[a-z]{4})?';
18
+ const REGION = '(?:-(?:[a-z]{2}|[0-9]{3}))?';
19
+ const VARIANTS = `(?:-(?:${ALNUM}{5,8}|[0-9]${ALNUM}{3}))*`;
20
+ // singleton = alphanum except "x"
21
+ const EXTENSIONS = `(?:-[0-9a-wy-z](?:-${ALNUM}{2,8})+)*`;
22
+ const PRIVATE_USE = `x(?:-${ALNUM}{1,8})+`;
23
+ const LANGTAG = `${LANGUAGE}${SCRIPT}${REGION}${VARIANTS}${EXTENSIONS}(?:-${PRIVATE_USE})?`;
24
+
25
+ // The grandfathered tags (BCP 47 §2.1, `irregular` and `regular`).
26
+ const GRANDFATHERED = [
27
+ 'en-gb-oed',
28
+ 'i-ami',
29
+ 'i-bnn',
30
+ 'i-default',
31
+ 'i-enochian',
32
+ 'i-hak',
33
+ 'i-klingon',
34
+ 'i-lux',
35
+ 'i-mingo',
36
+ 'i-navajo',
37
+ 'i-pwn',
38
+ 'i-tao',
39
+ 'i-tay',
40
+ 'i-tsu',
41
+ 'sgn-be-fr',
42
+ 'sgn-be-nl',
43
+ 'sgn-ch-de',
44
+ 'art-lojban',
45
+ 'cel-gaulish',
46
+ 'no-bok',
47
+ 'no-nyn',
48
+ 'zh-guoyu',
49
+ 'zh-hakka',
50
+ 'zh-min',
51
+ 'zh-min-nan',
52
+ 'zh-xiang',
53
+ ].join('|');
54
+
55
+ const WELL_FORMED = new RegExp(`^(?:${LANGTAG}|${PRIVATE_USE}|${GRANDFATHERED})$`, 'i');
56
+
57
+ /**
58
+ * Whether a string is a well-formed BCP 47 language tag (§2.2.9): it matches
59
+ * the `Language-Tag` ABNF, case-insensitively. Registry validity (known
60
+ * subtags, no duplicate variants or extensions) is not checked.
61
+ *
62
+ * @since 0.1.0
63
+ * @category predicates
64
+ */
65
+ export const isWellFormed = (tag: string): boolean => WELL_FORMED.test(tag);
66
+
67
+ /**
68
+ * The form a language tag takes in an RDF term: lower case (RDF 1.2 compares
69
+ * tags case-insensitively, and `Term.literal` lower-cases them).
70
+ *
71
+ * @since 0.1.0
72
+ * @category formatting
73
+ */
74
+ export const normalize = (tag: string): string => tag.toLowerCase();
75
+
76
+ /**
77
+ * Schema of a well-formed BCP 47 language tag (`isWellFormed`): a string,
78
+ * decoded unchanged.
79
+ *
80
+ * @since 0.1.0
81
+ * @category schemas
82
+ */
83
+ export const LanguageTagSchema: Schema.String = Schema.String.check(
84
+ Schema.makeFilter((tag: string) => isWellFormed(tag), {
85
+ identifier: 'isLanguageTag',
86
+ title: 'Language tag',
87
+ description: 'A well-formed BCP 47 language tag.',
88
+ expected: 'a BCP 47 language tag',
89
+ }),
90
+ ).annotate({ identifier: 'LanguageTag' });
91
+
92
+ /**
93
+ * The type `LanguageTagSchema` decodes to: a string.
94
+ *
95
+ * @since 0.1.0
96
+ * @category schemas
97
+ */
98
+ export type LanguageTagSchema = typeof LanguageTagSchema.Type;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Namespaces and strongly-typed vocabularies.
3
+ *
4
+ * ```ts
5
+ * import { Namespace } from "@thomasfosterau/effect-rdf"
6
+ *
7
+ * const ex = Namespace.make("http://example.org/")
8
+ * ex("alice") // NamedNode<"http://example.org/alice">
9
+ *
10
+ * const foaf = Namespace.vocabulary("http://xmlns.com/foaf/0.1/", ["name", "knows"])
11
+ * foaf.name // NamedNode<"http://xmlns.com/foaf/0.1/name">
12
+ * ```
13
+ *
14
+ * @since 0.1.0
15
+ */
16
+ import { NamedNode } from './Term.ts';
17
+ import * as MutableHashMap from 'effect/MutableHashMap';
18
+ import * as Option from 'effect/Option';
19
+ import * as Predicate from 'effect/Predicate';
20
+
21
+ /** Whether `node` is the IRI `iri`, with the IRI's type. */
22
+ const hasIri = <const Iri extends string>(node: NamedNode, iri: Iri): node is NamedNode<Iri> =>
23
+ node.value === iri;
24
+
25
+ /**
26
+ * A function that mints IRIs within a namespace.
27
+ *
28
+ * @since 0.1.0
29
+ * @category models
30
+ */
31
+ export interface Namespace<Base extends string> {
32
+ <const Local extends string>(local: Local): NamedNode<`${Base}${Local}`>;
33
+ readonly base: Base;
34
+ readonly node: NamedNode<Base>;
35
+ /** Whether an IRI belongs to this namespace. */
36
+ readonly contains: (iri: string | NamedNode) => boolean;
37
+ /** The local part of an IRI within this namespace, if it belongs to it. */
38
+ readonly localName: (iri: string | NamedNode) => string | undefined;
39
+ }
40
+
41
+ /**
42
+ * @since 0.1.0
43
+ * @category constructors
44
+ */
45
+ export const make = <const Base extends string>(base: Base): Namespace<Base> => {
46
+ const cache = MutableHashMap.empty<string, NamedNode>();
47
+ const ns = <const Local extends string>(local: Local): NamedNode<`${Base}${Local}`> => {
48
+ const iri: `${Base}${Local}` = `${base}${local}`;
49
+ return Option.getOrElse(
50
+ Option.filter(MutableHashMap.get(cache, local), (node) => hasIri(node, iri)),
51
+ () => {
52
+ const node = new NamedNode(iri);
53
+ MutableHashMap.set(cache, local, node);
54
+ return node;
55
+ },
56
+ );
57
+ };
58
+ const contains = (iri: string | NamedNode) =>
59
+ (Predicate.isString(iri) ? iri : iri.value).startsWith(base);
60
+ return Object.assign(ns, {
61
+ base,
62
+ node: new NamedNode(base),
63
+ contains,
64
+ localName: (iri: string | NamedNode) => {
65
+ const value = Predicate.isString(iri) ? iri : iri.value;
66
+ return value.startsWith(base) ? value.slice(base.length) : undefined;
67
+ },
68
+ });
69
+ };
70
+
71
+ /**
72
+ * A closed vocabulary: a namespace plus a fixed set of typed terms.
73
+ *
74
+ * @since 0.1.0
75
+ * @category models
76
+ */
77
+ export type Vocabulary<Base extends string, Terms extends string> = Namespace<Base> & {
78
+ readonly [K in Terms]: NamedNode<`${Base}${K}`>;
79
+ } & { readonly terms: ReadonlyArray<Terms> };
80
+
81
+ /**
82
+ * Creates a closed vocabulary with statically-known terms.
83
+ *
84
+ * @since 0.1.0
85
+ * @category constructors
86
+ */
87
+ export const vocabulary = <const Base extends string, const Terms extends string>(
88
+ base: Base,
89
+ terms: ReadonlyArray<Terms>,
90
+ ): Vocabulary<Base, Terms> => {
91
+ const ns = make(base);
92
+ const props: PropertyDescriptorMap = {
93
+ terms: { value: terms, enumerable: false },
94
+ };
95
+ terms.forEach((term) => {
96
+ props[term] = { value: ns(term), enumerable: true };
97
+ });
98
+ // SAFETY: `props` defines one property per term in `Terms`.
99
+ return Object.defineProperties(ns, props) as Vocabulary<Base, Terms>;
100
+ };
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Immutable prefix ↔ namespace mappings used to expand and compact IRIs.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Option from 'effect/Option';
7
+ import { NamedNode } from './Term.ts';
8
+ import { commonPrefixes } from './Vocab.ts';
9
+ import * as Predicate from 'effect/Predicate';
10
+ import * as Record from 'effect/Record';
11
+
12
+ /**
13
+ * @since 0.1.0
14
+ * @category models
15
+ */
16
+ export interface PrefixMap {
17
+ readonly prefixes: ReadonlyMap<string, string>;
18
+ }
19
+
20
+ /**
21
+ * The `prefixes` of a prefix map: a native `ReadonlyMap`, as the public
22
+ * field is typed; a later entry for a prefix replaces an earlier one.
23
+ */
24
+ function prefixMap(entries: Iterable<readonly [string, string]>): ReadonlyMap<string, string> {
25
+ return new Map(entries);
26
+ }
27
+
28
+ /**
29
+ * @since 0.1.0
30
+ * @category constructors
31
+ */
32
+ export const empty: PrefixMap = { prefixes: prefixMap([]) };
33
+
34
+ /**
35
+ * @since 0.1.0
36
+ * @category constructors
37
+ */
38
+ export const make = (
39
+ prefixes: Record.ReadonlyRecord<string, string> | Iterable<readonly [string, string]>,
40
+ ): PrefixMap => ({
41
+ prefixes: prefixMap(Symbol.iterator in prefixes ? prefixes : Record.toEntries(prefixes)),
42
+ });
43
+
44
+ /**
45
+ * A prefix map containing `rdf`, `rdfs`, `xsd` and `owl`.
46
+ *
47
+ * @since 0.1.0
48
+ * @category constructors
49
+ */
50
+ export const common: PrefixMap = make(commonPrefixes);
51
+
52
+ /**
53
+ * @since 0.1.0
54
+ * @category combinators
55
+ */
56
+ export const set = (self: PrefixMap, prefix: string, namespace: string): PrefixMap => {
57
+ return { prefixes: prefixMap([...self.prefixes, [prefix, namespace]]) };
58
+ };
59
+
60
+ /**
61
+ * Merges two prefix maps; entries in `that` win.
62
+ *
63
+ * @since 0.1.0
64
+ * @category combinators
65
+ */
66
+ export const merge = (self: PrefixMap, that: PrefixMap): PrefixMap => ({
67
+ prefixes: prefixMap([...self.prefixes, ...that.prefixes]),
68
+ });
69
+
70
+ /**
71
+ * @since 0.1.0
72
+ * @category getters
73
+ */
74
+ export const get = (self: PrefixMap, prefix: string): Option.Option<string> =>
75
+ Option.fromNullishOr(self.prefixes.get(prefix));
76
+
77
+ /**
78
+ * Expands a prefixed name (`prefix:local`) to an IRI.
79
+ *
80
+ * @since 0.1.0
81
+ * @category combinators
82
+ */
83
+ export const expand = (self: PrefixMap, curie: string): Option.Option<NamedNode> => {
84
+ const i = curie.indexOf(':');
85
+ if (i === -1) return Option.none();
86
+ const ns = self.prefixes.get(curie.slice(0, i));
87
+ return ns === undefined ? Option.none() : Option.some(new NamedNode(ns + curie.slice(i + 1)));
88
+ };
89
+
90
+ const PN_LOCAL_SIMPLE =
91
+ /^(?:[A-Za-z0-9_À-�:]|%[0-9A-Fa-f]{2})(?:(?:[A-Za-z0-9_\-.·À-�:]|%[0-9A-Fa-f]{2})*(?:[A-Za-z0-9_\-·À-�:]|%[0-9A-Fa-f]{2}))?$/;
92
+
93
+ /**
94
+ * Compacts an IRI to `[prefix, local]` using the longest matching namespace,
95
+ * if the local part is a valid Turtle/SPARQL `PN_LOCAL` without escapes.
96
+ *
97
+ * @since 0.1.0
98
+ * @category combinators
99
+ */
100
+ export const compact = (
101
+ self: PrefixMap,
102
+ iri: string | NamedNode,
103
+ ): Option.Option<readonly [string, string]> => {
104
+ const value = Predicate.isString(iri) ? iri : iri.value;
105
+ let best: Option.Option<readonly [string, string]> = Option.none();
106
+ let bestLength = -1;
107
+ self.prefixes.forEach((ns, prefix) => {
108
+ if (ns.length > bestLength && value.startsWith(ns)) {
109
+ const local = value.slice(ns.length);
110
+ if (local === '' || PN_LOCAL_SIMPLE.test(local)) {
111
+ best = Option.some([prefix, local]);
112
+ bestLength = ns.length;
113
+ }
114
+ }
115
+ });
116
+ return best;
117
+ };
package/src/RdfJs.ts ADDED
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Conversions to and from the RDF/JS data model
3
+ * (https://rdf.js.org/data-model-spec/), for interoperability with the wider
4
+ * JavaScript RDF ecosystem. No RDF/JS packages are required: the interfaces
5
+ * below are structural.
6
+ *
7
+ * @since 0.1.0
8
+ */
9
+ import * as Match from 'effect/Match';
10
+ import * as Term from './Term.ts';
11
+
12
+ /**
13
+ * A structural RDF/JS term.
14
+ *
15
+ * @since 0.1.0
16
+ * @category models
17
+ */
18
+ export type RdfJsTerm =
19
+ | { readonly termType: 'NamedNode'; readonly value: string }
20
+ | { readonly termType: 'BlankNode'; readonly value: string }
21
+ | {
22
+ readonly termType: 'Literal';
23
+ readonly value: string;
24
+ readonly language: string;
25
+ readonly direction?: 'ltr' | 'rtl' | '' | null | undefined;
26
+ readonly datatype: { readonly termType: 'NamedNode'; readonly value: string };
27
+ }
28
+ | { readonly termType: 'Variable'; readonly value: string }
29
+ | { readonly termType: 'DefaultGraph'; readonly value: '' }
30
+ | RdfJsQuad;
31
+
32
+ /**
33
+ * A structural RDF/JS quad (also used for quoted triples).
34
+ *
35
+ * @since 0.1.0
36
+ * @category models
37
+ */
38
+ export interface RdfJsQuad {
39
+ readonly termType: 'Quad';
40
+ readonly value: '';
41
+ readonly subject: RdfJsTerm;
42
+ readonly predicate: RdfJsTerm;
43
+ readonly object: RdfJsTerm;
44
+ readonly graph: RdfJsTerm;
45
+ }
46
+
47
+ // Built once: `fromTerm` runs for every term of every quad converted.
48
+ const fromTermMatch: (term: RdfJsTerm) => Term.Term = Match.type<RdfJsTerm>().pipe(
49
+ Match.withReturnType<Term.Term>(),
50
+ Match.when({ termType: 'NamedNode' }, (term) => new Term.NamedNode(term.value)),
51
+ Match.when({ termType: 'BlankNode' }, (term) => new Term.BlankNode(term.value)),
52
+ Match.when({ termType: 'Literal' }, (term) =>
53
+ term.language !== ''
54
+ ? Term.literal(term.value, {
55
+ language: term.language,
56
+ direction:
57
+ term.direction === 'ltr' || term.direction === 'rtl' ? term.direction : undefined,
58
+ })
59
+ : Term.literal(term.value, new Term.NamedNode(term.datatype.value)),
60
+ ),
61
+ Match.when({ termType: 'Variable' }, (term) => new Term.Variable(term.value)),
62
+ Match.when({ termType: 'DefaultGraph' }, () => Term.defaultGraph),
63
+ // SAFETY: an RDF/JS quad term's components are a subject, a predicate and an object.
64
+ Match.when(
65
+ { termType: 'Quad' },
66
+ (term) =>
67
+ new Term.Triple(
68
+ fromTerm(term.subject) as Term.Subject,
69
+ fromTerm(term.predicate) as Term.Predicate,
70
+ fromTerm(term.object) as Term.Object,
71
+ ),
72
+ ),
73
+ Match.exhaustive,
74
+ );
75
+
76
+ /**
77
+ * Converts an RDF/JS term. Quads appearing as terms become triple terms.
78
+ *
79
+ * @since 0.1.0
80
+ * @category conversions
81
+ */
82
+ export const fromTerm = (term: RdfJsTerm): Term.Term => fromTermMatch(term);
83
+
84
+ /**
85
+ * Converts an RDF/JS quad to a `Quad`.
86
+ *
87
+ * @since 0.1.0
88
+ * @category conversions
89
+ */
90
+ // SAFETY: an RDF/JS quad's components are a subject, a predicate, an object and a graph.
91
+ export const fromQuad = (quad: RdfJsQuad): Term.Quad =>
92
+ new Term.Quad(
93
+ fromTerm(quad.subject) as Term.Subject,
94
+ fromTerm(quad.predicate) as Term.Predicate,
95
+ fromTerm(quad.object) as Term.Object,
96
+ fromTerm(quad.graph) as Term.Graph,
97
+ );
98
+
99
+ // Built once: `toTerm` runs for every term of every quad converted.
100
+ const toTermMatch: (term: Term.Term) => RdfJsTerm = Match.type<Term.Term>().pipe(
101
+ Match.withReturnType<RdfJsTerm>(),
102
+ Match.tag('NamedNode', 'BlankNode', 'Variable', (term) => ({
103
+ termType: term._tag,
104
+ value: term.value,
105
+ })),
106
+ Match.tag('DefaultGraph', () => ({ termType: 'DefaultGraph', value: '' })),
107
+ Match.tag('Literal', (term) => ({
108
+ termType: 'Literal',
109
+ value: term.value,
110
+ language: term.language,
111
+ direction: term.direction ?? '',
112
+ datatype: { termType: 'NamedNode', value: term.datatype.value },
113
+ })),
114
+ Match.tag('Triple', (term) => ({
115
+ termType: 'Quad',
116
+ value: '',
117
+ subject: toTerm(term.subject),
118
+ predicate: toTerm(term.predicate),
119
+ object: toTerm(term.object),
120
+ graph: { termType: 'DefaultGraph', value: '' },
121
+ })),
122
+ Match.exhaustive,
123
+ );
124
+
125
+ /**
126
+ * Converts a term to a plain RDF/JS term object.
127
+ *
128
+ * @since 0.1.0
129
+ * @category conversions
130
+ */
131
+ export const toTerm = (term: Term.Term): RdfJsTerm => toTermMatch(term);
132
+
133
+ /**
134
+ * Converts a quad to a plain RDF/JS quad object.
135
+ *
136
+ * @since 0.1.0
137
+ * @category conversions
138
+ */
139
+ export const toQuad = (quad: Term.Quad): RdfJsQuad => ({
140
+ termType: 'Quad',
141
+ value: '',
142
+ subject: toTerm(quad.subject),
143
+ predicate: toTerm(quad.predicate),
144
+ object: toTerm(quad.object),
145
+ graph: toTerm(quad.graph),
146
+ });
package/src/Rdfs.ts ADDED
@@ -0,0 +1,241 @@
1
+ /**
2
+ * RDF Schema: class and property hierarchies, and RDFS entailment.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Dataset from './Dataset.ts';
7
+ import * as Term from './Term.ts';
8
+ import { rdf, rdfs } from './Vocab.ts';
9
+ import * as Arr from 'effect/Array';
10
+ import * as MutableHashMap from 'effect/MutableHashMap';
11
+ import * as Option from 'effect/Option';
12
+ import { loop } from './internal/loop.ts';
13
+
14
+ const transitiveClosure = (
15
+ self: Dataset.Dataset,
16
+ start: Term.Object,
17
+ property: Term.NamedNode,
18
+ direction: 'up' | 'down',
19
+ ): ReadonlyArray<Term.Object> => {
20
+ const seen = MutableHashMap.empty<string, Term.Object>();
21
+ const stack: Array<Term.Object> = [start];
22
+ // Depth-first, with an explicit stack: hierarchies can be deep
23
+ loop(() => {
24
+ const node = stack.pop();
25
+ if (node === undefined) return false;
26
+ const next: ReadonlyArray<Term.Object> =
27
+ direction === 'up'
28
+ ? Term.isLiteral(node)
29
+ ? []
30
+ : Dataset.objectsOf(self, node, property)
31
+ : Dataset.subjectsOf(self, property, node);
32
+ next.forEach((n) => {
33
+ if (!MutableHashMap.has(seen, n.key) && n.key !== start.key) {
34
+ MutableHashMap.set(seen, n.key, n);
35
+ stack.push(n);
36
+ }
37
+ });
38
+ return true;
39
+ });
40
+ return Arr.fromIterable(MutableHashMap.values(seen));
41
+ };
42
+
43
+ /**
44
+ * All (transitive) superclasses of a class, excluding the class itself.
45
+ *
46
+ * @since 0.1.0
47
+ * @category hierarchy
48
+ */
49
+ export const superClasses = (
50
+ self: Dataset.Dataset,
51
+ cls: Term.Resource,
52
+ ): ReadonlyArray<Term.Object> => transitiveClosure(self, cls, rdfs.subClassOf, 'up');
53
+
54
+ /**
55
+ * All (transitive) subclasses of a class, excluding the class itself.
56
+ *
57
+ * @since 0.1.0
58
+ * @category hierarchy
59
+ */
60
+ export const subClasses = (self: Dataset.Dataset, cls: Term.Resource): ReadonlyArray<Term.Object> =>
61
+ transitiveClosure(self, cls, rdfs.subClassOf, 'down');
62
+
63
+ /**
64
+ * All (transitive) superproperties of a property, excluding itself.
65
+ *
66
+ * @since 0.1.0
67
+ * @category hierarchy
68
+ */
69
+ export const superProperties = (
70
+ self: Dataset.Dataset,
71
+ property: Term.Resource,
72
+ ): ReadonlyArray<Term.Object> => transitiveClosure(self, property, rdfs.subPropertyOf, 'up');
73
+
74
+ /**
75
+ * All (transitive) subproperties of a property, excluding itself.
76
+ *
77
+ * @since 0.1.0
78
+ * @category hierarchy
79
+ */
80
+ export const subProperties = (
81
+ self: Dataset.Dataset,
82
+ property: Term.Resource,
83
+ ): ReadonlyArray<Term.Object> => transitiveClosure(self, property, rdfs.subPropertyOf, 'down');
84
+
85
+ /**
86
+ * The asserted types (`rdf:type` values) of a resource.
87
+ *
88
+ * @since 0.1.0
89
+ * @category hierarchy
90
+ */
91
+ export const types = (self: Dataset.Dataset, resource: Term.Subject): ReadonlyArray<Term.Object> =>
92
+ Dataset.objectsOf(self, resource, rdf.type);
93
+
94
+ /**
95
+ * Whether `resource` is an instance of `cls`, taking `rdfs:subClassOf` into
96
+ * account.
97
+ *
98
+ * @since 0.1.0
99
+ * @category hierarchy
100
+ */
101
+ export const isInstanceOf = (
102
+ self: Dataset.Dataset,
103
+ resource: Term.Subject,
104
+ cls: Term.Resource,
105
+ ): boolean => {
106
+ const asserted = types(self, resource);
107
+ if (asserted.some((t) => t.key === cls.key)) return true;
108
+ return asserted.some(
109
+ (t) =>
110
+ !Term.isLiteral(t) &&
111
+ transitiveClosure(self, t, rdfs.subClassOf, 'up').some((s) => s.key === cls.key),
112
+ );
113
+ };
114
+
115
+ /**
116
+ * All instances of a class, including instances of its subclasses.
117
+ *
118
+ * @since 0.1.0
119
+ * @category hierarchy
120
+ */
121
+ export const instancesOf = (
122
+ self: Dataset.Dataset,
123
+ cls: Term.Resource,
124
+ ): ReadonlyArray<Term.Subject> => {
125
+ const classes = [cls, ...subClasses(self, cls)];
126
+ const out = MutableHashMap.empty<string, Term.Subject>();
127
+ classes.forEach((c) =>
128
+ Dataset.subjectsOf(self, rdf.type, c).forEach((s) => {
129
+ MutableHashMap.set(out, s.key, s);
130
+ }),
131
+ );
132
+ return Arr.fromIterable(MutableHashMap.values(out));
133
+ };
134
+
135
+ /**
136
+ * Options for RDFS entailment.
137
+ *
138
+ * @since 0.1.0
139
+ * @category entailment
140
+ */
141
+ export interface EntailmentOptions {
142
+ /**
143
+ * Include the axiomatic and "every resource is an rdfs:Resource" style
144
+ * triples (rules rdfs4a/4b, rdfs8, rdfs10, rdfs12, rdfs13, rdf1). These
145
+ * produce many uninteresting triples; disabled by default.
146
+ */
147
+ readonly full?: boolean;
148
+ }
149
+
150
+ /**
151
+ * Computes the RDFS closure of the default graph (or every graph
152
+ * independently) by forward chaining the RDFS entailment rules to a fixpoint.
153
+ *
154
+ * Implemented rules: rdfs2 (domain), rdfs3 (range), rdfs5 (subPropertyOf
155
+ * transitivity), rdfs7 (subproperty inheritance), rdfs9 (type inheritance),
156
+ * rdfs11 (subClassOf transitivity), and — when `full` is set — rdf1, rdfs4a,
157
+ * rdfs4b, rdfs6, rdfs8, rdfs10, rdfs12 and rdfs13.
158
+ *
159
+ * @since 0.1.0
160
+ * @category entailment
161
+ */
162
+ export const closure = (
163
+ self: Dataset.Dataset,
164
+ options: EntailmentOptions = {},
165
+ ): Dataset.Dataset => {
166
+ return Arr.reduce(Dataset.graphs(self), self, (result, graph) =>
167
+ Dataset.union(result, closeGraph(Dataset.graph(self, graph), graph, options.full === true)),
168
+ );
169
+ };
170
+
171
+ const asSubject = (o: Term.Object): Option.Option<Term.Subject> =>
172
+ Term.isLiteral(o) ? Option.none() : Option.some(o);
173
+
174
+ const closeGraph = (input: Dataset.Dataset, graph: Term.Graph, full: boolean): Dataset.Dataset => {
175
+ let ds = input;
176
+ const q = (s: Term.Subject, p: Term.Predicate, o: Term.Object) => new Term.Quad(s, p, o, graph);
177
+ // Apply the rules until a round adds nothing
178
+ loop(() => {
179
+ const before = ds.size;
180
+ ds = Dataset.mutate(ds, (b) => {
181
+ const add = (s: Term.Subject, p: Term.Predicate, o: Term.Object) => {
182
+ b.add(q(s, p, o));
183
+ };
184
+ const addFrom = (s: Option.Option<Term.Subject>, p: Term.Predicate, o: Term.Object) => {
185
+ if (Option.isSome(s)) add(s.value, p, o);
186
+ };
187
+ const all = Array.from(ds);
188
+ all.forEach((t) => {
189
+ const { subject: s, predicate: p, object: o } = t;
190
+ const os = asSubject(o);
191
+ if (full) {
192
+ add(p, rdf.type, rdf.Property);
193
+ add(s, rdf.type, rdfs.Resource);
194
+ addFrom(os, rdf.type, rdfs.Resource);
195
+ }
196
+ // rdfs2 / rdfs3
197
+ Dataset.objectsOf(ds, p, rdfs.domain, graph).forEach((d) => add(s, rdf.type, d));
198
+ Dataset.objectsOf(ds, p, rdfs.range, graph).forEach((r) => addFrom(os, rdf.type, r));
199
+ // rdfs7
200
+ Dataset.objectsOf(ds, p, rdfs.subPropertyOf, graph).forEach((sp) => {
201
+ if (Term.isNamedNode(sp)) add(s, sp, o);
202
+ });
203
+ if (p.value === rdfs.subPropertyOf.value) {
204
+ // rdfs5
205
+ if (Option.isSome(os))
206
+ Dataset.objectsOf(ds, os.value, rdfs.subPropertyOf, graph).forEach((x) =>
207
+ add(s, rdfs.subPropertyOf, x),
208
+ );
209
+ } else if (p.value === rdfs.subClassOf.value) {
210
+ // rdfs11
211
+ if (Option.isSome(os))
212
+ Dataset.objectsOf(ds, os.value, rdfs.subClassOf, graph).forEach((x) =>
213
+ add(s, rdfs.subClassOf, x),
214
+ );
215
+ } else if (p.value === rdf.type.value) {
216
+ // rdfs9
217
+ if (Option.isSome(os))
218
+ Dataset.objectsOf(ds, os.value, rdfs.subClassOf, graph).forEach((x) =>
219
+ add(s, rdf.type, x),
220
+ );
221
+ if (full) {
222
+ if (o.key === rdf.Property.key) {
223
+ // SAFETY: a subject is also a valid object.
224
+ add(s, rdfs.subPropertyOf, s); // rdfs6
225
+ }
226
+ if (o.key === rdfs.Class.key) {
227
+ add(s, rdfs.subClassOf, rdfs.Resource); // rdfs8
228
+ // SAFETY: a subject is also a valid object.
229
+ add(s, rdfs.subClassOf, s); // rdfs10
230
+ }
231
+ if (o.key === rdfs.ContainerMembershipProperty.key)
232
+ add(s, rdfs.subPropertyOf, rdfs.member); // rdfs12
233
+ if (o.key === rdfs.Datatype.key) add(s, rdfs.subClassOf, rdfs.Literal); // rdfs13
234
+ }
235
+ }
236
+ });
237
+ });
238
+ return ds.size !== before;
239
+ });
240
+ return ds;
241
+ };