@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,974 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { A as escapeString, S as Variable, Y as literal, c as NamedNode, k as escapeIri, t as BlankNode } from "./Term-CFLG1qu4.mjs";
3
+ import { i as rdf, o as xsd } from "./Vocab-DceKywpq.mjs";
4
+ import { l as resolve, s as relativize } from "./Iri-Cr92gsQV.mjs";
5
+ import { i as empty, r as compact, s as make } from "./PrefixMap-BHFPDLO-.mjs";
6
+ import { C as withParseSpan, c as makeCodec, d as makeSerializer, l as makeFormat, n as RdfParseError, o as freshBlankNodePrefix, r as RdfSerializeError, u as makeParser, w as withSerializeSpan } from "./Serialization-DP9H5bYQ.mjs";
7
+ import { D as isBlankNode, E as loop, O as isLiteral, j as isVariable, k as isNamedNode, r as Formula, s as Statement, t as Collection, v as isFormula } from "./Model-DlPzRYhF.mjs";
8
+ import { o as toDataset, r as fromDataset } from "./Mapping-Dc1ZGirk.mjs";
9
+ import { d as iriRef$1, g as pnCharsU, i as blankNodeLabel, m as pnChars, n as alpha, p as langTag } from "./Grammar-mQ8CgE1M.mjs";
10
+ import { c as numericLiteral, d as pnPrefix, f as prefixedName, m as stringLiteral, u as pnLocal } from "./Grammar-CPlSxGH6.mjs";
11
+ import { a as log, c as sameAs, r as i18n } from "./Vocab-TfpWG1Ne.mjs";
12
+ import * as Arr from "effect/Array";
13
+ import * as Iterable from "effect/Iterable";
14
+ import * as MutableHashMap from "effect/MutableHashMap";
15
+ import * as MutableHashSet from "effect/MutableHashSet";
16
+ import * as Option from "effect/Option";
17
+ import * as Predicate from "effect/Predicate";
18
+ import * as Effect from "effect/Effect";
19
+ import * as Result from "effect/Result";
20
+ import * as Ascii from "@thomasfosterau/effect-parse/Ascii";
21
+ import * as Compiler from "@thomasfosterau/effect-parse/Compiler";
22
+ import * as Parser from "@thomasfosterau/effect-parse/Parser";
23
+ import * as Token from "@thomasfosterau/effect-parse/Token";
24
+ // src/n3/internal/parser.ts
25
+ /**
26
+ * The Notation3 parser: a compiled `@thomasfosterau/effect-parse` grammar
27
+ * over the input string (no separate lexer), built on the Turtle terminals of
28
+ * `/turtle` (`Grammar`), as the N3 grammar is: N3 extends Turtle with
29
+ * formulas, paths, quick variables, `=`, `=>`, `<=`, `has`, `is … of` and the
30
+ * legacy `@forAll` / `@forSome`.
31
+ *
32
+ * The grammar's callbacks build the model as it reads, with no syntax tree:
33
+ * a `Builder` holds what depends on what came before (`@prefix` / `@base`,
34
+ * quantifier scopes, blank node allocation, the open formulas and the
35
+ * subjects being described), and statements are made in document order.
36
+ * Side effects run in `tap`s and zero-width `Parser.make`s, never in a `map`
37
+ * whose value is unused (the compiler skips those). An error the builder
38
+ * finds is kept and reported once the whole document has been read, so a
39
+ * syntax error anywhere takes precedence, as when the model was built from a
40
+ * tree after parsing.
41
+ *
42
+ * @internal
43
+ */
44
+ /** @internal */
45
+ var SyntaxFailure = class {
46
+ message;
47
+ line;
48
+ column;
49
+ constructor(message, line, column) {
50
+ this.message = message;
51
+ this.line = line;
52
+ this.column = column;
53
+ }
54
+ };
55
+ /** @internal */
56
+ const isPnCharsBase = (c) => c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 767 || c >= 880 && c <= 893 || c >= 895 && c <= 8191 || c >= 8204 && c <= 8205 || c >= 8304 && c <= 8591 || c >= 11264 && c <= 12271 || c >= 12289 && c <= 55295 || c >= 63744 && c <= 64975 || c >= 65008 && c <= 65533 || c >= 65536 && c <= 983039;
57
+ /** @internal */
58
+ const isPnCharsU = (c) => c === 95 || isPnCharsBase(c);
59
+ /** @internal */
60
+ const isPnChars = (c) => isPnCharsU(c) || c === 45 || c >= 48 && c <= 57 || c === 183 || c >= 768 && c <= 879 || c >= 8255 && c <= 8256;
61
+ const fail = (message, at) => Result.fail({
62
+ message,
63
+ at
64
+ });
65
+ const WHITESPACE = "whitespace";
66
+ /** Whitespace and `#` comments (which also end at a form feed). */
67
+ const ws = Parser.asVoid(Parser.repeat(Parser.alt(Token.takeWhile(" \r\n", { min: 1 }), Parser.preceded(Token.literal("#"), Token.takeTill("\n\r\f"))).pipe(Parser.expected(WHITESPACE))));
68
+ const lit = (s) => Token.literal(s);
69
+ const closeBracket = Parser.cut(Parser.preceded(ws, Token.literal("]"))).pipe(Parser.expected("']'"));
70
+ /** `s` after whitespace. */
71
+ const sym = (s) => Parser.preceded(ws, Token.literal(s));
72
+ /** A character that ends a statement, a list of objects or a formula. */
73
+ const endOf = (chars) => Parser.preceded(ws, Parser.alt(Parser.eof, Parser.peek(Token.oneOf(chars))));
74
+ /** An `@` keyword: `@` followed by letters. */
75
+ const atWord = Parser.taken(Parser.preceded(lit("@"), Token.takeWhile(alpha, { min: 1 })));
76
+ const atKeyword = (word) => atWord.pipe(Parser.filter((w) => w === word));
77
+ /** A `PN_PREFIX` not followed by `:` (a bare word such as `a`, `is`, `true`). */
78
+ const bareWord = Parser.terminated(pnPrefix, Parser.not(lit(":")));
79
+ /**
80
+ * The bare word `w`, checked by its first character before the word is
81
+ * read, so that the names tried as keywords on the way to a path are not
82
+ * each scanned as a word first.
83
+ */
84
+ const word = (w) => Parser.preceded(Parser.peek(lit(w.slice(0, 1))), bareWord.pipe(Parser.filter((x) => x === w)));
85
+ const forbiddenInIri = /[\u0000- <>"{}|^`\\]/u;
86
+ /** IRIREF (escapes of characters not allowed in IRIs are rejected by the builder). */
87
+ const iriRef = Parser.seq(Parser.location, iriRef$1, Parser.location).pipe(Parser.map(([at, value, end]) => ({
88
+ _tag: "IriRef",
89
+ value,
90
+ at,
91
+ escaped: end - at - 2 !== value.length
92
+ })));
93
+ const pname = Parser.seq(Parser.location, prefixedName).pipe(Parser.map(([at, { prefix, local }]) => ({
94
+ _tag: "PName",
95
+ prefix,
96
+ local,
97
+ at
98
+ })));
99
+ /** Records the offset at which a term starts (`b.at`), for its errors. */
100
+ const mark = Parser.make((state) => {
101
+ b.at = state.pos;
102
+ });
103
+ /** Records the offset at which an IRI reference ends (`b.end`). */
104
+ const markEnd = Parser.make((state) => {
105
+ b.end = state.pos;
106
+ });
107
+ /** An IRI reference as a term, made without an intermediate `IriNode`. */
108
+ const iriRefTerm = Parser.delimited(mark, iriRef$1, markEnd).pipe(Parser.map((value) => b.namedRef(value)));
109
+ /**
110
+ * A prefixed name as a term: the `PNAME_LN` / `PNAME_NS` that
111
+ * `TurtleGrammar.prefixedName` reads, taken as one slice and split at its
112
+ * first `:` (which `PN_PREFIX` cannot contain).
113
+ */
114
+ const pnameTerm = Parser.preceded(mark, Parser.taken(Parser.seq(Parser.opt(pnPrefix), lit(":"), Parser.opt(pnLocal)))).pipe(Parser.map((name) => b.namedPName(name)));
115
+ /** `iri`: an IRI reference or a prefixed name. */
116
+ const iri = Parser.alt(iriRef, pname).pipe(Parser.expected("an IRI"));
117
+ const path = Parser.suspend(() => pathDef);
118
+ const pol = Parser.suspend(() => polDef);
119
+ const statementList = (inFormula) => Parser.suspend(() => inFormula ? formulaStatements : documentStatements);
120
+ /** A parser that consumes nothing and runs `f` (on the builder's state). */
121
+ const act = (f) => Parser.make(() => {
122
+ f();
123
+ });
124
+ const TRUE = literal("true", xsd.boolean);
125
+ const FALSE = literal("false", xsd.boolean);
126
+ /**
127
+ * Where a numeric literal can start: a digit, or `.`, `+` or `-` followed by
128
+ * one. Checking up front (without consuming input) reports errors at a `.`
129
+ * that ends a statement, rather than after it.
130
+ */
131
+ const numberStart = Parser.make((state) => {
132
+ const input = state.input;
133
+ const isDigit = (k) => {
134
+ const c = input.charCodeAt(k);
135
+ return c >= 48 && c <= 57;
136
+ };
137
+ const c = input.charCodeAt(state.pos);
138
+ return isDigit(state.pos) || c === 46 && isDigit(state.pos + 1) || (c === 43 || c === 45) && (isDigit(state.pos + 1) || input.charCodeAt(state.pos + 1) === 46 && isDigit(state.pos + 2)) ? void 0 : state.backtrack("Token", expectedNumber);
139
+ });
140
+ const expectedNumber = ["a number"];
141
+ const numeric = Parser.preceded(numberStart, numericLiteral).pipe(Parser.map(([lexical, type]) => literal(lexical, type === "double" ? xsd.double : type === "decimal" ? xsd.decimal : xsd.integer)));
142
+ const noDatatype = Option.none();
143
+ const plainSuffix = {
144
+ language: "",
145
+ datatype: noDatatype
146
+ };
147
+ const rdfLiteral = Parser.seq(stringLiteral, Parser.alt(Parser.preceded(Parser.peek(lit("@")), Parser.cut(langTag)).pipe(Parser.map((language) => ({
148
+ language,
149
+ datatype: noDatatype
150
+ }))), Parser.preceded(sym("^^"), Parser.cut(Parser.preceded(ws, iri))).pipe(Parser.map((datatype) => ({
151
+ language: "",
152
+ datatype: Option.some(datatype)
153
+ }))), Parser.succeed(plainSuffix))).pipe(Parser.map(([value, { language, datatype }]) => b.literal(value, language, datatype)));
154
+ const quickVar = Parser.preceded(lit("?"), Parser.cut(Parser.taken(Parser.seq(Token.oneOf(pnCharsU), Token.takeWhile(pnChars)))).pipe(Parser.expected("a variable name"))).pipe(Parser.map((name) => b.variable(name)));
155
+ const blank = Parser.preceded(Parser.peek(lit("_:")), Parser.cut(blankNodeLabel.pipe(Parser.expected("a blank node label")))).pipe(Parser.map((label) => b.labelledBlank(label)));
156
+ /**
157
+ * `[ … ]`: an anonymous node, or `[ id <iri> … ]`. A new node is made when
158
+ * the bracket opens, before the nodes inside it, as the statements inside
159
+ * are about it.
160
+ */
161
+ const bracket = Parser.preceded(lit("["), Parser.cut(Parser.alt(sym("]").pipe(Parser.map(() => b.freshBlank())), Parser.preceded(Parser.tap(Parser.preceded(Parser.seq(ws, word("id")), Parser.cut(Parser.preceded(ws, iri))), (id) => b.open(b.named(id))), Parser.cut(Parser.terminated(pol, closeBracket))).pipe(Parser.map(() => b.close())), Parser.preceded(act(() => b.open(b.freshBlank())), Parser.terminated(pol, closeBracket)).pipe(Parser.map(() => b.close())))));
162
+ /** `( … )`: a collection. */
163
+ const collection = Parser.delimited(lit("("), Parser.cut(Parser.repeat(Parser.preceded(Parser.not(sym(")")), path))), Parser.cut(sym(")").pipe(Parser.expected("')'")))).pipe(Parser.map((items) => new Collection(items)));
164
+ /** `{ … }`: a formula; an empty one is the literal `true` (N3 test suite: graph/empty_graph). */
165
+ const formula = Parser.preceded(lit("{"), Parser.cut(Parser.delimited(act(() => b.openFormula()), statementList(true), Parser.cut(sym("}").pipe(Parser.expected("'}'")))))).pipe(Parser.map(() => {
166
+ const f = b.closeFormula();
167
+ return f.size === 0 ? TRUE : f;
168
+ }));
169
+ /** A prefixed name, or the bare words `true` and `false`. */
170
+ const TRAILING_DOTS = /\.+$/;
171
+ /** ASCII letters (`PN_CHARS_BASE` below 0x80). */
172
+ const isAsciiLetter = (c) => c >= 97 && c <= 122 || c >= 65 && c <= 90;
173
+ /** ASCII name characters (`PN_CHARS` below 0x80): letters, digits, `_` and `-`. */
174
+ const isAsciiNameChar = (c) => isAsciiLetter(c) || c >= 48 && c <= 57 || c === 95 || c === 45;
175
+ /** The scan in progress: its input and position (one pair of step functions serves every scan). */
176
+ let scanInput = "";
177
+ let scanPos = 0;
178
+ const prefixStep = () => {
179
+ if (!isAsciiNameChar(scanInput.charCodeAt(scanPos))) return false;
180
+ scanPos++;
181
+ return true;
182
+ };
183
+ const localStep = () => {
184
+ const c = scanInput.charCodeAt(scanPos);
185
+ if (!isAsciiNameChar(c) && c !== 46 && c !== 58) return false;
186
+ scanPos++;
187
+ return true;
188
+ };
189
+ /** Where the run of characters that `step` accepts, from `pos`, ends. */
190
+ const scanTo = (step, input, pos) => {
191
+ scanInput = input;
192
+ scanPos = pos;
193
+ loop(step);
194
+ return scanPos;
195
+ };
196
+ /**
197
+ * A prefixed name that is plain ASCII, scanned by hand: a prefix of letters,
198
+ * digits, `_` and `-` (or none), `:`, and a local name of those and `:` and
199
+ * `.` (without trailing dots). It backtracks, having changed nothing, at
200
+ * anything else (`.` in the prefix, `%`, `\`, a character from 0x80, no
201
+ * `:`), so that `pnameTerm` reads the name, with the same result.
202
+ */
203
+ const asciiPName = Parser.make((state) => {
204
+ const input = state.input;
205
+ const start = state.pos;
206
+ const colon = isAsciiLetter(input.charCodeAt(start)) ? scanTo(prefixStep, input, start + 1) : start;
207
+ if (input.charCodeAt(colon) !== 58) return state.backtrack("Token");
208
+ const first = input.charCodeAt(colon + 1);
209
+ const i = first === 45 || first === 46 || !(isAsciiNameChar(first) || first === 58) ? colon + 1 : scanTo(localStep, input, colon + 2);
210
+ const c = input.charCodeAt(i);
211
+ if (c === 37 || c === 92 || c >= 128) return state.backtrack("Token");
212
+ const local = input.charCodeAt(i - 1) === 46 && i > colon + 1 ? input.slice(colon + 1, i).replace(TRAILING_DOTS, "") : input.slice(colon + 1, i);
213
+ b.at = start;
214
+ state.pos = colon + 1 + local.length;
215
+ return b.namedPNameParts(input.slice(start, colon), local);
216
+ });
217
+ const nameItem = Parser.alt(Parser.alt(asciiPName, pnameTerm), Parser.seq(Parser.location, bareWord).pipe(Parser.map(([at, w]) => w === "true" ? TRUE : w === "false" ? FALSE : b.error(`Unexpected keyword or undeclared prefix '${w}'`, at))));
218
+ /**
219
+ * A grammar rule compiled to a function of its own. Formulas, collections and
220
+ * `[ … ]` nest, so the compiled functions on that path recurse; keeping the
221
+ * leaf terms out of them keeps their stack frames small, and the nesting
222
+ * depth the parser supports large.
223
+ */
224
+ const rule = (p) => Parser.suspend(() => p);
225
+ const leafItem = rule(Parser.alt(iriRefTerm, rdfLiteral, quickVar, atKeyword("@true").pipe(Parser.as(TRUE)), atKeyword("@false").pipe(Parser.as(FALSE)), blank, numeric, nameItem));
226
+ const pathItem = Parser.preceded(ws, Parser.alt(bracket, collection, formula, leafItem).pipe(Parser.expected("a term")));
227
+ /** A path: an item, then `!` (forward) and `^` (backward) steps, each applied as it is read. */
228
+ const pathDef = Parser.preceded(Parser.tap(pathItem, (head) => b.paths.push(head)), Parser.repeat(Parser.preceded(Parser.tap(Parser.preceded(ws, Parser.alt(lit("!"), Parser.terminated(lit("^"), Parser.not(lit("^"))))), (dir) => b.dirs.push(dir)), Parser.tap(Parser.cut(pathItem), (step) => b.step(step))))).pipe(Parser.map(() => b.endPath()));
229
+ const fixedVerb = rule(Parser.alt(lit("=>").pipe(Parser.as(log.implies)), lit("=").pipe(Parser.as(sameAs)), Parser.preceded(Parser.seq(Parser.peek(lit("<=")), Parser.not(iriRef)), lit("<=")).pipe(Parser.as(log.isImpliedBy)), Parser.alt(word("a"), atKeyword("@a")).pipe(Parser.as(rdf.type))));
230
+ /** A verb, which becomes the predicate (and direction) of the objects after it. */
231
+ const verb = Parser.preceded(ws, Parser.asVoid(Parser.alt(Parser.tap(fixedVerb, (predicate) => b.verb(predicate, false)), Parser.tap(Parser.preceded(Parser.seq(Parser.peek(lit("<-")), Parser.not(iriRef), lit("<-")), Parser.cut(path)), (predicate) => b.verb(predicate, true)), Parser.tap(Parser.preceded(Parser.alt(word("has"), atKeyword("@has")), Parser.cut(path)), (predicate) => b.verb(predicate, false)), Parser.preceded(Parser.alt(word("is"), atKeyword("@is")), Parser.cut(Parser.terminated(path, Parser.preceded(ws, Parser.alt(word("of"), atKeyword("@of"))).pipe(Parser.expected("'of' after 'is ...'"))))).pipe(Parser.tap((predicate) => b.verb(predicate, true))), Parser.tap(path, (predicate) => b.verb(predicate, false)))));
232
+ const objectList = Parser.separated(Parser.tap(path, (object) => b.object(object)), sym(","), { min: 1 }).pipe(Parser.expected("an object"));
233
+ const semicolons = Parser.repeat(sym(";"), { min: 1 });
234
+ const polDef = Parser.asVoid(Parser.terminated(Parser.seq(Parser.seq(verb, Parser.cut(objectList)), Parser.repeat(Parser.preceded(semicolons, Parser.preceded(Parser.not(endOf(".]}")), Parser.cut(Parser.seq(verb, objectList)))))), Parser.opt(semicolons)));
235
+ const triples = Parser.preceded(Parser.tap(path, (subject) => b.open(subject)), Parser.alt(Parser.preceded(Parser.peek(endOf(".}")), Parser.succeed(void 0)), pol)).pipe(Parser.tap(() => void b.close()));
236
+ /** The body of `@prefix` / `PREFIX`: `PN_PREFIX? ':' IRIREF`. */
237
+ const prefixBody = Parser.asVoid(Parser.seq(Parser.preceded(ws, Parser.terminated(Parser.opt(pnPrefix), lit(":").pipe(Parser.expected("a prefix name ending in \":\"")))), Parser.preceded(ws, iriRef)).pipe(Parser.tap(([prefix, ref]) => b.prefix(Option.getOrElse(prefix, () => ""), ref))));
238
+ const baseBody = Parser.asVoid(Parser.preceded(ws, iriRef).pipe(Parser.tap((ref) => {
239
+ b.base = Option.some(b.iri(ref));
240
+ })));
241
+ const quantifier = (universal) => Parser.alt(Parser.preceded(Parser.peek(endOf(".}")), Parser.succeed([])), Parser.separated(Parser.preceded(ws, iri), sym(","), { min: 1 })).pipe(Parser.tap((iris) => b.quantify(universal, iris)), Parser.asVoid);
242
+ /** `PREFIX` / `BASE` (case-insensitive, no trailing `.`). */
243
+ const sparqlDirective = rule(Parser.preceded(ws, Parser.alt(Parser.preceded(Parser.terminated(Ascii.caseless("PREFIX"), Parser.not(Token.oneOf([":.", pnChars]))), Parser.cut(prefixBody)), Parser.preceded(Parser.terminated(Ascii.caseless("BASE"), Parser.not(Token.oneOf([":.", pnChars]))), Parser.cut(baseBody)))));
244
+ const atDirective = rule(Parser.alt(Parser.preceded(atKeyword("@prefix"), Parser.cut(prefixBody)), Parser.preceded(atKeyword("@base"), Parser.cut(baseBody)), Parser.preceded(atKeyword("@forAll"), Parser.cut(quantifier(true))), Parser.preceded(atKeyword("@forSome"), Parser.cut(quantifier(false))), Parser.preceded(Parser.peek(atKeyword("@keywords")), Parser.cut(Parser.location.pipe(Parser.tryMap((at) => fail("@keywords is not supported by Notation3", at)))))));
245
+ const statement = Parser.preceded(ws, Parser.alt(atDirective, triples));
246
+ /** Statements, each ended by `.` (optional before the `}` of a formula). */
247
+ const statements = (inFormula) => Parser.asVoid(Parser.repeat(Parser.preceded(Parser.not(inFormula ? endOf("}") : Parser.preceded(ws, Parser.eof)), Parser.alt(sparqlDirective, Parser.cut(Parser.terminated(statement, (inFormula ? Parser.alt(sym("."), Parser.peek(sym("}"))) : sym(".")).pipe(Parser.expected("'.'"))))))));
248
+ const formulaStatements = statements(true);
249
+ const documentStatements = statements(false);
250
+ const document = Compiler.jit(Parser.terminated(documentStatements, Parser.preceded(ws, Parser.eof)));
251
+ const PN_LOCAL_ESC = /\\(.)/gu;
252
+ const I18N_DATATYPE = /^([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)_(ltr|rtl)$/;
253
+ /** The subject whose statements are being read, with the predicate and direction in force. */
254
+ var Frame = class {
255
+ subject = rdf.nil;
256
+ predicate = rdf.nil;
257
+ inverse = false;
258
+ };
259
+ /**
260
+ * What depends on the document so far (prefixes, the base IRI, blank node
261
+ * labels and counters, quantifier scopes, the open formulas and subjects),
262
+ * updated by the grammar's callbacks as it reads, so that statements are
263
+ * made in document order without a syntax tree. An error found here is
264
+ * kept and reported once the grammar has read the whole document, so that a
265
+ * syntax error anywhere comes first.
266
+ */
267
+ var Builder = class {
268
+ prefixes = MutableHashMap.empty();
269
+ base;
270
+ bnodePrefix;
271
+ bnodes = MutableHashMap.empty();
272
+ /** The blank node labels written in the document (as keys). */
273
+ reserved = MutableHashMap.empty();
274
+ anonCounter = 0;
275
+ /** Statement collectors, one per open formula (innermost last). */
276
+ out = [];
277
+ /**
278
+ * Explicit quantifier scopes (legacy `@forAll` / `@forSome`), innermost
279
+ * last, each with the depth of the formula it belongs to: only formulas
280
+ * that quantify something have one, so a document without quantifiers
281
+ * looks nothing up.
282
+ */
283
+ scopes = [];
284
+ /** How many formulas are open. */
285
+ depth = 0;
286
+ /**
287
+ * The variables made so far, by name: quick variables (one node per name,
288
+ * so that the copies of a rule compare by identity when a formula removes
289
+ * duplicate statements) and those made for `@forAll`, whose names avoid
290
+ * these.
291
+ */
292
+ variables = MutableHashMap.empty();
293
+ /** The subjects being described, innermost last (`depthOfFrames` of them are in use). */
294
+ frames = [];
295
+ openFrames = 0;
296
+ /** The items of the paths being read, and the directions of their steps, innermost last. */
297
+ paths = [];
298
+ dirs = [];
299
+ /** Where the term being read starts, and (for an IRI reference) ends. */
300
+ at = 0;
301
+ end = 0;
302
+ /** The first error found (none while it is empty). */
303
+ errors = [];
304
+ input;
305
+ constructor(input, options) {
306
+ this.input = input;
307
+ this.base = options.baseIri;
308
+ this.bnodePrefix = options.blankNodePrefix;
309
+ Iterable.forEach(input.matchAll(/_:([^\s<>"{}()[\],;^!]+)/g), ([, label]) => {
310
+ MutableHashMap.set(this.reserved, `${this.bnodePrefix}${label ?? ""}`, true);
311
+ });
312
+ }
313
+ /** Keeps the first error, returning a stand-in term so that reading can go on. */
314
+ error(message, at) {
315
+ if (Arr.isReadonlyArrayEmpty(this.errors)) this.errors.push({
316
+ message,
317
+ at
318
+ });
319
+ return rdf.nil;
320
+ }
321
+ openFormula() {
322
+ this.out.push([]);
323
+ this.depth++;
324
+ }
325
+ closeFormula() {
326
+ if (this.scopes.at(-1)?.[0] === this.depth) this.scopes.pop();
327
+ this.depth--;
328
+ return new Formula(this.out.pop() ?? []);
329
+ }
330
+ /** Starts describing `subject` (a statement's subject, or the node of a `[ … ]`). */
331
+ open(subject) {
332
+ const frame = this.frames[this.openFrames++] ??= new Frame();
333
+ frame.subject = subject;
334
+ frame.predicate = rdf.nil;
335
+ frame.inverse = false;
336
+ }
337
+ /** Stops describing the current subject, returning it. */
338
+ close() {
339
+ const frame = this.frames[--this.openFrames];
340
+ return frame === void 0 ? rdf.nil : frame.subject;
341
+ }
342
+ verb(predicate, inverse) {
343
+ const frame = this.frames[this.openFrames - 1];
344
+ if (frame === void 0) return;
345
+ frame.predicate = predicate;
346
+ frame.inverse = inverse;
347
+ }
348
+ /** A statement about the current subject, with the current predicate, of `object`. */
349
+ object(object) {
350
+ const frame = this.frames[this.openFrames - 1];
351
+ if (frame === void 0) return;
352
+ if (frame.inverse) this.emit(object, frame.predicate, frame.subject);
353
+ else this.emit(frame.subject, frame.predicate, object);
354
+ }
355
+ /** A `!` or `^` step from the current path's item to a new blank node, which replaces it. */
356
+ step(predicate) {
357
+ const dir = this.dirs.pop();
358
+ const item = this.paths.pop() ?? rdf.nil;
359
+ const node = this.freshBlank();
360
+ if (dir === "!") this.emit(item, predicate, node);
361
+ else this.emit(node, predicate, item);
362
+ this.paths.push(node);
363
+ }
364
+ endPath() {
365
+ return this.paths.pop() ?? rdf.nil;
366
+ }
367
+ prefix(prefix, ref) {
368
+ MutableHashMap.set(this.prefixes, prefix, this.iri(ref));
369
+ }
370
+ quantify(universal, iris) {
371
+ const scope = this.scope();
372
+ iris.forEach((node) => {
373
+ const quantified = this.iri(node);
374
+ MutableHashMap.set(scope, quantified, universal ? this.variableFor(quantified) : this.freshBlank());
375
+ });
376
+ }
377
+ variable(name) {
378
+ const known = this.variables.backing.get(name);
379
+ if (known !== void 0) return known;
380
+ const node = new Variable(name);
381
+ MutableHashMap.set(this.variables, name, node);
382
+ return node;
383
+ }
384
+ /** A literal: with `language` unless it is `''`, else of `datatype` if there is one. */
385
+ literal(value, language, datatype) {
386
+ if (language !== "") return literal(value, language);
387
+ if (Option.isNone(datatype)) return literal(value);
388
+ const type = this.iri(datatype.value);
389
+ const dir = type.startsWith(i18n.base) ? I18N_DATATYPE.exec(type.slice(i18n.base.length)) : null;
390
+ if (dir !== null) return literal(value, {
391
+ language: dir[1] ?? "",
392
+ direction: dir[2] === "rtl" ? "rtl" : "ltr"
393
+ });
394
+ return literal(value, new NamedNode(type));
395
+ }
396
+ iri(node) {
397
+ if (Predicate.isTagged(node, "IriRef")) {
398
+ if (node.escaped && forbiddenInIri.test(node.value)) {
399
+ this.error("Invalid escaped character in IRI", node.at);
400
+ return node.value;
401
+ }
402
+ return this.resolveIri(node.value);
403
+ }
404
+ const ns = this.prefixes.backing.get(node.prefix);
405
+ if (ns !== void 0) return ns + node.local;
406
+ if (node.prefix === "") return this.resolveIri("#") + node.local;
407
+ this.error(`Undeclared prefix '${node.prefix}:'`, node.at);
408
+ return node.local;
409
+ }
410
+ resolveIri(value) {
411
+ return Option.isNone(this.base) ? value : resolve(value, this.base.value);
412
+ }
413
+ /** The quantifier scope of the innermost formula, made on first use. */
414
+ scope() {
415
+ const top = this.scopes.at(-1);
416
+ if (top !== void 0 && top[0] === this.depth) return top[1];
417
+ const scope = MutableHashMap.empty();
418
+ this.scopes.push([this.depth, scope]);
419
+ return scope;
420
+ }
421
+ /**
422
+ * The nodes made so far, by IRI and (for prefixed names) by namespace and
423
+ * local name, so that a name written again is neither concatenated nor
424
+ * hashed anew, and each IRI's key (which formulas deduplicate by) is
425
+ * computed once.
426
+ */
427
+ iriNodes = MutableHashMap.empty();
428
+ localNodes = MutableHashMap.empty();
429
+ /** The term an IRI reference read at `at`…`end` stands for. */
430
+ namedRef(value) {
431
+ if (this.end - this.at - 2 !== value.length && forbiddenInIri.test(value)) return this.error("Invalid escaped character in IRI", this.at);
432
+ return this.scoped(this.iriNodeOf(this.resolveIri(value)));
433
+ }
434
+ /** The term a prefixed name read at `at` stands for. */
435
+ namedPName(name) {
436
+ const colon = name.indexOf(":");
437
+ const raw = name.slice(colon + 1);
438
+ return this.namedPNameParts(name.slice(0, colon), raw.includes("\\") ? raw.replace(PN_LOCAL_ESC, "$1") : raw);
439
+ }
440
+ /** The term of a prefixed name read at `at`, given its prefix and decoded local name. */
441
+ namedPNameParts(prefix, local) {
442
+ const ns = this.prefixes.backing.get(prefix);
443
+ if (ns !== void 0) return this.scoped(this.localNode(ns, local));
444
+ return this.named({
445
+ _tag: "PName",
446
+ prefix,
447
+ local,
448
+ at: this.at
449
+ });
450
+ }
451
+ /** The term an IRI as written stands for: its node, or a quantified variable or blank node. */
452
+ named(node) {
453
+ return this.scoped(this.iriNode(node));
454
+ }
455
+ /** `named`, or the variable or blank node it is quantified as. */
456
+ scoped(named) {
457
+ if (Arr.isReadonlyArrayEmpty(this.scopes)) return named;
458
+ return this.scopes.findLast(([, quantified]) => MutableHashMap.has(quantified, named.value))?.[1].backing.get(named.value) ?? named;
459
+ }
460
+ iriNode(node) {
461
+ if (Predicate.isTagged(node, "PName")) {
462
+ const ns = this.prefixes.backing.get(node.prefix);
463
+ if (ns !== void 0) return this.localNode(ns, node.local);
464
+ }
465
+ return this.iriNodeOf(this.iri(node));
466
+ }
467
+ iriNodeOf(value) {
468
+ const known = this.iriNodes.backing.get(value);
469
+ if (known !== void 0) return known;
470
+ const named = new NamedNode(value);
471
+ MutableHashMap.set(this.iriNodes, value, named);
472
+ return named;
473
+ }
474
+ /** The node of `ns` + `local`, by local name and then namespace (a local name rarely has two). */
475
+ localNode(ns, local) {
476
+ let byNamespace = this.localNodes.backing.get(local);
477
+ if (byNamespace === void 0) {
478
+ byNamespace = [];
479
+ MutableHashMap.set(this.localNodes, local, byNamespace);
480
+ }
481
+ const known = byNamespace.find(([namespace]) => namespace === ns);
482
+ if (known !== void 0) return known[1];
483
+ const named = new NamedNode(ns + local);
484
+ byNamespace.push([ns, named]);
485
+ return named;
486
+ }
487
+ emit(subject, predicate, object) {
488
+ this.out.at(-1)?.push(new Statement(subject, predicate, object));
489
+ }
490
+ freshBlank() {
491
+ const label = this.freshLabel();
492
+ return new BlankNode(this.reserved.backing.has(label) ? this.freeLabel() : label);
493
+ }
494
+ freshLabel() {
495
+ return `${this.bnodePrefix}b${(this.anonCounter++).toString(36)}`;
496
+ }
497
+ /** The next generated label that the document does not use. */
498
+ freeLabel() {
499
+ let label = this.freshLabel();
500
+ loop(() => {
501
+ if (!this.reserved.backing.has(label)) return false;
502
+ label = this.freshLabel();
503
+ return true;
504
+ });
505
+ return label;
506
+ }
507
+ labelledBlank(label) {
508
+ const known = this.bnodes.backing.get(label);
509
+ if (known !== void 0) return known;
510
+ const node = new BlankNode(`${this.bnodePrefix}${label}`);
511
+ MutableHashMap.set(this.bnodes, label, node);
512
+ return node;
513
+ }
514
+ variableFor(quantified) {
515
+ const local = /[^#/:]*$/.exec(quantified)?.[0] ?? "";
516
+ const base = /^[A-Za-z_][A-Za-z0-9_]*$/.test(local) ? local : "v";
517
+ let name = base;
518
+ if (MutableHashMap.has(this.variables, base)) loop((i) => {
519
+ name = `${base}_${i + 1}`;
520
+ return MutableHashMap.has(this.variables, name);
521
+ });
522
+ const node = new Variable(name);
523
+ MutableHashMap.set(this.variables, name, node);
524
+ return node;
525
+ }
526
+ };
527
+ /** The builder of the document being parsed (the grammar's callbacks update it). */
528
+ let b = new Builder("", {
529
+ baseIri: Option.none(),
530
+ blankNodePrefix: ""
531
+ });
532
+ const failAt = (input, message, at) => {
533
+ const end = Math.min(at, input.length);
534
+ const lines = input.slice(0, end).split("\n");
535
+ const column = (lines.at(-1) ?? "").length + 1;
536
+ throw new SyntaxFailure(message, lines.length, column);
537
+ };
538
+ const describe = (input, at) => at >= input.length ? "end of input" : `'${String.fromCodePoint(input.codePointAt(at) ?? 0)}'`;
539
+ /** @internal */
540
+ const parse$1 = (input, options) => {
541
+ b = new Builder(input, options);
542
+ b.openFormula();
543
+ const result = Parser.parse(document, input);
544
+ if (Result.isFailure(result)) {
545
+ const error = result.failure;
546
+ if (error.cause !== void 0) return failAt(input, error.cause.message, error.cause.at);
547
+ const found = describe(input, error.offset);
548
+ const expected = error.expected.filter((e) => e !== WHITESPACE);
549
+ const message = Arr.isReadonlyArrayEmpty(expected) || expected.length > 3 ? `Unexpected ${found}` : `Expected ${expected.join(" or ")} but found ${found}`;
550
+ return failAt(input, message, error.offset);
551
+ }
552
+ const error = b.errors.at(0);
553
+ if (error !== void 0) return failAt(input, error.message, error.at);
554
+ return {
555
+ formula: b.closeFormula(),
556
+ prefixes: make(b.prefixes),
557
+ baseIri: Option.getOrUndefined(b.base)
558
+ };
559
+ };
560
+ // src/n3/internal/writer.ts
561
+ /**
562
+ * Pretty-printer for the N3 model.
563
+ *
564
+ * @internal
565
+ */
566
+ /** Whether a string is a valid `PN_PREFIX` (or empty). */
567
+ const isPnPrefix = (s) => {
568
+ const cps = Array.from(s, codePoint);
569
+ if (!Arr.isReadonlyArrayNonEmpty(cps)) return true;
570
+ if (!isPnCharsBase(cps[0])) return false;
571
+ if (cps.length > 1 && cps[cps.length - 1] === 46) return false;
572
+ return cps.slice(1).every((c) => c === 46 || isPnChars(c));
573
+ };
574
+ /** The code point of a character (as `Array.from` splits a string). */
575
+ const codePoint = (ch) => ch.codePointAt(0) ?? 0;
576
+ /** Whether a string is a valid quick variable name (without `?`). */
577
+ const isVarName = (s) => {
578
+ const cps = Array.from(s, codePoint);
579
+ return Arr.isReadonlyArrayNonEmpty(cps) && isPnCharsU(cps[0]) && cps.slice(1).every(isPnChars);
580
+ };
581
+ const BLANK_LABEL = /^[A-Za-z0-9_](?:[\w.-]*[\w-])?$/;
582
+ const INTEGER = /^[+-]?\d+$/;
583
+ const DECIMAL = /^[+-]?\d*\.\d+$/;
584
+ const DOUBLE = /^[+-]?(?:\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+$/;
585
+ /** @internal */
586
+ const write = (root, options) => new Writer(root, options).run();
587
+ var Writer = class {
588
+ prefixes;
589
+ base;
590
+ unit;
591
+ usedPrefixes = MutableHashSet.empty();
592
+ blanks = MutableHashMap.empty();
593
+ blankLabels = MutableHashMap.empty();
594
+ usedLabels = MutableHashSet.empty();
595
+ varNames = MutableHashMap.empty();
596
+ /** Subject groups of inlinable blank nodes, per formula. */
597
+ inlineGroups = MutableHashMap.empty();
598
+ inlinable = MutableHashSet.empty();
599
+ emitted = MutableHashSet.empty();
600
+ root;
601
+ constructor(root, options) {
602
+ this.root = root;
603
+ this.prefixes = options.prefixes;
604
+ this.base = options.baseIri;
605
+ this.unit = options.indent;
606
+ }
607
+ run() {
608
+ this.analyse(this.root);
609
+ MutableHashMap.forEach(this.blanks, (info, label) => {
610
+ if (!info.predicate && info.refs <= 1 && !info.shared) MutableHashSet.add(this.inlinable, label);
611
+ });
612
+ const body = this.formulaBody(this.root, 0);
613
+ const base = Option.match(this.base, {
614
+ onNone: () => "",
615
+ onSome: (iri) => `@base <${escapeIri(iri)}> .\n`
616
+ });
617
+ const header = Arr.reduce(Arr.fromIterable(this.prefixes.prefixes), base, (acc, [prefix, ns]) => MutableHashSet.has(this.usedPrefixes, prefix) ? `${acc}@prefix ${prefix}: <${escapeIri(ns)}> .\n` : acc);
618
+ return header === "" ? body : `${header}\n${body}`;
619
+ }
620
+ /** The blank node's information, made (in `f`) on first sight. */
621
+ info(label, f) {
622
+ const known = this.blanks.backing.get(label);
623
+ if (known !== void 0) {
624
+ if (known.formula !== f) known.shared = true;
625
+ return known;
626
+ }
627
+ const info = {
628
+ refs: 0,
629
+ predicate: false,
630
+ formula: f,
631
+ shared: false
632
+ };
633
+ MutableHashMap.set(this.blanks, label, info);
634
+ return info;
635
+ }
636
+ analyse(f) {
637
+ f.statements.forEach((s) => {
638
+ this.analyseTerm(s.subject, f, "subject");
639
+ this.analyseTerm(s.predicate, f, "predicate");
640
+ this.analyseTerm(s.object, f, "object");
641
+ });
642
+ }
643
+ analyseTerm(t, f, position) {
644
+ if (isBlankNode(t)) {
645
+ const info = this.info(t.value, f);
646
+ if (position === "predicate") info.predicate = true;
647
+ else if (position !== "subject") info.refs++;
648
+ } else if (t instanceof Collection) t.items.forEach((item) => this.analyseTerm(item, f, "item"));
649
+ else if (t instanceof Formula) this.analyse(t);
650
+ }
651
+ /** Whether `subject` is an inlinable blank node. */
652
+ isInlinable(subject) {
653
+ return isBlankNode(subject) && MutableHashSet.has(this.inlinable, subject.value);
654
+ }
655
+ formulaBody(f, depth) {
656
+ const groups = MutableHashMap.empty();
657
+ f.statements.forEach((s) => {
658
+ const k = s.subject.key;
659
+ let g = groups.backing.get(k);
660
+ if (g === void 0) {
661
+ g = {
662
+ first: s,
663
+ statements: [s]
664
+ };
665
+ MutableHashMap.set(groups, k, g);
666
+ } else g.statements.push(s);
667
+ if (this.isInlinable(s.subject)) MutableHashMap.set(this.inlineGroups, s.subject.value, g.statements);
668
+ });
669
+ const pad = this.unit.repeat(depth);
670
+ const lines = [];
671
+ const render = (g) => {
672
+ const subject = g.first.subject;
673
+ if (this.isInlinable(subject)) {
674
+ MutableHashSet.add(this.emitted, subject.value);
675
+ lines.push(`${pad}[ ${this.predicateObjects(g.statements, depth + 1, ` ;\n${pad}${this.unit}`)} ] .`);
676
+ return;
677
+ }
678
+ const subj = this.term(subject, depth);
679
+ lines.push(`${pad}${subj} ${this.predicateObjects(g.statements, depth, ` ;\n${pad}${this.unit}`)} .`);
680
+ };
681
+ const deferred = [];
682
+ MutableHashMap.forEach(groups, (g) => {
683
+ const subject = g.first.subject;
684
+ if (this.isInlinable(subject) && this.blanks.backing.get(subject.value)?.refs === 1) {
685
+ deferred.push(g);
686
+ return;
687
+ }
688
+ render(g);
689
+ });
690
+ deferred.forEach((g) => {
691
+ const subject = g.first.subject;
692
+ if (!isBlankNode(subject) || MutableHashSet.has(this.emitted, subject.value)) return;
693
+ MutableHashSet.remove(this.inlinable, subject.value);
694
+ render(g);
695
+ });
696
+ return lines.join("\n") + (Arr.isReadonlyArrayNonEmpty(lines) ? "\n" : "");
697
+ }
698
+ predicateObjects(statements, depth, separator) {
699
+ const byPredicate = MutableHashMap.empty();
700
+ statements.forEach((s) => {
701
+ const k = s.predicate.key;
702
+ const e = byPredicate.backing.get(k);
703
+ if (e === void 0) MutableHashMap.set(byPredicate, k, {
704
+ predicate: s.predicate,
705
+ objects: [s.object]
706
+ });
707
+ else e.objects.push(s.object);
708
+ });
709
+ return Arr.map(Arr.fromIterable(MutableHashMap.values(byPredicate)), ({ predicate, objects }) => `${this.verb(predicate, depth)} ${objects.map((o) => this.term(o, depth)).join(", ")}`).join(separator);
710
+ }
711
+ verb(t, depth) {
712
+ if (isNamedNode(t)) {
713
+ if (t.value === rdf.type.value) return "a";
714
+ if (t.value === log.implies.value) return "=>";
715
+ if (t.value === log.isImpliedBy.value) return "<=";
716
+ if (t.value === sameAs.value) return "=";
717
+ }
718
+ return this.term(t, depth);
719
+ }
720
+ term(t, depth) {
721
+ if (isNamedNode(t)) return this.iri(t.value);
722
+ if (isBlankNode(t)) return this.blank(t, depth);
723
+ if (isLiteral(t)) return this.literal(t);
724
+ if (isVariable(t)) return this.variable(t);
725
+ if (t instanceof Collection) return Arr.isReadonlyArrayEmpty(t.items) ? "()" : `( ${t.items.map((i) => this.term(i, depth)).join(" ")} )`;
726
+ return this.formula(t, depth);
727
+ }
728
+ formula(f, depth) {
729
+ if (Arr.isReadonlyArrayEmpty(f.statements)) return "{}";
730
+ const inner = this.formulaBody(f, depth + 1);
731
+ if (f.statements.length === 1) {
732
+ const line = inner.trim();
733
+ if (!line.includes("\n") && line.length <= 80) return `{ ${line.replace(/ \.$/, "")} }`;
734
+ }
735
+ return `{\n${inner}${this.unit.repeat(depth)}}`;
736
+ }
737
+ blank(b, depth) {
738
+ if (MutableHashSet.has(this.inlinable, b.value) && !MutableHashSet.has(this.emitted, b.value)) {
739
+ MutableHashSet.add(this.emitted, b.value);
740
+ const g = this.inlineGroups.backing.get(b.value);
741
+ if (g === void 0 || Arr.isReadonlyArrayEmpty(g)) return "[]";
742
+ const pad = this.unit.repeat(depth + 1);
743
+ return `[ ${this.predicateObjects(g, depth + 1, ` ;\n${pad}`)} ]`;
744
+ }
745
+ const known = this.blankLabels.backing.get(b.value);
746
+ if (known !== void 0) return `_:${known}`;
747
+ let label = BLANK_LABEL.test(b.value) ? b.value : `b${MutableHashMap.size(this.blankLabels)}`;
748
+ loop(() => {
749
+ if (!MutableHashSet.has(this.usedLabels, label)) return false;
750
+ label = `${label}_`;
751
+ return true;
752
+ });
753
+ MutableHashSet.add(this.usedLabels, label);
754
+ MutableHashMap.set(this.blankLabels, b.value, label);
755
+ return `_:${label}`;
756
+ }
757
+ variable(v) {
758
+ const known = this.varNames.backing.get(v.value);
759
+ if (known !== void 0) return `?${known}`;
760
+ const name = isVarName(v.value) ? v.value : `v${MutableHashMap.size(this.varNames)}`;
761
+ MutableHashMap.set(this.varNames, v.value, name);
762
+ return `?${name}`;
763
+ }
764
+ iri(value) {
765
+ const compact$1 = compact(this.prefixes, value);
766
+ if (Option.isSome(compact$1) && isPnPrefix(compact$1.value[0])) {
767
+ const [prefix, local] = compact$1.value;
768
+ if (!local.endsWith(".")) {
769
+ MutableHashSet.add(this.usedPrefixes, prefix);
770
+ return `${prefix}:${local}`;
771
+ }
772
+ }
773
+ if (Option.isSome(this.base)) {
774
+ const rel = relativize(value, this.base.value);
775
+ if (Option.isSome(rel)) return `<${escapeIri(rel.value)}>`;
776
+ }
777
+ return `<${escapeIri(value)}>`;
778
+ }
779
+ literal(l) {
780
+ const dt = l.datatype.value;
781
+ if (l.language === "") {
782
+ if (dt === xsd.integer.value && INTEGER.test(l.value)) return l.value;
783
+ if (dt === xsd.decimal.value && DECIMAL.test(l.value)) return l.value;
784
+ if (dt === xsd.double.value && DOUBLE.test(l.value)) return l.value;
785
+ if (dt === xsd.boolean.value && (l.value === "true" || l.value === "false")) return l.value;
786
+ }
787
+ const quoted = this.quote(l.value);
788
+ if (l.language !== "") return l.direction === void 0 ? `${quoted}@${l.language}` : `${quoted}^^${this.iri(`${i18n.base}${l.language}_${l.direction}`)}`;
789
+ if (dt === "http://www.w3.org/2001/XMLSchema#string") return quoted;
790
+ return `${quoted}^^${this.iri(dt)}`;
791
+ }
792
+ quote(value) {
793
+ if (value.includes("\n") && !value.endsWith("\"")) return `"""${value.replace(/[\\"\u0000-\u0009\u000b-\u001f\u007f]/g, (ch) => ch === "\\" || ch === "\"" ? `\\${ch}` : escapeString(ch))}"""`;
794
+ return `"${escapeString(value)}"`;
795
+ }
796
+ };
797
+ // src/n3/N3.ts
798
+ /**
799
+ * Notation3 (N3) parsing and serialisation.
800
+ *
801
+ * - `parse` parses an N3 document into the full N3 model (`Model.Document`),
802
+ * including formulas, variables, collections and literals in any position.
803
+ * - `serializeDocument` pretty-prints the N3 model.
804
+ * - `parser`, `serializer` and `codec` implement the core
805
+ * `Serialization.Parser` / `Serializer` / `Codec` interfaces over RDF
806
+ * `Dataset`s, using the mapping documented in the `Mapping` module:
807
+ * formulas become named graphs identified by blank nodes, and collections
808
+ * become `rdf:first`/`rdf:rest` lists. Documents outside the RDF-compatible
809
+ * subset (variables, literal subjects, non-IRI predicates) fail with
810
+ * `RdfParseError`.
811
+ *
812
+ * Syntax notes (current W3C CG specification and test suite):
813
+ *
814
+ * - Supports `@prefix`/`@base`, SPARQL `PREFIX`/`BASE`, formulas, quick
815
+ * variables, paths (`!`, `^`), `a`, `has`, `is … of`, `<-`, `=`, `=>`,
816
+ * `<=`, IRI property lists (`[ id <iri> … ]`), and the `@`-prefixed
817
+ * keyword forms. The legacy explicit quantifiers `@forAll` (mapped to
818
+ * variables) and `@forSome` (mapped to fresh blank nodes) are accepted;
819
+ * `@keywords` is rejected.
820
+ * - `<=` is `log:isImpliedBy`; `=` is `owl:sameAs`.
821
+ * - An empty formula `{}` denotes the literal `true`.
822
+ * - The empty prefix `:` defaults to `<#>` (relative to the base) when not
823
+ * declared.
824
+ * - Blank node labels are scoped to the whole document.
825
+ * - `"…"^^i18n:{lang}_{dir}` is read as a directional language-tagged
826
+ * string.
827
+ *
828
+ * @since 0.1.0
829
+ */
830
+ var N3_exports = /* @__PURE__ */ __exportAll({
831
+ codec: () => codec,
832
+ format: () => format,
833
+ parse: () => parse,
834
+ parseDataset: () => parseDataset,
835
+ parser: () => parser,
836
+ serialize: () => serialize,
837
+ serializeDocument: () => serializeDocument,
838
+ serializer: () => serializer
839
+ });
840
+ /**
841
+ * The N3 format descriptor (`text/n3`, `.n3`).
842
+ *
843
+ * N3 can only represent named graphs that are named by blank nodes used as
844
+ * terms (formulas), so `datasets` is `false`.
845
+ *
846
+ * @since 0.1.0
847
+ * @category formats
848
+ */
849
+ const format = makeFormat({
850
+ name: "N3",
851
+ mediaType: "text/n3",
852
+ mediaTypes: [
853
+ "text/n3",
854
+ "text/rdf+n3",
855
+ "application/n3"
856
+ ],
857
+ extensions: ["n3"],
858
+ datasets: false
859
+ });
860
+ const trace = {
861
+ module: "N3",
862
+ format
863
+ };
864
+ const runParser = (input, options) => Effect.sync(() => parse$1(input, {
865
+ baseIri: Option.fromUndefinedOr(options?.baseIri),
866
+ blankNodePrefix: options?.blankNodePrefix ?? freshBlankNodePrefix()
867
+ })).pipe(Effect.catchDefect((e) => e instanceof SyntaxFailure ? Effect.fail(new RdfParseError({
868
+ format: format.name,
869
+ message: e.message,
870
+ line: e.line,
871
+ column: e.column
872
+ })) : Effect.die(e)));
873
+ /**
874
+ * Parses an N3 document into the full N3 model.
875
+ *
876
+ * @example
877
+ * ```ts
878
+ * import { Effect } from 'effect'
879
+ * import { N3 } from '@thomasfosterau/effect-rdf/n3'
880
+ *
881
+ * const doc = Effect.runSync(N3.parse('@prefix : <http://example.org/> . { ?x a :Man } => { ?x a :Mortal } .'))
882
+ * doc.formula.statements.length // 1
883
+ * ```
884
+ *
885
+ * @since 0.1.0
886
+ * @category parsing
887
+ */
888
+ const parse = Effect.fn("N3.parse")(function* (input, options) {
889
+ yield* Effect.annotateCurrentSpan({
890
+ "rdf.format": format.name,
891
+ "rdf.media_type": format.mediaType,
892
+ "rdf.input.length": input.length
893
+ });
894
+ const doc = yield* runParser(input, options);
895
+ yield* Effect.annotateCurrentSpan("n3.statements", doc.formula.size);
896
+ return doc;
897
+ });
898
+ /**
899
+ * Parses an N3 document in the RDF-compatible subset into a core dataset
900
+ * (see `Mapping.toDataset`).
901
+ *
902
+ * @since 0.1.0
903
+ * @category parsing
904
+ */
905
+ const parseDataset = (input, options) => Effect.flatMap(runParser(input, options), (doc) => Effect.suspend(() => {
906
+ const prefix = options?.blankNodePrefix ?? freshBlankNodePrefix();
907
+ return toDataset(doc, { blankNodePrefix: prefix }).pipe(Effect.mapError((e) => new RdfParseError({
908
+ format: format.name,
909
+ message: e.message
910
+ })), Effect.map((dataset) => ({
911
+ dataset,
912
+ prefixes: doc.prefixes,
913
+ baseIri: doc.baseIri
914
+ })));
915
+ })).pipe(withParseSpan(trace, input, "parseDataset"));
916
+ /**
917
+ * The N3 `Serialization.Parser`, producing core datasets.
918
+ *
919
+ * @since 0.1.0
920
+ * @category parsing
921
+ */
922
+ const parser = makeParser({
923
+ format,
924
+ parse: parseDataset
925
+ });
926
+ /**
927
+ * Serialises an N3 formula or document. Prefixes from the options (or, for
928
+ * a document, the document's own prefixes) are used to abbreviate IRIs, and
929
+ * only the prefixes actually used are declared.
930
+ *
931
+ * @since 0.1.0
932
+ * @category serializing
933
+ */
934
+ const serializeDocument = (self, options) => {
935
+ const isFormula$1 = isFormula(self);
936
+ return write(isFormula$1 ? self : self.formula, {
937
+ prefixes: options?.prefixes ?? (isFormula$1 ? empty : self.prefixes),
938
+ baseIri: Option.fromUndefinedOr(options?.baseIri ?? (isFormula$1 ? void 0 : self.baseIri)),
939
+ indent: options?.indent ?? " "
940
+ });
941
+ };
942
+ /**
943
+ * Serialises RDF quads as N3. Graphs named by blank nodes that are used as
944
+ * terms are written as nested formulas, and well-formed RDF lists as
945
+ * collections; other named graphs cannot be represented and fail with
946
+ * `RdfSerializeError`.
947
+ *
948
+ * @since 0.1.0
949
+ * @category serializing
950
+ */
951
+ const serialize = (quads, options) => fromDataset(quads).pipe(Effect.map((f) => serializeDocument(f, options)), Effect.mapError((e) => new RdfSerializeError({
952
+ format: format.name,
953
+ message: e.message
954
+ })), withSerializeSpan(trace));
955
+ /**
956
+ * The N3 `Serialization.Serializer` for core datasets.
957
+ *
958
+ * @since 0.1.0
959
+ * @category serializing
960
+ */
961
+ const serializer = makeSerializer({
962
+ format,
963
+ serialize
964
+ });
965
+ /**
966
+ * The N3 `Serialization.Codec` (parser + serializer over core datasets).
967
+ *
968
+ * @since 0.1.0
969
+ * @category codecs
970
+ */
971
+ const codec = makeCodec(parser, serializer);
972
+ export { parseDataset as a, serializeDocument as c, parse as i, serializer as l, codec as n, parser as o, format as r, serialize as s, N3_exports as t };
973
+
974
+ //# sourceMappingURL=N3-BzyV-KIH.mjs.map