@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 @@
1
+ {"version":3,"file":"N3-BzyV-KIH.mjs","names":["TurtleGrammar.alpha","TurtleGrammar.pnPrefix","TurtleGrammar.iriRef","TurtleGrammar.prefixedName","TurtleGrammar.pnLocal","Term.literal","TurtleGrammar.numericLiteral","TurtleGrammar.stringLiteral","TurtleGrammar.langTag","TurtleGrammar.pnCharsU","TurtleGrammar.pnChars","Model.Collection","Model.Formula","Term.Variable","Term.NamedNode","Iri.resolve","Model.Statement","Term.BlankNode","parse","PrefixMap.make","Term.escapeIri","Guards.isBlankNode","Model.Collection","Model.Formula","Guards.isNamedNode","Guards.isLiteral","Guards.isVariable","compact","PrefixMap.compact","Iri.relativize","Term.escapeString","Serialization.makeFormat","Parser.parse","Serialization.freshBlankNodePrefix","Parser.SyntaxFailure","Serialization.RdfParseError","Mapping.toDataset","Serialization.withParseSpan","Serialization.makeParser","isFormula","Model.isFormula","Writer.write","PrefixMap.empty","Mapping.fromDataset","Serialization.RdfSerializeError","Serialization.withSerializeSpan","Serialization.makeSerializer","Serialization.makeCodec"],"sources":["../src/n3/internal/parser.ts","../src/n3/internal/writer.ts","../src/n3/N3.ts"],"sourcesContent":["/**\n * The Notation3 parser: a compiled `@thomasfosterau/effect-parse` grammar\n * over the input string (no separate lexer), built on the Turtle terminals of\n * `/turtle` (`Grammar`), as the N3 grammar is: N3 extends Turtle with\n * formulas, paths, quick variables, `=`, `=>`, `<=`, `has`, `is … of` and the\n * legacy `@forAll` / `@forSome`.\n *\n * The grammar's callbacks build the model as it reads, with no syntax tree:\n * a `Builder` holds what depends on what came before (`@prefix` / `@base`,\n * quantifier scopes, blank node allocation, the open formulas and the\n * subjects being described), and statements are made in document order.\n * Side effects run in `tap`s and zero-width `Parser.make`s, never in a `map`\n * whose value is unused (the compiler skips those). An error the builder\n * finds is kept and reported once the whole document has been read, so a\n * syntax error anywhere takes precedence, as when the model was built from a\n * tree after parsing.\n *\n * @internal\n */\nimport * as Ascii from '@thomasfosterau/effect-parse/Ascii';\nimport * as Compiler from '@thomasfosterau/effect-parse/Compiler';\nimport * as Parser from '@thomasfosterau/effect-parse/Parser';\nimport * as Token from '@thomasfosterau/effect-parse/Token';\nimport * as TurtleGrammar from '../../turtle/Grammar.ts';\nimport * as Iri from '../../Iri.ts';\nimport * as PrefixMap from '../../PrefixMap.ts';\nimport * as Term from '../../Term.ts';\nimport { rdf, xsd } from '../../Vocab.ts';\nimport * as Arr from 'effect/Array';\nimport * as Iterable from 'effect/Iterable';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Result from 'effect/Result';\nimport * as Model from '../Model.ts';\nimport { i18n, log, sameAs } from '../Vocab.ts';\nimport { loop } from './loop.ts';\n\n/** @internal */\nexport class SyntaxFailure {\n readonly message: string;\n readonly line: number;\n readonly column: number;\n constructor(message: string, line: number, column: number) {\n this.message = message;\n this.line = line;\n this.column = column;\n }\n}\n\n/** @internal */\nexport interface ParserOptions {\n readonly baseIri: Option.Option<string>;\n readonly blankNodePrefix: string;\n}\n\n// -----------------------------------------------------------------------------\n// Character classes (also used by the writer)\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const isPnCharsBase = (c: number): boolean =>\n (c >= 0x41 && c <= 0x5a) ||\n (c >= 0x61 && c <= 0x7a) ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x2ff) ||\n (c >= 0x370 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff);\n\n/** @internal */\nexport const isPnCharsU = (c: number): boolean => c === 0x5f || isPnCharsBase(c);\n\n/** @internal */\nexport const isPnChars = (c: number): boolean =>\n isPnCharsU(c) ||\n c === 0x2d ||\n (c >= 0x30 && c <= 0x39) ||\n c === 0xb7 ||\n (c >= 0x300 && c <= 0x36f) ||\n (c >= 0x203f && c <= 0x2040);\n\n// -----------------------------------------------------------------------------\n// IRIs as written\n// -----------------------------------------------------------------------------\n\n/** An IRI as written: an IRI reference or a prefixed name, at an offset. */\ntype IriNode =\n | {\n readonly _tag: 'IriRef';\n readonly value: string;\n readonly at: number;\n /** Whether the reference contains `UCHAR` escapes. */\n readonly escaped: boolean;\n }\n | {\n readonly _tag: 'PName';\n readonly prefix: string;\n readonly local: string;\n readonly at: number;\n };\n\n// -----------------------------------------------------------------------------\n// Grammar\n// -----------------------------------------------------------------------------\n\n/** A syntax error with its offset (the cause of a grammar failure). */\ninterface Fail {\n readonly message: string;\n readonly at: number;\n}\n\ntype P<A> = Parser.Parser<A, Fail>;\n\nconst fail = <A>(message: string, at: number): Result.Result<A, Fail> =>\n Result.fail({ message, at });\n\nconst WHITESPACE = 'whitespace';\n\n/** Whitespace and `#` comments (which also end at a form feed). */\nconst ws: P<void> = Parser.asVoid(\n Parser.repeat(\n Parser.alt(\n Token.takeWhile(' \\t\\r\\n', { min: 1 }),\n Parser.preceded(Token.literal('#'), Token.takeTill('\\n\\r\\f')),\n ).pipe(Parser.expected(WHITESPACE)),\n ),\n);\n\nconst lit = (s: string): P<string> => Token.literal(s);\n\nconst closeBracket: P<string> = Parser.cut(Parser.preceded(ws, Token.literal(']'))).pipe(\n Parser.expected(\"']'\"),\n);\n\n/** `s` after whitespace. */\nconst sym = (s: string): P<string> => Parser.preceded(ws, Token.literal(s));\n\n/** A character that ends a statement, a list of objects or a formula. */\nconst endOf = (chars: string): P<unknown> =>\n Parser.preceded(ws, Parser.alt(Parser.eof, Parser.peek(Token.oneOf(chars))));\n\n/** An `@` keyword: `@` followed by letters. */\nconst atWord: P<string> = Parser.taken(\n Parser.preceded(lit('@'), Token.takeWhile(TurtleGrammar.alpha, { min: 1 })),\n);\n\nconst atKeyword = (word: string): P<string> => atWord.pipe(Parser.filter((w) => w === word));\n\n/** A `PN_PREFIX` not followed by `:` (a bare word such as `a`, `is`, `true`). */\nconst bareWord: P<string> = Parser.terminated(TurtleGrammar.pnPrefix, Parser.not(lit(':')));\n\n/**\n * The bare word `w`, checked by its first character before the word is\n * read, so that the names tried as keywords on the way to a path are not\n * each scanned as a word first.\n */\nconst word = (w: string): P<string> =>\n Parser.preceded(Parser.peek(lit(w.slice(0, 1))), bareWord.pipe(Parser.filter((x) => x === w)));\n\n// eslint-disable-next-line no-control-regex\nconst forbiddenInIri = /[\\u0000- <>\"{}|^`\\\\]/u;\n\n/** IRIREF (escapes of characters not allowed in IRIs are rejected by the builder). */\nconst iriRef: P<IriNode> = Parser.seq(Parser.location, TurtleGrammar.iriRef, Parser.location).pipe(\n Parser.map(([at, value, end]): IriNode => ({\n _tag: 'IriRef',\n value,\n at,\n escaped: end - at - 2 !== value.length,\n })),\n);\n\nconst pname: P<IriNode> = Parser.seq(Parser.location, TurtleGrammar.prefixedName).pipe(\n Parser.map(([at, { prefix, local }]): IriNode => ({ _tag: 'PName', prefix, local, at })),\n);\n\n/** Records the offset at which a term starts (`b.at`), for its errors. */\nconst mark: P<void> = Parser.make<void>((state) => {\n b.at = state.pos;\n return undefined;\n});\n\n/** Records the offset at which an IRI reference ends (`b.end`). */\nconst markEnd: P<void> = Parser.make<void>((state) => {\n b.end = state.pos;\n return undefined;\n});\n\n/** An IRI reference as a term, made without an intermediate `IriNode`. */\nconst iriRefTerm: P<Model.N3Term> = Parser.delimited(mark, TurtleGrammar.iriRef, markEnd).pipe(\n Parser.map((value) => b.namedRef(value)),\n);\n\n/**\n * A prefixed name as a term: the `PNAME_LN` / `PNAME_NS` that\n * `TurtleGrammar.prefixedName` reads, taken as one slice and split at its\n * first `:` (which `PN_PREFIX` cannot contain).\n */\nconst pnameTerm: P<Model.N3Term> = Parser.preceded(\n mark,\n Parser.taken(\n Parser.seq(Parser.opt(TurtleGrammar.pnPrefix), lit(':'), Parser.opt(TurtleGrammar.pnLocal)),\n ),\n).pipe(Parser.map((name) => b.namedPName(name)));\n\n/** `iri`: an IRI reference or a prefixed name. */\nconst iri: P<IriNode> = Parser.alt(iriRef, pname).pipe(Parser.expected('an IRI'));\n\nconst path: P<Model.N3Term> = Parser.suspend(() => pathDef);\nconst pol: P<void> = Parser.suspend(() => polDef);\nconst statementList = (inFormula: boolean): P<void> =>\n Parser.suspend(() => (inFormula ? formulaStatements : documentStatements));\n\n/** A parser that consumes nothing and runs `f` (on the builder's state). */\nconst act = (f: () => void): P<void> =>\n Parser.make<void>(() => {\n f();\n return undefined;\n });\n\nconst TRUE = Term.literal('true', xsd.boolean);\nconst FALSE = Term.literal('false', xsd.boolean);\n\n/**\n * Where a numeric literal can start: a digit, or `.`, `+` or `-` followed by\n * one. Checking up front (without consuming input) reports errors at a `.`\n * that ends a statement, rather than after it.\n */\nconst numberStart: P<void> = Parser.make<void>((state) => {\n // SAFETY: the N3 parser runs on string input, never bytes.\n const input = state.input;\n const isDigit = (k: number) => {\n const c = input.charCodeAt(k);\n return c >= 0x30 && c <= 0x39;\n };\n const c = input.charCodeAt(state.pos);\n const ok =\n isDigit(state.pos) ||\n (c === 0x2e && isDigit(state.pos + 1)) ||\n ((c === 0x2b || c === 0x2d) &&\n (isDigit(state.pos + 1) ||\n (input.charCodeAt(state.pos + 1) === 0x2e && isDigit(state.pos + 2))));\n return ok ? undefined : state.backtrack('Token', expectedNumber);\n});\n\nconst expectedNumber = ['a number'];\n\nconst numeric: P<Model.N3Term> = Parser.preceded(numberStart, TurtleGrammar.numericLiteral).pipe(\n Parser.map(([lexical, type]) =>\n Term.literal(\n lexical,\n type === 'double' ? xsd.double : type === 'decimal' ? xsd.decimal : xsd.integer,\n ),\n ),\n);\n\n/** What follows a string literal: a language tag (`''` for none) or a datatype. */\ninterface LiteralSuffix {\n readonly language: string;\n readonly datatype: Option.Option<IriNode>;\n}\n\nconst noDatatype = Option.none<IriNode>();\nconst plainSuffix: LiteralSuffix = { language: '', datatype: noDatatype };\n\nconst rdfLiteral: P<Model.N3Term> = Parser.seq(\n TurtleGrammar.stringLiteral,\n Parser.alt(\n Parser.preceded(Parser.peek(lit('@')), Parser.cut(TurtleGrammar.langTag)).pipe(\n Parser.map((language): LiteralSuffix => ({ language, datatype: noDatatype })),\n ),\n Parser.preceded(sym('^^'), Parser.cut(Parser.preceded(ws, iri))).pipe(\n Parser.map((datatype): LiteralSuffix => ({ language: '', datatype: Option.some(datatype) })),\n ),\n Parser.succeed(plainSuffix),\n ),\n).pipe(Parser.map(([value, { language, datatype }]) => b.literal(value, language, datatype)));\n\nconst quickVar: P<Model.N3Term> = Parser.preceded(\n lit('?'),\n Parser.cut(\n Parser.taken(\n Parser.seq(Token.oneOf(TurtleGrammar.pnCharsU), Token.takeWhile(TurtleGrammar.pnChars)),\n ),\n ).pipe(Parser.expected('a variable name')),\n).pipe(Parser.map((name) => b.variable(name)));\n\nconst blank: P<Model.N3Term> = Parser.preceded(\n Parser.peek(lit('_:')),\n Parser.cut(TurtleGrammar.blankNodeLabel.pipe(Parser.expected('a blank node label'))),\n).pipe(Parser.map((label) => b.labelledBlank(label)));\n\n/**\n * `[ … ]`: an anonymous node, or `[ id <iri> … ]`. A new node is made when\n * the bracket opens, before the nodes inside it, as the statements inside\n * are about it.\n */\nconst bracket: P<Model.N3Term> = Parser.preceded(\n lit('['),\n Parser.cut(\n Parser.alt(\n sym(']').pipe(Parser.map(() => b.freshBlank())),\n Parser.preceded(\n Parser.tap(\n Parser.preceded(Parser.seq(ws, word('id')), Parser.cut(Parser.preceded(ws, iri))),\n (id) => b.open(b.named(id)),\n ),\n Parser.cut(Parser.terminated(pol, closeBracket)),\n ).pipe(Parser.map(() => b.close())),\n Parser.preceded(\n act(() => b.open(b.freshBlank())),\n Parser.terminated(pol, closeBracket),\n ).pipe(Parser.map(() => b.close())),\n ),\n ),\n);\n\n/** `( … )`: a collection. */\nconst collection: P<Model.N3Term> = Parser.delimited(\n lit('('),\n Parser.cut(Parser.repeat(Parser.preceded(Parser.not(sym(')')), path))),\n Parser.cut(sym(')').pipe(Parser.expected(\"')'\"))),\n).pipe(Parser.map((items) => new Model.Collection(items)));\n\n/** `{ … }`: a formula; an empty one is the literal `true` (N3 test suite: graph/empty_graph). */\nconst formula: P<Model.N3Term> = Parser.preceded(\n lit('{'),\n Parser.cut(\n Parser.delimited(\n act(() => b.openFormula()),\n statementList(true),\n Parser.cut(sym('}').pipe(Parser.expected(\"'}'\"))),\n ),\n ),\n).pipe(\n Parser.map(() => {\n const f = b.closeFormula();\n return f.size === 0 ? TRUE : f;\n }),\n);\n\n/** A prefixed name, or the bare words `true` and `false`. */\nconst TRAILING_DOTS = /\\.+$/;\n\n/** ASCII letters (`PN_CHARS_BASE` below 0x80). */\nconst isAsciiLetter = (c: number): boolean => (c >= 0x61 && c <= 0x7a) || (c >= 0x41 && c <= 0x5a);\n\n/** ASCII name characters (`PN_CHARS` below 0x80): letters, digits, `_` and `-`. */\nconst isAsciiNameChar = (c: number): boolean =>\n isAsciiLetter(c) || (c >= 0x30 && c <= 0x39) || c === 0x5f || c === 0x2d;\n\n/** The scan in progress: its input and position (one pair of step functions serves every scan). */\nlet scanInput = '';\nlet scanPos = 0;\n\nconst prefixStep = (): boolean => {\n if (!isAsciiNameChar(scanInput.charCodeAt(scanPos))) return false;\n scanPos++;\n return true;\n};\n\nconst localStep = (): boolean => {\n const c = scanInput.charCodeAt(scanPos);\n if (!isAsciiNameChar(c) && c !== 0x2e && c !== 0x3a) return false;\n scanPos++;\n return true;\n};\n\n/** Where the run of characters that `step` accepts, from `pos`, ends. */\nconst scanTo = (step: () => boolean, input: string, pos: number): number => {\n scanInput = input;\n scanPos = pos;\n loop(step);\n return scanPos;\n};\n\n/**\n * A prefixed name that is plain ASCII, scanned by hand: a prefix of letters,\n * digits, `_` and `-` (or none), `:`, and a local name of those and `:` and\n * `.` (without trailing dots). It backtracks, having changed nothing, at\n * anything else (`.` in the prefix, `%`, `\\`, a character from 0x80, no\n * `:`), so that `pnameTerm` reads the name, with the same result.\n */\nconst asciiPName: P<Model.N3Term> = Parser.make((state) => {\n const input = state.input;\n const start = state.pos;\n const colon = isAsciiLetter(input.charCodeAt(start))\n ? scanTo(prefixStep, input, start + 1)\n : start;\n if (input.charCodeAt(colon) !== 0x3a) return state.backtrack('Token');\n // A local name does not start with `-` or `.`\n const first = input.charCodeAt(colon + 1);\n const i =\n first === 0x2d || first === 0x2e || !(isAsciiNameChar(first) || first === 0x3a)\n ? colon + 1\n : scanTo(localStep, input, colon + 2);\n const c = input.charCodeAt(i);\n if (c === 0x25 || c === 0x5c || c >= 0x80) return state.backtrack('Token');\n // A dot cannot end a name (it ends the statement)\n const local =\n input.charCodeAt(i - 1) === 0x2e && i > colon + 1\n ? input.slice(colon + 1, i).replace(TRAILING_DOTS, '')\n : input.slice(colon + 1, i);\n b.at = start;\n state.pos = colon + 1 + local.length;\n return b.namedPNameParts(input.slice(start, colon), local);\n});\n\nconst nameItem: P<Model.N3Term> = Parser.alt(\n Parser.alt(asciiPName, pnameTerm),\n Parser.seq(Parser.location, bareWord).pipe(\n Parser.map(([at, w]) =>\n w === 'true'\n ? TRUE\n : w === 'false'\n ? FALSE\n : b.error(`Unexpected keyword or undeclared prefix '${w}'`, at),\n ),\n ),\n);\n\n/**\n * A grammar rule compiled to a function of its own. Formulas, collections and\n * `[ … ]` nest, so the compiled functions on that path recurse; keeping the\n * leaf terms out of them keeps their stack frames small, and the nesting\n * depth the parser supports large.\n */\nconst rule = <A>(p: P<A>): P<A> => Parser.suspend(() => p);\n\nconst leafItem: P<Model.N3Term> = rule(\n Parser.alt(\n iriRefTerm,\n rdfLiteral,\n quickVar,\n atKeyword('@true').pipe(Parser.as<Model.N3Term>(TRUE)),\n atKeyword('@false').pipe(Parser.as<Model.N3Term>(FALSE)),\n blank,\n numeric,\n nameItem,\n ),\n);\n\nconst pathItem: P<Model.N3Term> = Parser.preceded(\n ws,\n Parser.alt(bracket, collection, formula, leafItem).pipe(Parser.expected('a term')),\n);\n\n/** A path: an item, then `!` (forward) and `^` (backward) steps, each applied as it is read. */\nconst pathDef: P<Model.N3Term> = Parser.preceded(\n Parser.tap(pathItem, (head) => b.paths.push(head)),\n Parser.repeat(\n Parser.preceded(\n Parser.tap(\n Parser.preceded(\n ws,\n Parser.alt(lit('!'), Parser.terminated(lit('^'), Parser.not(lit('^')))),\n ),\n (dir) => b.dirs.push(dir),\n ),\n Parser.tap(Parser.cut(pathItem), (step) => b.step(step)),\n ),\n ),\n).pipe(Parser.map(() => b.endPath()));\n\nconst fixedVerb: P<Model.N3Term> = rule(\n Parser.alt(\n lit('=>').pipe(Parser.as<Model.N3Term>(log.implies)),\n lit('=').pipe(Parser.as<Model.N3Term>(sameAs)),\n // `<=` unless the `<` starts an IRI reference.\n Parser.preceded(Parser.seq(Parser.peek(lit('<=')), Parser.not(iriRef)), lit('<=')).pipe(\n Parser.as<Model.N3Term>(log.isImpliedBy),\n ),\n Parser.alt(word('a'), atKeyword('@a')).pipe(Parser.as<Model.N3Term>(rdf.type)),\n ),\n);\n\n/** A verb, which becomes the predicate (and direction) of the objects after it. */\nconst verb: P<void> = Parser.preceded(\n ws,\n Parser.asVoid<Model.N3Term, Fail, never, string>(\n Parser.alt(\n Parser.tap(fixedVerb, (predicate) => b.verb(predicate, false)),\n Parser.tap(\n Parser.preceded(\n Parser.seq(Parser.peek(lit('<-')), Parser.not(iriRef), lit('<-')),\n Parser.cut(path),\n ),\n (predicate) => b.verb(predicate, true),\n ),\n Parser.tap(\n Parser.preceded(Parser.alt(word('has'), atKeyword('@has')), Parser.cut(path)),\n (predicate) => b.verb(predicate, false),\n ),\n Parser.preceded(\n Parser.alt(word('is'), atKeyword('@is')),\n Parser.cut(\n Parser.terminated(\n path,\n Parser.preceded(ws, Parser.alt(word('of'), atKeyword('@of'))).pipe(\n Parser.expected(\"'of' after 'is ...'\"),\n ),\n ),\n ),\n ).pipe(Parser.tap((predicate) => b.verb(predicate, true))),\n Parser.tap(path, (predicate) => b.verb(predicate, false)),\n ),\n ),\n);\n\nconst objectList: P<unknown> = Parser.separated(\n Parser.tap(path, (object) => b.object(object)),\n sym(','),\n { min: 1 },\n).pipe(Parser.expected('an object'));\n\nconst semicolons = Parser.repeat(sym(';'), { min: 1 });\n\nconst polDef: P<void> = Parser.asVoid(\n Parser.terminated(\n Parser.seq(\n Parser.seq(verb, Parser.cut(objectList)),\n Parser.repeat(\n Parser.preceded(\n semicolons,\n Parser.preceded(Parser.not(endOf('.]}')), Parser.cut(Parser.seq(verb, objectList))),\n ),\n ),\n ),\n Parser.opt(semicolons),\n ),\n);\n\nconst triples: P<void> = Parser.preceded(\n Parser.tap(path, (subject) => b.open(subject)),\n Parser.alt(Parser.preceded(Parser.peek(endOf('.}')), Parser.succeed(undefined)), pol),\n).pipe(Parser.tap(() => void b.close()));\n\n/** The body of `@prefix` / `PREFIX`: `PN_PREFIX? ':' IRIREF`. */\nconst prefixBody: P<void> = Parser.asVoid(\n Parser.seq(\n Parser.preceded(\n ws,\n Parser.terminated(\n Parser.opt(TurtleGrammar.pnPrefix),\n lit(':').pipe(Parser.expected('a prefix name ending in \":\"')),\n ),\n ),\n Parser.preceded(ws, iriRef),\n ).pipe(\n Parser.tap(([prefix, ref]) =>\n b.prefix(\n Option.getOrElse(prefix, () => ''),\n ref,\n ),\n ),\n ),\n);\n\nconst baseBody: P<void> = Parser.asVoid(\n Parser.preceded(ws, iriRef).pipe(\n Parser.tap((ref) => {\n b.base = Option.some(b.iri(ref));\n }),\n ),\n);\n\nconst quantifier = (universal: boolean): P<void> =>\n Parser.alt(\n Parser.preceded(Parser.peek(endOf('.}')), Parser.succeed<ReadonlyArray<IriNode>>([])),\n Parser.separated(Parser.preceded(ws, iri), sym(','), { min: 1 }),\n ).pipe(\n Parser.tap((iris) => b.quantify(universal, iris)),\n Parser.asVoid,\n );\n\n/** `PREFIX` / `BASE` (case-insensitive, no trailing `.`). */\nconst sparqlDirective: P<void> = rule(\n Parser.preceded(\n ws,\n Parser.alt(\n Parser.preceded(\n Parser.terminated(\n Ascii.caseless('PREFIX'),\n Parser.not(Token.oneOf([':.', TurtleGrammar.pnChars])),\n ),\n Parser.cut(prefixBody),\n ),\n Parser.preceded(\n Parser.terminated(\n Ascii.caseless('BASE'),\n Parser.not(Token.oneOf([':.', TurtleGrammar.pnChars])),\n ),\n Parser.cut(baseBody),\n ),\n ),\n ),\n);\n\nconst atDirective: P<void> = rule(\n Parser.alt(\n Parser.preceded(atKeyword('@prefix'), Parser.cut(prefixBody)),\n Parser.preceded(atKeyword('@base'), Parser.cut(baseBody)),\n Parser.preceded(atKeyword('@forAll'), Parser.cut(quantifier(true))),\n Parser.preceded(atKeyword('@forSome'), Parser.cut(quantifier(false))),\n Parser.preceded(\n Parser.peek(atKeyword('@keywords')),\n Parser.cut(\n Parser.location.pipe(\n Parser.tryMap((at) => fail<void>('@keywords is not supported by Notation3', at)),\n ),\n ),\n ),\n ),\n);\n\nconst statement: P<void> = Parser.preceded(ws, Parser.alt(atDirective, triples));\n\n/** Statements, each ended by `.` (optional before the `}` of a formula). */\nconst statements = (inFormula: boolean): P<void> =>\n Parser.asVoid(\n Parser.repeat(\n Parser.preceded(\n Parser.not(inFormula ? endOf('}') : Parser.preceded(ws, Parser.eof)),\n Parser.alt(\n sparqlDirective,\n Parser.cut(\n Parser.terminated(\n statement,\n (inFormula ? Parser.alt(sym('.'), Parser.peek(sym('}'))) : sym('.')).pipe(\n Parser.expected(\"'.'\"),\n ),\n ),\n ),\n ),\n ),\n ),\n );\n\nconst formulaStatements = statements(true);\nconst documentStatements = statements(false);\n\nconst document = Compiler.jit(\n Parser.terminated(documentStatements, Parser.preceded(ws, Parser.eof)),\n);\n\n// -----------------------------------------------------------------------------\n// Builder\n// -----------------------------------------------------------------------------\n\nconst PN_LOCAL_ESC = /\\\\(.)/gu;\n\nconst I18N_DATATYPE = /^([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)_(ltr|rtl)$/;\n\n/** The subject whose statements are being read, with the predicate and direction in force. */\nclass Frame {\n subject: Model.N3Term = rdf.nil;\n predicate: Model.N3Term = rdf.nil;\n inverse = false;\n}\n\n/**\n * What depends on the document so far (prefixes, the base IRI, blank node\n * labels and counters, quantifier scopes, the open formulas and subjects),\n * updated by the grammar's callbacks as it reads, so that statements are\n * made in document order without a syntax tree. An error found here is\n * kept and reported once the grammar has read the whole document, so that a\n * syntax error anywhere comes first.\n */\nclass Builder {\n readonly prefixes = MutableHashMap.empty<string, string>();\n base: Option.Option<string>;\n private readonly bnodePrefix: string;\n private readonly bnodes = MutableHashMap.empty<string, Term.BlankNode>();\n /** The blank node labels written in the document (as keys). */\n private readonly reserved = MutableHashMap.empty<string, boolean>();\n private anonCounter = 0;\n /** Statement collectors, one per open formula (innermost last). */\n private readonly out: Array<Array<Model.Statement>> = [];\n /**\n * Explicit quantifier scopes (legacy `@forAll` / `@forSome`), innermost\n * last, each with the depth of the formula it belongs to: only formulas\n * that quantify something have one, so a document without quantifiers\n * looks nothing up.\n */\n private readonly scopes: Array<\n readonly [depth: number, scope: MutableHashMap.MutableHashMap<string, Model.N3Term>]\n > = [];\n /** How many formulas are open. */\n private depth = 0;\n /**\n * The variables made so far, by name: quick variables (one node per name,\n * so that the copies of a rule compare by identity when a formula removes\n * duplicate statements) and those made for `@forAll`, whose names avoid\n * these.\n */\n private readonly variables = MutableHashMap.empty<string, Term.Variable>();\n /** The subjects being described, innermost last (`depthOfFrames` of them are in use). */\n private readonly frames: Array<Frame> = [];\n private openFrames = 0;\n /** The items of the paths being read, and the directions of their steps, innermost last. */\n readonly paths: Array<Model.N3Term> = [];\n readonly dirs: Array<string> = [];\n /** Where the term being read starts, and (for an IRI reference) ends. */\n at = 0;\n end = 0;\n /** The first error found (none while it is empty). */\n readonly errors: Array<{ readonly message: string; readonly at: number }> = [];\n\n readonly input: string;\n constructor(input: string, options: ParserOptions) {\n this.input = input;\n this.base = options.baseIri;\n this.bnodePrefix = options.blankNodePrefix;\n // Labels written in the document; generated labels avoid them.\n Iterable.forEach(input.matchAll(/_:([^\\s<>\"{}()[\\],;^!]+)/g), ([, label]) => {\n MutableHashMap.set(this.reserved, `${this.bnodePrefix}${label ?? ''}`, true);\n });\n }\n\n /** Keeps the first error, returning a stand-in term so that reading can go on. */\n error(message: string, at: number): Model.N3Term {\n if (Arr.isReadonlyArrayEmpty(this.errors)) this.errors.push({ message, at });\n return rdf.nil;\n }\n\n openFormula(): void {\n this.out.push([]);\n this.depth++;\n }\n\n closeFormula(): Model.Formula {\n if (this.scopes.at(-1)?.[0] === this.depth) this.scopes.pop();\n this.depth--;\n return new Model.Formula(this.out.pop() ?? []);\n }\n\n /** Starts describing `subject` (a statement's subject, or the node of a `[ … ]`). */\n open(subject: Model.N3Term): void {\n const frame = (this.frames[this.openFrames++] ??= new Frame());\n frame.subject = subject;\n frame.predicate = rdf.nil;\n frame.inverse = false;\n }\n\n /** Stops describing the current subject, returning it. */\n close(): Model.N3Term {\n const frame = this.frames[--this.openFrames];\n return frame === undefined ? rdf.nil : frame.subject;\n }\n\n verb(predicate: Model.N3Term, inverse: boolean): void {\n const frame = this.frames[this.openFrames - 1];\n if (frame === undefined) return;\n frame.predicate = predicate;\n frame.inverse = inverse;\n }\n\n /** A statement about the current subject, with the current predicate, of `object`. */\n object(object: Model.N3Term): void {\n const frame = this.frames[this.openFrames - 1];\n if (frame === undefined) return;\n if (frame.inverse) this.emit(object, frame.predicate, frame.subject);\n else this.emit(frame.subject, frame.predicate, object);\n }\n\n /** A `!` or `^` step from the current path's item to a new blank node, which replaces it. */\n step(predicate: Model.N3Term): void {\n const dir = this.dirs.pop();\n const item = this.paths.pop() ?? rdf.nil;\n const node = this.freshBlank();\n if (dir === '!') this.emit(item, predicate, node);\n else this.emit(node, predicate, item);\n this.paths.push(node);\n }\n\n endPath(): Model.N3Term {\n return this.paths.pop() ?? rdf.nil;\n }\n\n prefix(prefix: string, ref: IriNode): void {\n MutableHashMap.set(this.prefixes, prefix, this.iri(ref));\n }\n\n quantify(universal: boolean, iris: ReadonlyArray<IriNode>): void {\n const scope = this.scope();\n iris.forEach((node) => {\n const quantified = this.iri(node);\n MutableHashMap.set(\n scope,\n quantified,\n universal ? this.variableFor(quantified) : this.freshBlank(),\n );\n });\n }\n\n variable(name: string): Term.Variable {\n const known = this.variables.backing.get(name);\n if (known !== undefined) return known;\n const node = new Term.Variable(name);\n MutableHashMap.set(this.variables, name, node);\n return node;\n }\n\n /** A literal: with `language` unless it is `''`, else of `datatype` if there is one. */\n literal(value: string, language: string, datatype: Option.Option<IriNode>): Term.Literal {\n if (language !== '') return Term.literal(value, language);\n if (Option.isNone(datatype)) return Term.literal(value);\n const type = this.iri(datatype.value);\n const dir = type.startsWith(i18n.base)\n ? I18N_DATATYPE.exec(type.slice(i18n.base.length))\n : null;\n if (dir !== null) {\n // The base-direction regex only captures `ltr` or `rtl`.\n return Term.literal(value, {\n language: dir[1] ?? '',\n direction: dir[2] === 'rtl' ? 'rtl' : 'ltr',\n });\n }\n return Term.literal(value, new Term.NamedNode(type));\n }\n\n iri(node: IriNode): string {\n if (Predicate.isTagged(node, 'IriRef')) {\n if (node.escaped && forbiddenInIri.test(node.value)) {\n this.error('Invalid escaped character in IRI', node.at);\n return node.value;\n }\n return this.resolveIri(node.value);\n }\n const ns = this.prefixes.backing.get(node.prefix);\n if (ns !== undefined) return ns + node.local;\n // The empty prefix defaults to `<#>` (the current document), as in cwm.\n if (node.prefix === '') return this.resolveIri('#') + node.local;\n this.error(`Undeclared prefix '${node.prefix}:'`, node.at);\n return node.local;\n }\n\n private resolveIri(value: string): string {\n return Option.isNone(this.base) ? value : Iri.resolve(value, this.base.value);\n }\n\n /** The quantifier scope of the innermost formula, made on first use. */\n private scope(): MutableHashMap.MutableHashMap<string, Model.N3Term> {\n const top = this.scopes.at(-1);\n if (top !== undefined && top[0] === this.depth) return top[1];\n const scope = MutableHashMap.empty<string, Model.N3Term>();\n this.scopes.push([this.depth, scope]);\n return scope;\n }\n\n /**\n * The nodes made so far, by IRI and (for prefixed names) by namespace and\n * local name, so that a name written again is neither concatenated nor\n * hashed anew, and each IRI's key (which formulas deduplicate by) is\n * computed once.\n */\n private readonly iriNodes = MutableHashMap.empty<string, Term.NamedNode>();\n private readonly localNodes = MutableHashMap.empty<\n string,\n Array<readonly [string, Term.NamedNode]>\n >();\n\n /** The term an IRI reference read at `at`…`end` stands for. */\n namedRef(value: string): Model.N3Term {\n if (this.end - this.at - 2 !== value.length && forbiddenInIri.test(value)) {\n return this.error('Invalid escaped character in IRI', this.at);\n }\n return this.scoped(this.iriNodeOf(this.resolveIri(value)));\n }\n\n /** The term a prefixed name read at `at` stands for. */\n namedPName(name: string): Model.N3Term {\n const colon = name.indexOf(':');\n const raw = name.slice(colon + 1);\n // `PN_LOCAL_ESC`s are decoded, as `TurtleGrammar.pnLocal` does\n return this.namedPNameParts(\n name.slice(0, colon),\n raw.includes('\\\\') ? raw.replace(PN_LOCAL_ESC, '$1') : raw,\n );\n }\n\n /** The term of a prefixed name read at `at`, given its prefix and decoded local name. */\n namedPNameParts(prefix: string, local: string): Model.N3Term {\n const ns = this.prefixes.backing.get(prefix);\n if (ns !== undefined) return this.scoped(this.localNode(ns, local));\n return this.named({ _tag: 'PName', prefix, local, at: this.at });\n }\n\n /** The term an IRI as written stands for: its node, or a quantified variable or blank node. */\n named(node: IriNode): Model.N3Term {\n return this.scoped(this.iriNode(node));\n }\n\n /** `named`, or the variable or blank node it is quantified as. */\n private scoped(named: Term.NamedNode): Model.N3Term {\n // Usually no formula quantifies anything, and there is nothing to look up\n if (Arr.isReadonlyArrayEmpty(this.scopes)) return named;\n const scope = this.scopes.findLast(([, quantified]) =>\n MutableHashMap.has(quantified, named.value),\n );\n return scope?.[1].backing.get(named.value) ?? named;\n }\n\n private iriNode(node: IriNode): Term.NamedNode {\n if (Predicate.isTagged(node, 'PName')) {\n const ns = this.prefixes.backing.get(node.prefix);\n if (ns !== undefined) return this.localNode(ns, node.local);\n }\n return this.iriNodeOf(this.iri(node));\n }\n\n private iriNodeOf(value: string): Term.NamedNode {\n const known = this.iriNodes.backing.get(value);\n if (known !== undefined) return known;\n const named = new Term.NamedNode(value);\n MutableHashMap.set(this.iriNodes, value, named);\n return named;\n }\n\n /** The node of `ns` + `local`, by local name and then namespace (a local name rarely has two). */\n private localNode(ns: string, local: string): Term.NamedNode {\n let byNamespace = this.localNodes.backing.get(local);\n if (byNamespace === undefined) {\n byNamespace = [];\n MutableHashMap.set(this.localNodes, local, byNamespace);\n }\n const known = byNamespace.find(([namespace]) => namespace === ns);\n if (known !== undefined) return known[1];\n const named = new Term.NamedNode(ns + local);\n byNamespace.push([ns, named]);\n return named;\n }\n\n private emit(subject: Model.N3Term, predicate: Model.N3Term, object: Model.N3Term): void {\n this.out.at(-1)?.push(new Model.Statement(subject, predicate, object));\n }\n\n freshBlank(): Term.BlankNode {\n const label = this.freshLabel();\n // Usually the first label is free\n return new Term.BlankNode(this.reserved.backing.has(label) ? this.freeLabel() : label);\n }\n\n private freshLabel(): string {\n return `${this.bnodePrefix}b${(this.anonCounter++).toString(36)}`;\n }\n\n /** The next generated label that the document does not use. */\n private freeLabel(): string {\n let label = this.freshLabel();\n loop(() => {\n if (!this.reserved.backing.has(label)) return false;\n label = this.freshLabel();\n return true;\n });\n return label;\n }\n\n labelledBlank(label: string): Term.BlankNode {\n const known = this.bnodes.backing.get(label);\n if (known !== undefined) return known;\n const node = new Term.BlankNode(`${this.bnodePrefix}${label}`);\n MutableHashMap.set(this.bnodes, label, node);\n return node;\n }\n\n private variableFor(quantified: string): Term.Variable {\n const local = /[^#/:]*$/.exec(quantified)?.[0] ?? '';\n const base = /^[A-Za-z_][A-Za-z0-9_]*$/.test(local) ? local : 'v';\n let name = base;\n if (MutableHashMap.has(this.variables, base)) {\n loop((i) => {\n name = `${base}_${i + 1}`;\n return MutableHashMap.has(this.variables, name);\n });\n }\n const node = new Term.Variable(name);\n MutableHashMap.set(this.variables, name, node);\n return node;\n }\n}\n\n/** The builder of the document being parsed (the grammar's callbacks update it). */\nlet b: Builder = new Builder('', { baseIri: Option.none(), blankNodePrefix: '' });\n\n// -----------------------------------------------------------------------------\n// Entry point\n// -----------------------------------------------------------------------------\n\nconst failAt = (input: string, message: string, at: number): never => {\n const end = Math.min(at, input.length);\n // The lines before `at`: the last is the one it is on\n const lines = input.slice(0, end).split('\\n');\n const column = (lines.at(-1) ?? '').length + 1;\n throw new SyntaxFailure(message, lines.length, column);\n};\n\nconst describe = (input: string, at: number): string =>\n at >= input.length ? 'end of input' : `'${String.fromCodePoint(input.codePointAt(at) ?? 0)}'`;\n\n/** @internal */\nexport const parse = (input: string, options: ParserOptions): Model.Document => {\n b = new Builder(input, options);\n b.openFormula();\n const result = Parser.parse(document, input);\n if (Result.isFailure(result)) {\n const error = result.failure;\n if (error.cause !== undefined) return failAt(input, error.cause.message, error.cause.at);\n const found = describe(input, error.offset);\n const expected = error.expected.filter((e) => e !== WHITESPACE);\n const message =\n Arr.isReadonlyArrayEmpty(expected) || expected.length > 3\n ? `Unexpected ${found}`\n : `Expected ${expected.join(' or ')} but found ${found}`;\n return failAt(input, message, error.offset);\n }\n const error = b.errors.at(0);\n if (error !== undefined) return failAt(input, error.message, error.at);\n return {\n formula: b.closeFormula(),\n prefixes: PrefixMap.make(b.prefixes),\n baseIri: Option.getOrUndefined(b.base),\n };\n};\n","/**\n * Pretty-printer for the N3 model.\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Option from 'effect/Option';\nimport * as Iri from '../../Iri.ts';\nimport * as PrefixMap from '../../PrefixMap.ts';\nimport * as Term from '../../Term.ts';\nimport { rdf, xsd } from '../../Vocab.ts';\nimport * as Model from '../Model.ts';\nimport * as Guards from './guards.ts';\nimport { loop } from './loop.ts';\nimport { isPnChars, isPnCharsBase, isPnCharsU } from './parser.ts';\nimport { i18n, log, sameAs } from '../Vocab.ts';\n\n/** @internal */\nexport interface WriterOptions {\n readonly prefixes: PrefixMap.PrefixMap;\n readonly baseIri: Option.Option<string>;\n /** Indentation unit. */\n readonly indent: string;\n}\n\n/** Whether a string is a valid `PN_PREFIX` (or empty). */\nconst isPnPrefix = (s: string): boolean => {\n const cps = Array.from(s, codePoint);\n if (!Arr.isReadonlyArrayNonEmpty(cps)) return true;\n if (!isPnCharsBase(cps[0])) return false;\n if (cps.length > 1 && cps[cps.length - 1] === 0x2e) return false;\n return cps.slice(1).every((c) => c === 0x2e || isPnChars(c));\n};\n\n/** The code point of a character (as `Array.from` splits a string). */\nconst codePoint = (ch: string): number => ch.codePointAt(0) ?? 0;\n\n/** Whether a string is a valid quick variable name (without `?`). */\nconst isVarName = (s: string): boolean => {\n const cps = Array.from(s, codePoint);\n return Arr.isReadonlyArrayNonEmpty(cps) && isPnCharsU(cps[0]) && cps.slice(1).every(isPnChars);\n};\n\nconst BLANK_LABEL = /^[A-Za-z0-9_](?:[\\w.-]*[\\w-])?$/;\nconst INTEGER = /^[+-]?\\d+$/;\nconst DECIMAL = /^[+-]?\\d*\\.\\d+$/;\nconst DOUBLE = /^[+-]?(?:\\d+\\.\\d*|\\.\\d+|\\d+)[eE][+-]?\\d+$/;\n\ninterface BlankInfo {\n refs: number;\n predicate: boolean;\n /** The first formula the blank node occurs in. */\n readonly formula: Model.Formula;\n /** Whether it occurs in another formula (object) too. */\n shared: boolean;\n}\n\n/** The statements of one subject (or predicate), in order. */\ninterface Group {\n readonly first: Model.Statement;\n readonly statements: Array<Model.Statement>;\n}\n\n/** @internal */\nexport const write = (root: Model.Formula, options: WriterOptions): string =>\n new Writer(root, options).run();\n\nclass Writer {\n private readonly prefixes: PrefixMap.PrefixMap;\n private readonly base: Option.Option<string>;\n private readonly unit: string;\n private readonly usedPrefixes = MutableHashSet.empty<string>();\n private readonly blanks = MutableHashMap.empty<string, BlankInfo>();\n private readonly blankLabels = MutableHashMap.empty<string, string>();\n private readonly usedLabels = MutableHashSet.empty<string>();\n private readonly varNames = MutableHashMap.empty<string, string>();\n /** Subject groups of inlinable blank nodes, per formula. */\n private readonly inlineGroups = MutableHashMap.empty<string, Array<Model.Statement>>();\n private readonly inlinable = MutableHashSet.empty<string>();\n private readonly emitted = MutableHashSet.empty<string>();\n\n private readonly root: Model.Formula;\n constructor(root: Model.Formula, options: WriterOptions) {\n this.root = root;\n this.prefixes = options.prefixes;\n this.base = options.baseIri;\n this.unit = options.indent;\n }\n\n run(): string {\n this.analyse(this.root);\n MutableHashMap.forEach(this.blanks, (info, label) => {\n if (!info.predicate && info.refs <= 1 && !info.shared) {\n MutableHashSet.add(this.inlinable, label);\n }\n });\n const body = this.formulaBody(this.root, 0);\n const base = Option.match(this.base, {\n onNone: () => '',\n onSome: (iri) => `@base <${Term.escapeIri(iri)}> .\\n`,\n });\n const header = Arr.reduce(\n Arr.fromIterable(this.prefixes.prefixes),\n base,\n (acc, [prefix, ns]) =>\n MutableHashSet.has(this.usedPrefixes, prefix)\n ? `${acc}@prefix ${prefix}: <${Term.escapeIri(ns)}> .\\n`\n : acc,\n );\n return header === '' ? body : `${header}\\n${body}`;\n }\n\n // ---------------------------------------------------------------------------\n // Analysis\n // ---------------------------------------------------------------------------\n\n /** The blank node's information, made (in `f`) on first sight. */\n private info(label: string, f: Model.Formula): BlankInfo {\n const known = this.blanks.backing.get(label);\n if (known !== undefined) {\n if (known.formula !== f) known.shared = true;\n return known;\n }\n const info: BlankInfo = { refs: 0, predicate: false, formula: f, shared: false };\n MutableHashMap.set(this.blanks, label, info);\n return info;\n }\n\n private analyse(f: Model.Formula): void {\n f.statements.forEach((s) => {\n this.analyseTerm(s.subject, f, 'subject');\n this.analyseTerm(s.predicate, f, 'predicate');\n this.analyseTerm(s.object, f, 'object');\n });\n }\n\n // Plain refinements rather than `Match`: `analyseTerm` runs for every term written.\n private analyseTerm(t: Model.N3Term, f: Model.Formula, position: string): void {\n if (Guards.isBlankNode(t)) {\n const info = this.info(t.value, f);\n if (position === 'predicate') info.predicate = true;\n else if (position !== 'subject') info.refs++;\n } else if (t instanceof Model.Collection) {\n t.items.forEach((item) => this.analyseTerm(item, f, 'item'));\n } else if (t instanceof Model.Formula) {\n this.analyse(t);\n }\n }\n\n /** Whether `subject` is an inlinable blank node. */\n private isInlinable(subject: Model.N3Term): subject is Term.BlankNode {\n return Guards.isBlankNode(subject) && MutableHashSet.has(this.inlinable, subject.value);\n }\n\n // ---------------------------------------------------------------------------\n // Statements\n // ---------------------------------------------------------------------------\n\n private formulaBody(f: Model.Formula, depth: number): string {\n const groups = MutableHashMap.empty<string, Group>();\n f.statements.forEach((s) => {\n const k = s.subject.key;\n let g = groups.backing.get(k);\n if (g === undefined) {\n g = { first: s, statements: [s] };\n MutableHashMap.set(groups, k, g);\n } else g.statements.push(s);\n if (this.isInlinable(s.subject)) {\n MutableHashMap.set(this.inlineGroups, s.subject.value, g.statements);\n }\n });\n const pad = this.unit.repeat(depth);\n const lines: Array<string> = [];\n const render = (g: Group) => {\n const subject = g.first.subject;\n if (this.isInlinable(subject)) {\n MutableHashSet.add(this.emitted, subject.value);\n lines.push(\n `${pad}[ ${this.predicateObjects(g.statements, depth + 1, ` ;\\n${pad}${this.unit}`)} ] .`,\n );\n return;\n }\n const subj = this.term(subject, depth);\n lines.push(\n `${pad}${subj} ${this.predicateObjects(g.statements, depth, ` ;\\n${pad}${this.unit}`)} .`,\n );\n };\n const deferred: Array<Group> = [];\n MutableHashMap.forEach(groups, (g) => {\n const subject = g.first.subject;\n if (this.isInlinable(subject) && this.blanks.backing.get(subject.value)?.refs === 1) {\n deferred.push(g);\n return;\n }\n render(g);\n });\n // Inlinable blank nodes that were never reached (reference cycles) are\n // written with labels.\n deferred.forEach((g) => {\n const subject = g.first.subject;\n if (!Guards.isBlankNode(subject) || MutableHashSet.has(this.emitted, subject.value)) return;\n MutableHashSet.remove(this.inlinable, subject.value);\n render(g);\n });\n return lines.join('\\n') + (Arr.isReadonlyArrayNonEmpty(lines) ? '\\n' : '');\n }\n\n private predicateObjects(\n statements: ReadonlyArray<Model.Statement>,\n depth: number,\n separator: string,\n ): string {\n const byPredicate = MutableHashMap.empty<\n string,\n { predicate: Model.N3Term; objects: Array<Model.N3Term> }\n >();\n statements.forEach((s) => {\n const k = s.predicate.key;\n const e = byPredicate.backing.get(k);\n if (e === undefined) {\n MutableHashMap.set(byPredicate, k, { predicate: s.predicate, objects: [s.object] });\n } else e.objects.push(s.object);\n });\n return Arr.map(\n Arr.fromIterable(MutableHashMap.values(byPredicate)),\n ({ predicate, objects }) =>\n `${this.verb(predicate, depth)} ${objects.map((o) => this.term(o, depth)).join(', ')}`,\n ).join(separator);\n }\n\n private verb(t: Model.N3Term, depth: number): string {\n if (Guards.isNamedNode(t)) {\n if (t.value === rdf.type.value) return 'a';\n if (t.value === log.implies.value) return '=>';\n if (t.value === log.isImpliedBy.value) return '<=';\n if (t.value === sameAs.value) return '=';\n }\n return this.term(t, depth);\n }\n\n // ---------------------------------------------------------------------------\n // Terms\n // ---------------------------------------------------------------------------\n\n // Plain refinements rather than `Match`: `term` runs for every term written.\n private term(t: Model.N3Term, depth: number): string {\n if (Guards.isNamedNode(t)) return this.iri(t.value);\n if (Guards.isBlankNode(t)) return this.blank(t, depth);\n if (Guards.isLiteral(t)) return this.literal(t);\n if (Guards.isVariable(t)) return this.variable(t);\n if (t instanceof Model.Collection) {\n return Arr.isReadonlyArrayEmpty(t.items)\n ? '()'\n : `( ${t.items.map((i) => this.term(i, depth)).join(' ')} )`;\n }\n return this.formula(t, depth);\n }\n\n private formula(f: Model.Formula, depth: number): string {\n if (Arr.isReadonlyArrayEmpty(f.statements)) return '{}';\n const inner = this.formulaBody(f, depth + 1);\n if (f.statements.length === 1) {\n const line = inner.trim();\n if (!line.includes('\\n') && line.length <= 80) return `{ ${line.replace(/ \\.$/, '')} }`;\n }\n return `{\\n${inner}${this.unit.repeat(depth)}}`;\n }\n\n private blank(b: Term.BlankNode, depth: number): string {\n if (MutableHashSet.has(this.inlinable, b.value) && !MutableHashSet.has(this.emitted, b.value)) {\n MutableHashSet.add(this.emitted, b.value);\n const g = this.inlineGroups.backing.get(b.value);\n if (g === undefined || Arr.isReadonlyArrayEmpty(g)) return '[]';\n const pad = this.unit.repeat(depth + 1);\n return `[ ${this.predicateObjects(g, depth + 1, ` ;\\n${pad}`)} ]`;\n }\n const known = this.blankLabels.backing.get(b.value);\n if (known !== undefined) return `_:${known}`;\n let label = BLANK_LABEL.test(b.value) ? b.value : `b${MutableHashMap.size(this.blankLabels)}`;\n loop(() => {\n if (!MutableHashSet.has(this.usedLabels, label)) return false;\n label = `${label}_`;\n return true;\n });\n MutableHashSet.add(this.usedLabels, label);\n MutableHashMap.set(this.blankLabels, b.value, label);\n return `_:${label}`;\n }\n\n private variable(v: Term.Variable): string {\n const known = this.varNames.backing.get(v.value);\n if (known !== undefined) return `?${known}`;\n const name = isVarName(v.value) ? v.value : `v${MutableHashMap.size(this.varNames)}`;\n MutableHashMap.set(this.varNames, v.value, name);\n return `?${name}`;\n }\n\n private iri(value: string): string {\n const compact = PrefixMap.compact(this.prefixes, value);\n if (Option.isSome(compact) && isPnPrefix(compact.value[0])) {\n const [prefix, local] = compact.value;\n if (!local.endsWith('.')) {\n MutableHashSet.add(this.usedPrefixes, prefix);\n return `${prefix}:${local}`;\n }\n }\n if (Option.isSome(this.base)) {\n const rel = Iri.relativize(value, this.base.value);\n if (Option.isSome(rel)) return `<${Term.escapeIri(rel.value)}>`;\n }\n return `<${Term.escapeIri(value)}>`;\n }\n\n private literal(l: Term.Literal): string {\n const dt = l.datatype.value;\n if (l.language === '') {\n if (dt === xsd.integer.value && INTEGER.test(l.value)) return l.value;\n if (dt === xsd.decimal.value && DECIMAL.test(l.value)) return l.value;\n if (dt === xsd.double.value && DOUBLE.test(l.value)) return l.value;\n if (dt === xsd.boolean.value && (l.value === 'true' || l.value === 'false')) return l.value;\n }\n const quoted = this.quote(l.value);\n if (l.language !== '') {\n return l.direction === undefined\n ? `${quoted}@${l.language}`\n : `${quoted}^^${this.iri(`${i18n.base}${l.language}_${l.direction}`)}`;\n }\n if (dt === Term.XSD_STRING) return quoted;\n return `${quoted}^^${this.iri(dt)}`;\n }\n\n private quote(value: string): string {\n if (value.includes('\\n') && !value.endsWith('\"')) {\n // eslint-disable-next-line no-control-regex\n const body = value.replace(/[\\\\\"\\u0000-\\u0009\\u000b-\\u001f\\u007f]/g, (ch) =>\n ch === '\\\\' || ch === '\"' ? `\\\\${ch}` : Term.escapeString(ch),\n );\n return `\"\"\"${body}\"\"\"`;\n }\n return `\"${Term.escapeString(value)}\"`;\n }\n}\n","/**\n * Notation3 (N3) parsing and serialisation.\n *\n * - `parse` parses an N3 document into the full N3 model (`Model.Document`),\n * including formulas, variables, collections and literals in any position.\n * - `serializeDocument` pretty-prints the N3 model.\n * - `parser`, `serializer` and `codec` implement the core\n * `Serialization.Parser` / `Serializer` / `Codec` interfaces over RDF\n * `Dataset`s, using the mapping documented in the `Mapping` module:\n * formulas become named graphs identified by blank nodes, and collections\n * become `rdf:first`/`rdf:rest` lists. Documents outside the RDF-compatible\n * subset (variables, literal subjects, non-IRI predicates) fail with\n * `RdfParseError`.\n *\n * Syntax notes (current W3C CG specification and test suite):\n *\n * - Supports `@prefix`/`@base`, SPARQL `PREFIX`/`BASE`, formulas, quick\n * variables, paths (`!`, `^`), `a`, `has`, `is … of`, `<-`, `=`, `=>`,\n * `<=`, IRI property lists (`[ id <iri> … ]`), and the `@`-prefixed\n * keyword forms. The legacy explicit quantifiers `@forAll` (mapped to\n * variables) and `@forSome` (mapped to fresh blank nodes) are accepted;\n * `@keywords` is rejected.\n * - `<=` is `log:isImpliedBy`; `=` is `owl:sameAs`.\n * - An empty formula `{}` denotes the literal `true`.\n * - The empty prefix `:` defaults to `<#>` (relative to the base) when not\n * declared.\n * - Blank node labels are scoped to the whole document.\n * - `\"…\"^^i18n:{lang}_{dir}` is read as a directional language-tagged\n * string.\n *\n * @since 0.1.0\n */\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport * as PrefixMap from '../PrefixMap.ts';\nimport * as Serialization from '../Serialization.ts';\nimport type * as Term from '../Term.ts';\nimport * as Parser from './internal/parser.ts';\nimport * as Writer from './internal/writer.ts';\nimport * as Mapping from './Mapping.ts';\nimport * as Model from './Model.ts';\n\n/**\n * The N3 format descriptor (`text/n3`, `.n3`).\n *\n * N3 can only represent named graphs that are named by blank nodes used as\n * terms (formulas), so `datasets` is `false`.\n *\n * @since 0.1.0\n * @category formats\n */\nexport const format: Serialization.Format = Serialization.makeFormat({\n name: 'N3',\n mediaType: 'text/n3',\n mediaTypes: ['text/n3', 'text/rdf+n3', 'application/n3'],\n extensions: ['n3'],\n datasets: false,\n});\n\n// Spans are named `N3.parse`, `N3.serialize`.\nconst trace: Serialization.SpanTarget = { module: 'N3', format };\n\n/**\n * Options for parsing N3.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ParseOptions extends Serialization.ParseOptions {}\n\nconst runParser = (\n input: string,\n options?: ParseOptions,\n): Effect.Effect<Model.Document, Serialization.RdfParseError> =>\n Effect.sync(() =>\n Parser.parse(input, {\n baseIri: Option.fromUndefinedOr(options?.baseIri),\n blankNodePrefix: options?.blankNodePrefix ?? Serialization.freshBlankNodePrefix(),\n }),\n ).pipe(\n Effect.catchDefect((e) =>\n e instanceof Parser.SyntaxFailure\n ? Effect.fail(\n new Serialization.RdfParseError({\n format: format.name,\n message: e.message,\n line: e.line,\n column: e.column,\n }),\n )\n : Effect.die(e),\n ),\n );\n\n/**\n * Parses an N3 document into the full N3 model.\n *\n * @example\n * ```ts\n * import { Effect } from 'effect'\n * import { N3 } from '@thomasfosterau/effect-rdf/n3'\n *\n * const doc = Effect.runSync(N3.parse('@prefix : <http://example.org/> . { ?x a :Man } => { ?x a :Mortal } .'))\n * doc.formula.statements.length // 1\n * ```\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse: (\n input: string,\n options?: ParseOptions,\n) => Effect.Effect<Model.Document, Serialization.RdfParseError> = Effect.fn('N3.parse')(function* (\n input: string,\n options?: ParseOptions,\n) {\n yield* Effect.annotateCurrentSpan({\n 'rdf.format': format.name,\n 'rdf.media_type': format.mediaType,\n 'rdf.input.length': input.length,\n });\n const doc = yield* runParser(input, options);\n yield* Effect.annotateCurrentSpan('n3.statements', doc.formula.size);\n return doc;\n});\n\n/**\n * Parses an N3 document in the RDF-compatible subset into a core dataset\n * (see `Mapping.toDataset`).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseDataset = (\n input: string,\n options?: ParseOptions,\n): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>\n Effect.flatMap(runParser(input, options), (doc) =>\n Effect.suspend(() => {\n const prefix = options?.blankNodePrefix ?? Serialization.freshBlankNodePrefix();\n return Mapping.toDataset(doc, { blankNodePrefix: prefix }).pipe(\n Effect.mapError(\n (e) => new Serialization.RdfParseError({ format: format.name, message: e.message }),\n ),\n Effect.map((dataset): Serialization.ParseResult => ({\n dataset,\n prefixes: doc.prefixes,\n baseIri: doc.baseIri,\n })),\n );\n }),\n ).pipe(Serialization.withParseSpan(trace, input, 'parseDataset'));\n\n/**\n * The N3 `Serialization.Parser`, producing core datasets.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parser: Serialization.Parser<ParseOptions> = Serialization.makeParser({\n format,\n parse: parseDataset,\n});\n\n/**\n * Options for serialising N3.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface SerializeOptions extends Serialization.SerializeOptions {\n /** Indentation unit for nested formulas and statements (default four spaces). */\n readonly indent?: string | undefined;\n}\n\n/**\n * Serialises an N3 formula or document. Prefixes from the options (or, for\n * a document, the document's own prefixes) are used to abbreviate IRIs, and\n * only the prefixes actually used are declared.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializeDocument = (\n self: Model.Formula | Model.Document,\n options?: SerializeOptions,\n): string => {\n const isFormula = Model.isFormula(self);\n return Writer.write(isFormula ? self : self.formula, {\n prefixes: options?.prefixes ?? (isFormula ? PrefixMap.empty : self.prefixes),\n baseIri: Option.fromUndefinedOr(options?.baseIri ?? (isFormula ? undefined : self.baseIri)),\n indent: options?.indent ?? ' ',\n });\n};\n\n/**\n * Serialises RDF quads as N3. Graphs named by blank nodes that are used as\n * terms are written as nested formulas, and well-formed RDF lists as\n * collections; other named graphs cannot be represented and fail with\n * `RdfSerializeError`.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serialize = (\n quads: Iterable<Term.Quad>,\n options?: SerializeOptions,\n): Effect.Effect<string, Serialization.RdfSerializeError> =>\n Mapping.fromDataset(quads).pipe(\n Effect.map((f) => serializeDocument(f, options)),\n Effect.mapError(\n (e) => new Serialization.RdfSerializeError({ format: format.name, message: e.message }),\n ),\n Serialization.withSerializeSpan(trace),\n );\n\n/**\n * The N3 `Serialization.Serializer` for core datasets.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({\n format,\n serialize,\n});\n\n/**\n * The N3 `Serialization.Codec` (parser + serializer over core datasets).\n *\n * @since 0.1.0\n * @category codecs\n */\nexport const codec: Serialization.Codec<ParseOptions, SerializeOptions> = Serialization.makeCodec(\n parser,\n serializer,\n);\n"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { _ as Quad } from "./Term-B_4ezyXq.mjs";
2
+ import { c as Parser, i as Format, l as RdfParseError, m as Serializer, o as ParseOptions$1, p as SerializeOptions$1, r as Codec, s as ParseResult, u as RdfSerializeError } from "./Serialization-Df8iVauT.mjs";
3
+ import { i as Formula, r as Document } from "./Model-DaMmxurZ.mjs";
4
+ import * as Effect from "effect/Effect";
5
+ declare namespace N3_d_exports {
6
+ export { ParseOptions, SerializeOptions, codec, format, parse, parseDataset, parser, serialize, serializeDocument, serializer };
7
+ }
8
+ /**
9
+ * The N3 format descriptor (`text/n3`, `.n3`).
10
+ *
11
+ * N3 can only represent named graphs that are named by blank nodes used as
12
+ * terms (formulas), so `datasets` is `false`.
13
+ *
14
+ * @since 0.1.0
15
+ * @category formats
16
+ */
17
+ declare const format: Format;
18
+ /**
19
+ * Options for parsing N3.
20
+ *
21
+ * @since 0.1.0
22
+ * @category models
23
+ */
24
+ interface ParseOptions extends ParseOptions$1 {}
25
+ /**
26
+ * Parses an N3 document into the full N3 model.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { Effect } from 'effect'
31
+ * import { N3 } from '@thomasfosterau/effect-rdf/n3'
32
+ *
33
+ * const doc = Effect.runSync(N3.parse('@prefix : <http://example.org/> . { ?x a :Man } => { ?x a :Mortal } .'))
34
+ * doc.formula.statements.length // 1
35
+ * ```
36
+ *
37
+ * @since 0.1.0
38
+ * @category parsing
39
+ */
40
+ declare const parse: (input: string, options?: ParseOptions) => Effect.Effect<Document, RdfParseError>;
41
+ /**
42
+ * Parses an N3 document in the RDF-compatible subset into a core dataset
43
+ * (see `Mapping.toDataset`).
44
+ *
45
+ * @since 0.1.0
46
+ * @category parsing
47
+ */
48
+ declare const parseDataset: (input: string, options?: ParseOptions) => Effect.Effect<ParseResult, RdfParseError>;
49
+ /**
50
+ * The N3 `Serialization.Parser`, producing core datasets.
51
+ *
52
+ * @since 0.1.0
53
+ * @category parsing
54
+ */
55
+ declare const parser: Parser<ParseOptions>;
56
+ /**
57
+ * Options for serialising N3.
58
+ *
59
+ * @since 0.1.0
60
+ * @category models
61
+ */
62
+ interface SerializeOptions extends SerializeOptions$1 {
63
+ /** Indentation unit for nested formulas and statements (default four spaces). */
64
+ readonly indent?: string | undefined;
65
+ }
66
+ /**
67
+ * Serialises an N3 formula or document. Prefixes from the options (or, for
68
+ * a document, the document's own prefixes) are used to abbreviate IRIs, and
69
+ * only the prefixes actually used are declared.
70
+ *
71
+ * @since 0.1.0
72
+ * @category serializing
73
+ */
74
+ declare const serializeDocument: (self: Formula | Document, options?: SerializeOptions) => string;
75
+ /**
76
+ * Serialises RDF quads as N3. Graphs named by blank nodes that are used as
77
+ * terms are written as nested formulas, and well-formed RDF lists as
78
+ * collections; other named graphs cannot be represented and fail with
79
+ * `RdfSerializeError`.
80
+ *
81
+ * @since 0.1.0
82
+ * @category serializing
83
+ */
84
+ declare const serialize: (quads: Iterable<Quad>, options?: SerializeOptions) => Effect.Effect<string, RdfSerializeError>;
85
+ /**
86
+ * The N3 `Serialization.Serializer` for core datasets.
87
+ *
88
+ * @since 0.1.0
89
+ * @category serializing
90
+ */
91
+ declare const serializer: Serializer<SerializeOptions>;
92
+ /**
93
+ * The N3 `Serialization.Codec` (parser + serializer over core datasets).
94
+ *
95
+ * @since 0.1.0
96
+ * @category codecs
97
+ */
98
+ declare const codec: Codec<ParseOptions, SerializeOptions>;
99
+ export { format as a, parser as c, serializer as d, codec as i, serialize as l, ParseOptions as n, parse as o, SerializeOptions as r, parseDataset as s, N3_d_exports as t, serializeDocument as u };
100
+ //# sourceMappingURL=N3-DSLnonDn.d.mts.map
@@ -0,0 +1,117 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { c as makeCodec, d as makeSerializer, l as makeFormat, u as makeParser } from "./Serialization-DP9H5bYQ.mjs";
3
+ import { a as serializeStream$1, i as serialize$1, n as parseQuads$1, r as parseStream$1, t as parse$1 } from "./codec-QNo7IdJF.mjs";
4
+ // src/ntriples/NQuads.ts
5
+ /**
6
+ * RDF 1.2 N-Quads: a line-based, plain-text format for RDF datasets.
7
+ *
8
+ * The parser is strict and streaming (see `NTriples`); the serializer emits
9
+ * canonical N-Quads.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { Effect } from 'effect'
14
+ * import { NQuads } from '@thomasfosterau/effect-rdf/ntriples'
15
+ *
16
+ * const program = Effect.gen(function* () {
17
+ * const { dataset } = yield* NQuads.parse('<http://ex/s> <http://ex/p> <http://ex/o> <http://ex/g> .\n')
18
+ * return yield* NQuads.serialize(dataset, { sort: true })
19
+ * })
20
+ * ```
21
+ *
22
+ * @since 0.1.0
23
+ */
24
+ var NQuads_exports = /* @__PURE__ */ __exportAll({
25
+ codec: () => codec,
26
+ format: () => format,
27
+ parse: () => parse,
28
+ parseQuads: () => parseQuads,
29
+ parseStream: () => parseStream,
30
+ parser: () => parser,
31
+ serialize: () => serialize,
32
+ serializeStream: () => serializeStream,
33
+ serializer: () => serializer
34
+ });
35
+ /**
36
+ * @since 0.1.0
37
+ * @category formats
38
+ */
39
+ const format = makeFormat({
40
+ name: "N-Quads",
41
+ mediaType: "application/n-quads",
42
+ extensions: ["nq"],
43
+ datasets: true
44
+ });
45
+ const syntax = {
46
+ name: "N-Quads",
47
+ quads: true,
48
+ trace: {
49
+ module: "NQuads",
50
+ format
51
+ }
52
+ };
53
+ /**
54
+ * Parses an N-Quads document. Statements without a graph label are placed
55
+ * in `options.graph` (the default graph when omitted).
56
+ *
57
+ * @since 0.1.0
58
+ * @category parsing
59
+ */
60
+ const parse = (input, options) => parse$1(syntax, input, options);
61
+ /**
62
+ * Parses an N-Quads document into quads in document order (duplicates are
63
+ * kept).
64
+ *
65
+ * @since 0.1.0
66
+ * @category parsing
67
+ */
68
+ const parseQuads = (input, options) => parseQuads$1(syntax, input, options);
69
+ /**
70
+ * Parses a stream of text chunks incrementally, line by line. Chunk
71
+ * boundaries may fall anywhere.
72
+ *
73
+ * @since 0.1.0
74
+ * @category parsing
75
+ */
76
+ const parseStream = parseStream$1(syntax);
77
+ /**
78
+ * Serialises quads as canonical N-Quads. Fails for triple terms in the
79
+ * subject position.
80
+ *
81
+ * @since 0.1.0
82
+ * @category serializing
83
+ */
84
+ const serialize = (quads, options) => serialize$1(syntax, quads, options);
85
+ /**
86
+ * Serialises a stream of quads incrementally as canonical N-Quads.
87
+ *
88
+ * @since 0.1.0
89
+ * @category serializing
90
+ */
91
+ const serializeStream = serializeStream$1(syntax);
92
+ /**
93
+ * @since 0.1.0
94
+ * @category parsing
95
+ */
96
+ const parser = makeParser({
97
+ format,
98
+ parse,
99
+ parseStream
100
+ });
101
+ /**
102
+ * @since 0.1.0
103
+ * @category serializing
104
+ */
105
+ const serializer = makeSerializer({
106
+ format,
107
+ serialize,
108
+ serializeStream
109
+ });
110
+ /**
111
+ * @since 0.1.0
112
+ * @category codecs
113
+ */
114
+ const codec = makeCodec(parser, serializer);
115
+ export { parseQuads as a, serialize as c, parse as i, serializeStream as l, codec as n, parseStream as o, format as r, parser as s, NQuads_exports as t, serializer as u };
116
+
117
+ //# sourceMappingURL=NQuads-C1VBOJ3-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NQuads-C1VBOJ3-.mjs","names":["Serialization.makeFormat","internal.parse","internal.parseQuads","internal.parseStream","internal.serialize","internal.serializeStream","Serialization.makeParser","Serialization.makeSerializer","Serialization.makeCodec"],"sources":["../src/ntriples/NQuads.ts"],"sourcesContent":["/**\n * RDF 1.2 N-Quads: a line-based, plain-text format for RDF datasets.\n *\n * The parser is strict and streaming (see `NTriples`); the serializer emits\n * canonical N-Quads.\n *\n * @example\n * ```ts\n * import { Effect } from 'effect'\n * import { NQuads } from '@thomasfosterau/effect-rdf/ntriples'\n *\n * const program = Effect.gen(function* () {\n * const { dataset } = yield* NQuads.parse('<http://ex/s> <http://ex/p> <http://ex/o> <http://ex/g> .\\n')\n * return yield* NQuads.serialize(dataset, { sort: true })\n * })\n * ```\n *\n * @since 0.1.0\n */\nimport * as Serialization from '../Serialization.ts';\nimport type * as Term from '../Term.ts';\nimport type * as Effect from 'effect/Effect';\nimport type * as Stream from 'effect/Stream';\nimport * as internal from './internal/codec.ts';\n\n/**\n * Options for the N-Quads serializer.\n *\n * @since 0.1.0\n * @category models\n */\nexport type SerializeOptions = internal.SerializeOptions;\n\n/**\n * @since 0.1.0\n * @category formats\n */\nexport const format: Serialization.Format = Serialization.makeFormat({\n name: 'N-Quads',\n mediaType: 'application/n-quads',\n extensions: ['nq'],\n datasets: true,\n});\n\n// The span names are `NQuads.parse`, `NQuads.serialize`, …\nconst syntax: internal.Syntax = {\n name: 'N-Quads',\n quads: true,\n trace: { module: 'NQuads', format },\n};\n\n/**\n * Parses an N-Quads document. Statements without a graph label are placed\n * in `options.graph` (the default graph when omitted).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>\n internal.parse(syntax, input, options);\n\n/**\n * Parses an N-Quads document into quads in document order (duplicates are\n * kept).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseQuads = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<ReadonlyArray<Term.Quad>, Serialization.RdfParseError> =>\n internal.parseQuads(syntax, input, options);\n\n/**\n * Parses a stream of text chunks incrementally, line by line. Chunk\n * boundaries may fall anywhere.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseStream: <E, R>(\n input: Stream.Stream<string, E, R>,\n options?: Serialization.ParseOptions,\n) => Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> = internal.parseStream(syntax);\n\n/**\n * Serialises quads as canonical N-Quads. Fails for triple terms in the\n * subject position.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serialize = (\n quads: Iterable<Term.Quad>,\n options?: SerializeOptions,\n): Effect.Effect<string, Serialization.RdfSerializeError> =>\n internal.serialize(syntax, quads, options);\n\n/**\n * Serialises a stream of quads incrementally as canonical N-Quads.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializeStream: <E, R>(\n quads: Stream.Stream<Term.Quad, E, R>,\n options?: SerializeOptions,\n) => Stream.Stream<string, Serialization.RdfSerializeError | E, R> =\n internal.serializeStream(syntax);\n\n/**\n * @since 0.1.0\n * @category parsing\n */\nexport const parser: Serialization.Parser = Serialization.makeParser({\n format,\n parse,\n parseStream,\n});\n\n/**\n * @since 0.1.0\n * @category serializing\n */\nexport const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({\n format,\n serialize,\n serializeStream,\n});\n\n/**\n * @since 0.1.0\n * @category codecs\n */\nexport const codec: Serialization.Codec<Serialization.ParseOptions, SerializeOptions> =\n Serialization.makeCodec(parser, serializer);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,SAA+BA,WAAyB;CACnE,MAAM;CACN,WAAW;CACX,YAAY,CAAC,IAAI;CACjB,UAAU;AACZ,CAAC;AAGD,MAAM,SAA0B;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;EAAE,QAAQ;EAAU;CAAO;AACpC;;;;;;;;AASA,MAAa,SACX,OACA,YAEAC,QAAe,QAAQ,OAAO,OAAO;;;;;;;;AASvC,MAAa,cACX,OACA,YAEAC,aAAoB,QAAQ,OAAO,OAAO;;;;;;;;AAS5C,MAAa,cAGuDC,cAAqB,MAAM;;;;;;;;AAS/F,MAAa,aACX,OACA,YAEAC,YAAmB,QAAQ,OAAO,OAAO;;;;;;;AAQ3C,MAAa,kBAIXC,kBAAyB,MAAM;;;;;AAMjC,MAAa,SAA+BC,WAAyB;CACnE;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,aAAyDC,eAA6B;CACjG;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,QACXC,UAAwB,QAAQ,UAAU"}
@@ -0,0 +1,76 @@
1
+ import { _ as Quad } from "./Term-B_4ezyXq.mjs";
2
+ import { c as Parser, i as Format, l as RdfParseError, m as Serializer, o as ParseOptions, r as Codec, s as ParseResult, u as RdfSerializeError } from "./Serialization-Df8iVauT.mjs";
3
+ import { t as SerializeOptions$1 } from "./codec-Lb2T96rv.mjs";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Stream from "effect/Stream";
6
+ declare namespace NQuads_d_exports {
7
+ export { SerializeOptions, codec, format, parse, parseQuads, parseStream, parser, serialize, serializeStream, serializer };
8
+ }
9
+ /**
10
+ * Options for the N-Quads serializer.
11
+ *
12
+ * @since 0.1.0
13
+ * @category models
14
+ */
15
+ type SerializeOptions = SerializeOptions$1;
16
+ /**
17
+ * @since 0.1.0
18
+ * @category formats
19
+ */
20
+ declare const format: Format;
21
+ /**
22
+ * Parses an N-Quads document. Statements without a graph label are placed
23
+ * in `options.graph` (the default graph when omitted).
24
+ *
25
+ * @since 0.1.0
26
+ * @category parsing
27
+ */
28
+ declare const parse: (input: string, options?: ParseOptions) => Effect.Effect<ParseResult, RdfParseError>;
29
+ /**
30
+ * Parses an N-Quads document into quads in document order (duplicates are
31
+ * kept).
32
+ *
33
+ * @since 0.1.0
34
+ * @category parsing
35
+ */
36
+ declare const parseQuads: (input: string, options?: ParseOptions) => Effect.Effect<ReadonlyArray<Quad>, RdfParseError>;
37
+ /**
38
+ * Parses a stream of text chunks incrementally, line by line. Chunk
39
+ * boundaries may fall anywhere.
40
+ *
41
+ * @since 0.1.0
42
+ * @category parsing
43
+ */
44
+ declare const parseStream: <E, R>(input: Stream.Stream<string, E, R>, options?: ParseOptions) => Stream.Stream<Quad, RdfParseError | E, R>;
45
+ /**
46
+ * Serialises quads as canonical N-Quads. Fails for triple terms in the
47
+ * subject position.
48
+ *
49
+ * @since 0.1.0
50
+ * @category serializing
51
+ */
52
+ declare const serialize: (quads: Iterable<Quad>, options?: SerializeOptions) => Effect.Effect<string, RdfSerializeError>;
53
+ /**
54
+ * Serialises a stream of quads incrementally as canonical N-Quads.
55
+ *
56
+ * @since 0.1.0
57
+ * @category serializing
58
+ */
59
+ declare const serializeStream: <E, R>(quads: Stream.Stream<Quad, E, R>, options?: SerializeOptions) => Stream.Stream<string, RdfSerializeError | E, R>;
60
+ /**
61
+ * @since 0.1.0
62
+ * @category parsing
63
+ */
64
+ declare const parser: Parser;
65
+ /**
66
+ * @since 0.1.0
67
+ * @category serializing
68
+ */
69
+ declare const serializer: Serializer<SerializeOptions>;
70
+ /**
71
+ * @since 0.1.0
72
+ * @category codecs
73
+ */
74
+ declare const codec: Codec<ParseOptions, SerializeOptions>;
75
+ export { parse as a, parser as c, serializer as d, format as i, serialize as l, SerializeOptions as n, parseQuads as o, codec as r, parseStream as s, NQuads_d_exports as t, serializeStream as u };
76
+ //# sourceMappingURL=NQuads-FjFZikFg.d.mts.map
@@ -0,0 +1,120 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { c as makeCodec, d as makeSerializer, l as makeFormat, u as makeParser } from "./Serialization-DP9H5bYQ.mjs";
3
+ import { a as serializeStream$1, i as serialize$1, n as parseQuads$1, r as parseStream$1, t as parse$1 } from "./codec-QNo7IdJF.mjs";
4
+ // src/ntriples/NTriples.ts
5
+ /**
6
+ * RDF 1.2 N-Triples: a line-based, plain-text format for RDF graphs.
7
+ *
8
+ * The parser is strict (absolute IRIs only, validated escapes, language tags
9
+ * and base directions, triple terms `<<( s p o )>>` in object position,
10
+ * `VERSION` directives) and streaming: `parseStream` consumes text chunks
11
+ * line by line, so arbitrarily large documents are never buffered. The
12
+ * serializer emits canonical N-Triples.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { Effect } from 'effect'
17
+ * import { NTriples } from '@thomasfosterau/effect-rdf/ntriples'
18
+ *
19
+ * const program = Effect.gen(function* () {
20
+ * const { dataset } = yield* NTriples.parse('<http://ex/s> <http://ex/p> "o"@en .\n')
21
+ * return yield* NTriples.serialize(dataset)
22
+ * })
23
+ * ```
24
+ *
25
+ * @since 0.1.0
26
+ */
27
+ var NTriples_exports = /* @__PURE__ */ __exportAll({
28
+ codec: () => codec,
29
+ format: () => format,
30
+ parse: () => parse,
31
+ parseQuads: () => parseQuads,
32
+ parseStream: () => parseStream,
33
+ parser: () => parser,
34
+ serialize: () => serialize,
35
+ serializeStream: () => serializeStream,
36
+ serializer: () => serializer
37
+ });
38
+ /**
39
+ * @since 0.1.0
40
+ * @category formats
41
+ */
42
+ const format = makeFormat({
43
+ name: "N-Triples",
44
+ mediaType: "application/n-triples",
45
+ extensions: ["nt"],
46
+ datasets: false
47
+ });
48
+ const syntax = {
49
+ name: "N-Triples",
50
+ quads: false,
51
+ trace: {
52
+ module: "NTriples",
53
+ format
54
+ }
55
+ };
56
+ /**
57
+ * Parses an N-Triples document. Triples are placed in `options.graph`
58
+ * (the default graph when omitted).
59
+ *
60
+ * @since 0.1.0
61
+ * @category parsing
62
+ */
63
+ const parse = (input, options) => parse$1(syntax, input, options);
64
+ /**
65
+ * Parses an N-Triples document into quads in document order (duplicates are
66
+ * kept).
67
+ *
68
+ * @since 0.1.0
69
+ * @category parsing
70
+ */
71
+ const parseQuads = (input, options) => parseQuads$1(syntax, input, options);
72
+ /**
73
+ * Parses a stream of text chunks incrementally, line by line. Chunk
74
+ * boundaries may fall anywhere.
75
+ *
76
+ * @since 0.1.0
77
+ * @category parsing
78
+ */
79
+ const parseStream = parseStream$1(syntax);
80
+ /**
81
+ * Serialises triples as canonical N-Triples. Fails for quads in named
82
+ * graphs and for triple terms in the subject position.
83
+ *
84
+ * @since 0.1.0
85
+ * @category serializing
86
+ */
87
+ const serialize = (quads, options) => serialize$1(syntax, quads, options);
88
+ /**
89
+ * Serialises a stream of quads incrementally as canonical N-Triples.
90
+ *
91
+ * @since 0.1.0
92
+ * @category serializing
93
+ */
94
+ const serializeStream = serializeStream$1(syntax);
95
+ /**
96
+ * @since 0.1.0
97
+ * @category parsing
98
+ */
99
+ const parser = makeParser({
100
+ format,
101
+ parse,
102
+ parseStream
103
+ });
104
+ /**
105
+ * @since 0.1.0
106
+ * @category serializing
107
+ */
108
+ const serializer = makeSerializer({
109
+ format,
110
+ serialize,
111
+ serializeStream
112
+ });
113
+ /**
114
+ * @since 0.1.0
115
+ * @category codecs
116
+ */
117
+ const codec = makeCodec(parser, serializer);
118
+ export { parseQuads as a, serialize as c, parse as i, serializeStream as l, codec as n, parseStream as o, format as r, parser as s, NTriples_exports as t, serializer as u };
119
+
120
+ //# sourceMappingURL=NTriples-D-kLSEAf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NTriples-D-kLSEAf.mjs","names":["Serialization.makeFormat","internal.parse","internal.parseQuads","internal.parseStream","internal.serialize","internal.serializeStream","Serialization.makeParser","Serialization.makeSerializer","Serialization.makeCodec"],"sources":["../src/ntriples/NTriples.ts"],"sourcesContent":["/**\n * RDF 1.2 N-Triples: a line-based, plain-text format for RDF graphs.\n *\n * The parser is strict (absolute IRIs only, validated escapes, language tags\n * and base directions, triple terms `<<( s p o )>>` in object position,\n * `VERSION` directives) and streaming: `parseStream` consumes text chunks\n * line by line, so arbitrarily large documents are never buffered. The\n * serializer emits canonical N-Triples.\n *\n * @example\n * ```ts\n * import { Effect } from 'effect'\n * import { NTriples } from '@thomasfosterau/effect-rdf/ntriples'\n *\n * const program = Effect.gen(function* () {\n * const { dataset } = yield* NTriples.parse('<http://ex/s> <http://ex/p> \"o\"@en .\\n')\n * return yield* NTriples.serialize(dataset)\n * })\n * ```\n *\n * @since 0.1.0\n */\nimport * as Serialization from '../Serialization.ts';\nimport type * as Term from '../Term.ts';\nimport type * as Effect from 'effect/Effect';\nimport type * as Stream from 'effect/Stream';\nimport * as internal from './internal/codec.ts';\n\n/**\n * Options for the N-Triples serializer.\n *\n * @since 0.1.0\n * @category models\n */\nexport type SerializeOptions = internal.SerializeOptions;\n\n/**\n * @since 0.1.0\n * @category formats\n */\nexport const format: Serialization.Format = Serialization.makeFormat({\n name: 'N-Triples',\n mediaType: 'application/n-triples',\n extensions: ['nt'],\n datasets: false,\n});\n\n// The span names are `NTriples.parse`, `NTriples.serialize`, …\nconst syntax: internal.Syntax = {\n name: 'N-Triples',\n quads: false,\n trace: { module: 'NTriples', format },\n};\n\n/**\n * Parses an N-Triples document. Triples are placed in `options.graph`\n * (the default graph when omitted).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>\n internal.parse(syntax, input, options);\n\n/**\n * Parses an N-Triples document into quads in document order (duplicates are\n * kept).\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseQuads = (\n input: string,\n options?: Serialization.ParseOptions,\n): Effect.Effect<ReadonlyArray<Term.Quad>, Serialization.RdfParseError> =>\n internal.parseQuads(syntax, input, options);\n\n/**\n * Parses a stream of text chunks incrementally, line by line. Chunk\n * boundaries may fall anywhere.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseStream: <E, R>(\n input: Stream.Stream<string, E, R>,\n options?: Serialization.ParseOptions,\n) => Stream.Stream<Term.Quad, Serialization.RdfParseError | E, R> = internal.parseStream(syntax);\n\n/**\n * Serialises triples as canonical N-Triples. Fails for quads in named\n * graphs and for triple terms in the subject position.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serialize = (\n quads: Iterable<Term.Quad>,\n options?: SerializeOptions,\n): Effect.Effect<string, Serialization.RdfSerializeError> =>\n internal.serialize(syntax, quads, options);\n\n/**\n * Serialises a stream of quads incrementally as canonical N-Triples.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializeStream: <E, R>(\n quads: Stream.Stream<Term.Quad, E, R>,\n options?: SerializeOptions,\n) => Stream.Stream<string, Serialization.RdfSerializeError | E, R> =\n internal.serializeStream(syntax);\n\n/**\n * @since 0.1.0\n * @category parsing\n */\nexport const parser: Serialization.Parser = Serialization.makeParser({\n format,\n parse,\n parseStream,\n});\n\n/**\n * @since 0.1.0\n * @category serializing\n */\nexport const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({\n format,\n serialize,\n serializeStream,\n});\n\n/**\n * @since 0.1.0\n * @category codecs\n */\nexport const codec: Serialization.Codec<Serialization.ParseOptions, SerializeOptions> =\n Serialization.makeCodec(parser, serializer);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAa,SAA+BA,WAAyB;CACnE,MAAM;CACN,WAAW;CACX,YAAY,CAAC,IAAI;CACjB,UAAU;AACZ,CAAC;AAGD,MAAM,SAA0B;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;EAAE,QAAQ;EAAY;CAAO;AACtC;;;;;;;;AASA,MAAa,SACX,OACA,YAEAC,QAAe,QAAQ,OAAO,OAAO;;;;;;;;AASvC,MAAa,cACX,OACA,YAEAC,aAAoB,QAAQ,OAAO,OAAO;;;;;;;;AAS5C,MAAa,cAGuDC,cAAqB,MAAM;;;;;;;;AAS/F,MAAa,aACX,OACA,YAEAC,YAAmB,QAAQ,OAAO,OAAO;;;;;;;AAQ3C,MAAa,kBAIXC,kBAAyB,MAAM;;;;;AAMjC,MAAa,SAA+BC,WAAyB;CACnE;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,aAAyDC,eAA6B;CACjG;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAa,QACXC,UAAwB,QAAQ,UAAU"}