@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,538 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { O as expandPrefixed, S as stringValue, b as parse, s as canonicalName, x as string } from "./Datatype-DQvkNkiH.mjs";
3
+ import { d as warning, s as error } from "./Report-XHs8htzK.mjs";
4
+ import { A as normalize, C as dialectOfTable, D as schemaOfTable, O as decodeName, _ as checkCompatible, j as resolve, k as encodeName, w as inherit } from "./Metadata-D4HsQNXr.mjs";
5
+ import * as Arr from "effect/Array";
6
+ import * as HashMap from "effect/HashMap";
7
+ import * as Option from "effect/Option";
8
+ import * as Predicate from "effect/Predicate";
9
+ import * as Record from "effect/Record";
10
+ import * as Result from "effect/Result";
11
+ import * as Data from "effect/Data";
12
+ // src/csvw/internal/uriTemplate.ts
13
+ /**
14
+ * RFC 6570 URI Template expansion (all four levels) over string and list
15
+ * values, for the `aboutUrl`, `propertyUrl` and `valueUrl` templates.
16
+ *
17
+ * @internal
18
+ */
19
+ const operators = {
20
+ "": {
21
+ first: "",
22
+ sep: ",",
23
+ named: false,
24
+ ifEmpty: "",
25
+ reserved: false
26
+ },
27
+ "+": {
28
+ first: "",
29
+ sep: ",",
30
+ named: false,
31
+ ifEmpty: "",
32
+ reserved: true
33
+ },
34
+ ".": {
35
+ first: ".",
36
+ sep: ".",
37
+ named: false,
38
+ ifEmpty: "",
39
+ reserved: false
40
+ },
41
+ "/": {
42
+ first: "/",
43
+ sep: "/",
44
+ named: false,
45
+ ifEmpty: "",
46
+ reserved: false
47
+ },
48
+ ";": {
49
+ first: ";",
50
+ sep: ";",
51
+ named: true,
52
+ ifEmpty: "",
53
+ reserved: false
54
+ },
55
+ "?": {
56
+ first: "?",
57
+ sep: "&",
58
+ named: true,
59
+ ifEmpty: "=",
60
+ reserved: false
61
+ },
62
+ "&": {
63
+ first: "&",
64
+ sep: "&",
65
+ named: true,
66
+ ifEmpty: "=",
67
+ reserved: false
68
+ },
69
+ "#": {
70
+ first: "#",
71
+ sep: ",",
72
+ named: false,
73
+ ifEmpty: "",
74
+ reserved: true
75
+ }
76
+ };
77
+ const utf8 = new TextEncoder();
78
+ const pct = (c) => Arr.join(Arr.map(Array.from(utf8.encode(c)), (b) => `%${b.toString(16).toUpperCase().padStart(2, "0")}`), "");
79
+ const encodeUnreserved = (s) => s.replace(/[^A-Za-z0-9\-._~]/gu, (c) => pct(c));
80
+ const encodeReserved = (s) => s.replace(/%[0-9A-Fa-f]{2}|[^A-Za-z0-9\-._~:/?#[\]@!$&'()*+,;=]/gu, (c) => c.startsWith("%") && c.length === 3 ? c : pct(c));
81
+ const parseVarSpec = (spec) => {
82
+ const explode = spec.endsWith("*");
83
+ const body = explode ? spec.slice(0, -1) : spec;
84
+ const colon = body.indexOf(":");
85
+ return colon === -1 ? {
86
+ name: body,
87
+ prefix: Option.none(),
88
+ explode
89
+ } : {
90
+ name: body.slice(0, colon),
91
+ prefix: Option.some(Number.parseInt(body.slice(colon + 1), 10)),
92
+ explode
93
+ };
94
+ };
95
+ const expandVar = (op, spec, defined) => {
96
+ const enc = op.reserved ? encodeReserved : encodeUnreserved;
97
+ if (Option.isNone(defined)) return [];
98
+ const value = defined.value;
99
+ if (Predicate.isString(value)) {
100
+ const v = Option.match(spec.prefix, {
101
+ onNone: () => value,
102
+ onSome: (n) => Arr.join(Arr.take(Array.from(value), n), "")
103
+ });
104
+ if (!op.named) return [enc(v)];
105
+ return [v === "" ? `${spec.name}${op.ifEmpty}` : `${spec.name}=${enc(v)}`];
106
+ }
107
+ if (!Arr.isReadonlyArrayNonEmpty(value)) return [];
108
+ if (!spec.explode) {
109
+ const joined = Arr.join(Arr.map(value, enc), ",");
110
+ return [op.named ? `${spec.name}=${joined}` : joined];
111
+ }
112
+ return Arr.map(value, (item) => op.named ? item === "" ? `${spec.name}${op.ifEmpty}` : `${spec.name}=${enc(item)}` : enc(item));
113
+ };
114
+ const expandExpression = (expression, variables) => {
115
+ const head = expression.charAt(0);
116
+ const op = Record.get(operators, head);
117
+ const [operator, body] = Option.match(op, {
118
+ onNone: () => [operators[""], expression],
119
+ onSome: (o) => [o, expression.slice(1)]
120
+ });
121
+ const resolved = operator ?? {
122
+ first: "",
123
+ sep: ",",
124
+ named: false,
125
+ ifEmpty: "",
126
+ reserved: false
127
+ };
128
+ const parts = Arr.flatMap(body.split(","), (raw) => {
129
+ const spec = parseVarSpec(raw);
130
+ return expandVar(resolved, spec, Record.get(variables, spec.name));
131
+ });
132
+ return Arr.match(parts, {
133
+ onEmpty: () => "",
134
+ onNonEmpty: (ps) => resolved.first + Arr.join(ps, resolved.sep)
135
+ });
136
+ };
137
+ /**
138
+ * Expands a URI template with the given variables (an absent variable is
139
+ * undefined).
140
+ *
141
+ * @internal
142
+ */
143
+ const expand = (template, variables) => template.replace(/\{([^}]*)\}/g, (_, e) => expandExpression(e, variables));
144
+ // src/csvw/Table.ts
145
+ /**
146
+ * The annotated tabular data model (Tabular Data Model §Tabular Data Models):
147
+ * an already-parsed table (`Source`, rows of cell strings in file order) is
148
+ * read with its dialect's row-level flags (skipped rows, header rows, comment
149
+ * rows, blank rows, skipped columns, trimming), its embedded metadata is
150
+ * extracted and checked against the metadata, and every cell is parsed with
151
+ * its column's datatype into an annotated table, with the cell, primary-key
152
+ * and foreign-key errors in a validation report.
153
+ *
154
+ * @since 0.1.0
155
+ */
156
+ var Table_exports = /* @__PURE__ */ __exportAll({
157
+ CellValue: () => CellValue,
158
+ annotate: () => annotate,
159
+ checkForeignKeyTargets: () => checkForeignKeyTargets,
160
+ parseCell: () => parseCell,
161
+ read: () => read,
162
+ referencedTable: () => referencedTable,
163
+ validateKeys: () => validateKeys
164
+ });
165
+ /**
166
+ * Constructors and matchers for `CellValue`.
167
+ *
168
+ * @since 0.1.0
169
+ * @category models
170
+ */
171
+ const CellValue = Data.taggedEnum();
172
+ const nullValue = CellValue.Null({});
173
+ const trimCell = (value, trim) => trim === "true" ? value.trim() : trim === "start" ? value.trimStart() : trim === "end" ? value.trimEnd() : value;
174
+ const emptyColumn = (titles) => ({
175
+ ...Option.match(Option.flatMap(Arr.head(Record.values(titles)), Arr.head), {
176
+ onNone: () => ({}),
177
+ onSome: (titleName) => ({ titleName })
178
+ }),
179
+ titles,
180
+ isVirtual: false,
181
+ isSuppressed: false,
182
+ inherited: {},
183
+ common: {}
184
+ });
185
+ /**
186
+ * Reads a source with a dialect (Tabular Data Model §Parsing Tabular Data,
187
+ * from the point a row's cells are known): skipped rows and comment rows
188
+ * become comments, header rows become column titles in `lang`, and the
189
+ * remaining rows (less blank ones when `skipBlankRows`) are the data.
190
+ *
191
+ * @since 0.1.0
192
+ * @category reading
193
+ */
194
+ const read = (source, dialect, lang) => {
195
+ const prefix = Option.fromNullishOr(dialect.commentPrefix);
196
+ const content = (cells) => Arr.join(cells, dialect.delimiter);
197
+ const comment = (cells) => Option.flatMap(prefix, (p) => {
198
+ const c = content(cells);
199
+ return c.startsWith(p) ? Option.some(c.slice(p.length).trim()) : Option.none();
200
+ });
201
+ const cellsOf = (cells) => Arr.map(Arr.drop(cells, dialect.skipColumns), (c) => trimCell(c, dialect.trim));
202
+ const numbered = Arr.map(source.rows, (cells, i) => ({
203
+ cells,
204
+ sourceNumber: i + 1
205
+ }));
206
+ const [skipped, rest] = Arr.splitAt(numbered, dialect.skipRows);
207
+ const skippedComments = Arr.flatMap(skipped, ({ cells }) => Option.match(comment(cells), {
208
+ onSome: (c) => [c],
209
+ onNone: () => {
210
+ const c = content(cells).trim();
211
+ return c === "" ? [] : [c];
212
+ }
213
+ }));
214
+ const state = Arr.reduce(rest, {
215
+ headers: [],
216
+ comments: [],
217
+ rows: []
218
+ }, (acc, { cells, sourceNumber }) => {
219
+ const c = comment(cells);
220
+ if (Option.isSome(c)) {
221
+ acc.comments.push(c.value);
222
+ return acc;
223
+ }
224
+ if (Arr.length(acc.headers) < dialect.headerRowCount) {
225
+ acc.headers.push(cellsOf(cells));
226
+ return acc;
227
+ }
228
+ const data = cellsOf(cells);
229
+ if (dialect.shouldSkipBlankRows && Arr.every(data, (v) => v === "")) return acc;
230
+ acc.rows.push({
231
+ sourceNumber,
232
+ cells: data
233
+ });
234
+ return acc;
235
+ });
236
+ const width = Math.max(0, ...Arr.map(state.headers, Arr.length), ...Arr.map(Arr.take(state.rows, 1), (r) => Arr.length(r.cells)));
237
+ const columns = Arr.makeBy(width, (i) => {
238
+ const titles = Arr.filter(Arr.map(state.headers, (h) => (h[i] ?? "").trim() === "" ? "" : h[i] ?? ""), (t) => t !== "");
239
+ return emptyColumn(Arr.isReadonlyArrayNonEmpty(titles) ? { [lang]: titles } : {});
240
+ });
241
+ return {
242
+ columns: dialect.headerRowCount === 0 ? Arr.map(columns, () => emptyColumn({})) : columns,
243
+ comments: Arr.appendAll(skippedComments, state.comments),
244
+ rows: state.rows
245
+ };
246
+ };
247
+ const nameOf = (column, number) => column.name ?? (column.titleName === void 0 ? `_col.${number}` : encodeName(column.titleName));
248
+ const annotateColumn = (column, number, sourceNumber, inherited, tableDirection) => {
249
+ const p = inherit(column.inherited, ...inherited);
250
+ const direction = p.textDirection ?? "inherit";
251
+ return {
252
+ number,
253
+ sourceNumber,
254
+ id: Option.fromNullishOr(column.id),
255
+ name: nameOf(column, number),
256
+ titles: column.titles,
257
+ isVirtual: column.isVirtual,
258
+ isSuppressed: column.isSuppressed,
259
+ datatype: p.datatype ?? string,
260
+ default: p.default ?? "",
261
+ lang: p.lang ?? "und",
262
+ null: p.null ?? [""],
263
+ ordered: p.ordered ?? false,
264
+ required: p.required ?? false,
265
+ separator: Option.fromNullishOr(p.separator),
266
+ textDirection: direction === "inherit" ? tableDirection : direction,
267
+ aboutUrl: Option.fromNullishOr(p.aboutUrl),
268
+ propertyUrl: Option.fromNullishOr(p.propertyUrl),
269
+ valueUrl: Option.fromNullishOr(p.valueUrl),
270
+ common: column.common
271
+ };
272
+ };
273
+ const keepsWhitespace = (base) => Arr.contains([
274
+ "string",
275
+ "json",
276
+ "xml",
277
+ "html",
278
+ "anyAtomicType"
279
+ ], canonicalName(base));
280
+ const normalizeWhitespace = (value, base) => {
281
+ if (keepsWhitespace(base)) return value;
282
+ const spaced = value.replace(/[\r\n\t]/g, " ");
283
+ return canonicalName(base) === "normalizedString" ? spaced : spaced.trim().replace(/ {2,}/g, " ");
284
+ };
285
+ const parseItem = (text, column) => {
286
+ const s = text === "" ? column.default : text;
287
+ if (Arr.contains(column.null, s)) return {
288
+ value: Option.none(),
289
+ errors: []
290
+ };
291
+ const language = Option.some(column.lang);
292
+ return Result.match(parse(s, column.datatype, language), {
293
+ onSuccess: (value) => ({
294
+ value: Option.some(value),
295
+ errors: []
296
+ }),
297
+ onFailure: (errors) => ({
298
+ value: Option.some(stringValue(s, canonicalName(column.datatype.base) === "string" ? language : Option.none())),
299
+ errors
300
+ })
301
+ });
302
+ };
303
+ /**
304
+ * Parses a cell's string value with its column (Tabular Data Model §Parsing
305
+ * Cells): whitespace normalization, `default`, `null`, `separator` lists,
306
+ * the datatype and its constraints, and `required`.
307
+ *
308
+ * @since 0.1.0
309
+ * @category parsing
310
+ */
311
+ const parseCell = (stringValue, column) => {
312
+ const base = column.datatype.base;
313
+ const normalized = normalizeWhitespace(stringValue, base);
314
+ const s = normalized === "" ? column.default : normalized;
315
+ const required = (value, errors) => ({
316
+ value,
317
+ errors: column.required && CellValue.$is("Null")(value) ? Arr.append(errors, "a required cell is null") : errors
318
+ });
319
+ return Option.match(column.separator, {
320
+ onNone: () => {
321
+ const item = parseItem(s, column);
322
+ return required(Option.match(item.value, {
323
+ onNone: () => nullValue,
324
+ onSome: (value) => CellValue.Single({ value })
325
+ }), item.errors);
326
+ },
327
+ onSome: (separator) => {
328
+ if (s === "") return {
329
+ value: CellValue.List({ values: [] }),
330
+ errors: column.required ? ["a required cell is empty"] : []
331
+ };
332
+ if (Arr.contains(column.null, s)) return required(nullValue, []);
333
+ const strip = !Arr.contains(["string", "anyAtomicType"], canonicalName(base));
334
+ const items = Arr.map(s.split(separator), (part) => parseItem(strip ? part.trim() : part, column));
335
+ return {
336
+ value: CellValue.List({ values: Arr.getSomes(Arr.map(items, (i) => i.value)) }),
337
+ errors: Arr.flatMap(items, (i) => i.errors)
338
+ };
339
+ }
340
+ });
341
+ };
342
+ const templateValue = (value) => CellValue.$match(value, {
343
+ Null: () => Option.none(),
344
+ Single: ({ value: v }) => Option.some(v.lexical),
345
+ List: ({ values }) => Option.some(Arr.map(values, (v) => v.lexical))
346
+ });
347
+ const expandTemplate = (template, variables, tableUrl) => {
348
+ const expanded = expand(template, variables);
349
+ return resolve(Option.getOrElse(expandPrefixed(expanded), () => expanded), tableUrl);
350
+ };
351
+ /**
352
+ * Annotates one table of a group from its source: reads it with the table's
353
+ * dialect, checks the metadata against the embedded metadata, and parses
354
+ * every cell. Returns the annotated table and its issues.
355
+ *
356
+ * @since 0.1.0
357
+ * @category annotating
358
+ */
359
+ const annotate = (group, table, source, options = {}) => {
360
+ const validate = options.validate ?? false;
361
+ const level = validate ? error : warning;
362
+ const schema = schemaOfTable(group, table);
363
+ const dialect = dialectOfTable(group, table);
364
+ const tableInherited = inherit(table.inherited, group.inherited);
365
+ const schemaInherited = Option.match(schema, {
366
+ onNone: () => ({}),
367
+ onSome: (s) => s.inherited
368
+ });
369
+ const lang = inherit(schemaInherited, tableInherited).lang ?? "und";
370
+ const embedded = read(source, dialect, lang);
371
+ const tableDirection = table.tableDirection ?? group.tableDirection ?? "auto";
372
+ const compatibility = Option.flatMap(schema, (s) => checkCompatible(s.columns, embedded.columns, validate));
373
+ const described = Option.match(schema, {
374
+ onNone: () => embedded.columns,
375
+ onSome: (s) => s.columns
376
+ });
377
+ const real = Arr.filter(described, (c) => !c.isVirtual);
378
+ const virtual = Arr.filter(described, (c) => c.isVirtual);
379
+ const width = Math.max(Arr.length(real), Arr.length(embedded.columns));
380
+ const inherited = [
381
+ schemaInherited,
382
+ table.inherited,
383
+ group.inherited
384
+ ];
385
+ const realColumns = Arr.makeBy(width, (i) => annotateColumn(real[i] ?? emptyColumn({}), i + 1, Option.some(dialect.skipColumns + i + 1), inherited, tableDirection));
386
+ const columns = Arr.appendAll(realColumns, Arr.map(virtual, (c, i) => annotateColumn(c, width + i + 1, Option.none(), inherited, tableDirection)));
387
+ const rowTitles = Option.getOrElse(Option.flatMap(schema, (s) => Option.fromNullishOr(s.rowTitles)), () => []);
388
+ const issues = Arr.fromOption(Option.map(compatibility, (message) => level(message, { table: table.url })));
389
+ const rows = Arr.map(embedded.rows, ({ sourceNumber, cells }, index) => {
390
+ const parsed = Arr.map(columns, (column, i) => parseCell(column.isVirtual ? "" : cells[i] ?? "", column));
391
+ const variables = Record.fromEntries(Arr.flatMap(columns, (c, i) => Arr.fromOption(Option.map(templateValue(parsed[i]?.value ?? nullValue), (v) => [c.name, v]))));
392
+ const annotated = Arr.map(columns, (column, i) => {
393
+ const p = parsed[i] ?? {
394
+ value: nullValue,
395
+ errors: []
396
+ };
397
+ const vars = {
398
+ ...variables,
399
+ _column: String(column.number),
400
+ _sourceColumn: String(Option.getOrElse(column.sourceNumber, () => column.number)),
401
+ _row: String(index + 1),
402
+ _sourceRow: String(sourceNumber),
403
+ _name: decodeName(column.name)
404
+ };
405
+ const expand = (t) => Option.map(t, (template) => expandTemplate(template, vars, table.url));
406
+ Arr.forEach(p.errors, (message) => issues.push(level(`${column.name}: ${message}`, {
407
+ table: table.url,
408
+ row: sourceNumber,
409
+ column: Option.getOrElse(column.sourceNumber, () => column.number)
410
+ })));
411
+ return {
412
+ column: i,
413
+ stringValue: column.isVirtual ? "" : cells[i] ?? "",
414
+ value: p.value,
415
+ errors: p.errors,
416
+ aboutUrl: expand(column.aboutUrl),
417
+ propertyUrl: expand(column.propertyUrl),
418
+ valueUrl: CellValue.$is("Null")(p.value) && !column.isVirtual ? Option.none() : expand(column.valueUrl),
419
+ ordered: column.ordered,
420
+ textDirection: column.textDirection
421
+ };
422
+ });
423
+ const titles = Arr.flatMap(rowTitles, (name) => Option.match(Arr.findFirstIndex(columns, (c) => c.name === name), {
424
+ onNone: () => [],
425
+ onSome: (i) => CellValue.$match(annotated[i]?.value ?? nullValue, {
426
+ Null: () => [],
427
+ Single: ({ value }) => [value],
428
+ List: ({ values }) => values
429
+ })
430
+ }));
431
+ return {
432
+ number: index + 1,
433
+ sourceNumber,
434
+ cells: annotated,
435
+ titles
436
+ };
437
+ });
438
+ const common = Arr.isReadonlyArrayNonEmpty(embedded.comments) ? {
439
+ ...table.common,
440
+ "rdfs:comment": Arr.appendAll(Arr.ensure(table.common["rdfs:comment"] ?? []), Arr.map(embedded.comments, (c) => ({ "@value": c })))
441
+ } : table.common;
442
+ return {
443
+ table: {
444
+ url: table.url,
445
+ id: Option.fromNullishOr(table.id),
446
+ schemaId: Option.flatMap(schema, (s) => Option.fromNullishOr(s.id)),
447
+ isSuppressed: table.isSuppressed,
448
+ tableDirection,
449
+ dialect,
450
+ notes: table.notes,
451
+ common,
452
+ columns,
453
+ rows,
454
+ primaryKey: Option.getOrElse(Option.flatMap(schema, (s) => Option.fromNullishOr(s.primaryKey)), () => []),
455
+ foreignKeys: Option.match(schema, {
456
+ onNone: () => [],
457
+ onSome: (s) => s.foreignKeys
458
+ }),
459
+ transformations: Arr.appendAll(table.transformations, group.transformations)
460
+ },
461
+ issues
462
+ };
463
+ };
464
+ const keyOf = (row, indexes) => Arr.join(Arr.map(indexes, (i) => CellValue.$match(row.cells[i]?.value ?? nullValue, {
465
+ Null: () => "\0",
466
+ Single: ({ value }) => value.lexical,
467
+ List: ({ values }) => Arr.join(Arr.map(values, (v) => v.lexical), "")
468
+ })), "");
469
+ const indexesOf = (table, names) => Option.all(Arr.map(names, (n) => Arr.findFirstIndex(table.columns, (c) => c.name === n)));
470
+ const countKeys = (table, indexes) => Arr.reduce(table.rows, HashMap.empty(), (map, row) => {
471
+ const key = keyOf(row, indexes);
472
+ return HashMap.set(map, key, Option.getOrElse(HashMap.get(map, key), () => 0) + 1);
473
+ });
474
+ /**
475
+ * Finds the table a foreign key references: by `resource` URL or by
476
+ * `schemaReference` (exactly one table must use that schema).
477
+ *
478
+ * @since 0.1.0
479
+ * @category keys
480
+ */
481
+ const referencedTable = (tables, reference) => {
482
+ if (reference.resource !== void 0) {
483
+ const url = normalize(reference.resource);
484
+ return Arr.findFirst(tables, (t) => normalize(t.url) === url);
485
+ }
486
+ const schema = reference.schemaReference;
487
+ const matching = Arr.filter(tables, (t) => Option.exists(t.schemaId, (id) => id === schema));
488
+ return Arr.length(matching) === 1 ? Arr.head(matching) : Option.none();
489
+ };
490
+ /**
491
+ * Checks that every foreign key of a group references an existing table and
492
+ * columns, returning the errors (these stop processing).
493
+ *
494
+ * @since 0.1.0
495
+ * @category keys
496
+ */
497
+ const checkForeignKeyTargets = (tables) => Arr.flatMap(tables, (table) => Arr.flatMap(table.foreignKeys, (fk) => Option.match(referencedTable(tables, fk.reference), {
498
+ onNone: () => [`${table.url}: a foreign key references a table that is not in the group`],
499
+ onSome: (target) => Option.isSome(indexesOf(target, fk.reference.columnReference)) ? [] : [`${table.url}: a foreign key references a column that is not in ${target.url}`]
500
+ })));
501
+ /**
502
+ * Validates the primary keys and foreign keys of a group's tables: each row's
503
+ * primary key is unique, and each row's foreign keys reference exactly one
504
+ * row.
505
+ *
506
+ * @since 0.1.0
507
+ * @category keys
508
+ */
509
+ const validateKeys = (tables) => {
510
+ const primary = Arr.flatMap(tables, (table) => Option.match(indexesOf(table, table.primaryKey), {
511
+ onNone: () => [],
512
+ onSome: (indexes) => {
513
+ if (!Arr.isReadonlyArrayNonEmpty(indexes)) return [];
514
+ const counts = countKeys(table, indexes);
515
+ return Arr.flatMap(table.rows, (row) => Option.getOrElse(HashMap.get(counts, keyOf(row, indexes)), () => 0) > 1 ? [error("duplicate primary key", {
516
+ table: table.url,
517
+ row: row.sourceNumber
518
+ })] : []);
519
+ }
520
+ }));
521
+ const foreign = Arr.flatMap(tables, (table) => Arr.flatMap(table.foreignKeys, (fk) => Option.match(Option.all([indexesOf(table, fk.columnReference), Option.flatMap(referencedTable(tables, fk.reference), (target) => Option.map(indexesOf(target, fk.reference.columnReference), (ix) => [target, ix]))]), {
522
+ onNone: () => [],
523
+ onSome: ([indexes, [target, targetIndexes]]) => {
524
+ const counts = countKeys(target, targetIndexes);
525
+ return Arr.flatMap(table.rows, (row) => {
526
+ const n = Option.getOrElse(HashMap.get(counts, keyOf(row, indexes)), () => 0);
527
+ return n === 1 ? [] : [error(n === 0 ? `foreign key references no row of ${target.url}` : `foreign key references ${n} rows of ${target.url}`, {
528
+ table: table.url,
529
+ row: row.sourceNumber
530
+ })];
531
+ });
532
+ }
533
+ })));
534
+ return Arr.appendAll(primary, foreign);
535
+ };
536
+ export { parseCell as a, validateKeys as c, checkForeignKeyTargets as i, expand as l, Table_exports as n, read as o, annotate as r, referencedTable as s, CellValue as t };
537
+
538
+ //# sourceMappingURL=Table-BGgm9nbM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table-BGgm9nbM.mjs","names":["Url.encodeName","Metadata.inherit","Datatype.string","Datatype.canonicalName","Datatype.parse","Datatype.stringValue","UriTemplate.expand","Url.resolve","Vocab.expandPrefixed","Report.error","Report.warning","Metadata.schemaOfTable","Metadata.dialectOfTable","Metadata.checkCompatible","Url.decodeName","Url.normalize"],"sources":["../src/csvw/internal/uriTemplate.ts","../src/csvw/Table.ts"],"sourcesContent":["/**\n * RFC 6570 URI Template expansion (all four levels) over string and list\n * values, for the `aboutUrl`, `propertyUrl` and `valueUrl` templates.\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Record from 'effect/Record';\n\n/**\n * A template variable's value: a string, a list of strings, or absent.\n *\n * @internal\n */\nexport type Value = string | ReadonlyArray<string>;\n\ninterface Operator {\n readonly first: string;\n readonly sep: string;\n readonly named: boolean;\n readonly ifEmpty: string;\n readonly reserved: boolean;\n}\n\nconst operators: Readonly<Record<string, Operator>> = {\n '': { first: '', sep: ',', named: false, ifEmpty: '', reserved: false },\n '+': { first: '', sep: ',', named: false, ifEmpty: '', reserved: true },\n '.': { first: '.', sep: '.', named: false, ifEmpty: '', reserved: false },\n '/': { first: '/', sep: '/', named: false, ifEmpty: '', reserved: false },\n ';': { first: ';', sep: ';', named: true, ifEmpty: '', reserved: false },\n '?': { first: '?', sep: '&', named: true, ifEmpty: '=', reserved: false },\n '&': { first: '&', sep: '&', named: true, ifEmpty: '=', reserved: false },\n '#': { first: '#', sep: ',', named: false, ifEmpty: '', reserved: true },\n};\n\nconst utf8 = new TextEncoder();\n\nconst pct = (c: string): string =>\n Arr.join(\n Arr.map(Array.from(utf8.encode(c)), (b) => `%${b.toString(16).toUpperCase().padStart(2, '0')}`),\n '',\n );\n\nconst encodeUnreserved = (s: string): string => s.replace(/[^A-Za-z0-9\\-._~]/gu, (c) => pct(c));\n\nconst encodeReserved = (s: string): string =>\n s.replace(/%[0-9A-Fa-f]{2}|[^A-Za-z0-9\\-._~:/?#[\\]@!$&'()*+,;=]/gu, (c) =>\n c.startsWith('%') && c.length === 3 ? c : pct(c),\n );\n\ninterface VarSpec {\n readonly name: string;\n readonly prefix: Option.Option<number>;\n readonly explode: boolean;\n}\n\nconst parseVarSpec = (spec: string): VarSpec => {\n const explode = spec.endsWith('*');\n const body = explode ? spec.slice(0, -1) : spec;\n const colon = body.indexOf(':');\n return colon === -1\n ? { name: body, prefix: Option.none(), explode }\n : {\n name: body.slice(0, colon),\n prefix: Option.some(Number.parseInt(body.slice(colon + 1), 10)),\n explode,\n };\n};\n\nconst expandVar = (\n op: Operator,\n spec: VarSpec,\n defined: Option.Option<Value>,\n): ReadonlyArray<string> => {\n const enc = op.reserved ? encodeReserved : encodeUnreserved;\n if (Option.isNone(defined)) return [];\n const value = defined.value;\n if (Predicate.isString(value)) {\n const v = Option.match(spec.prefix, {\n onNone: () => value,\n onSome: (n) => Arr.join(Arr.take(Array.from(value), n), ''),\n });\n if (!op.named) return [enc(v)];\n return [v === '' ? `${spec.name}${op.ifEmpty}` : `${spec.name}=${enc(v)}`];\n }\n if (!Arr.isReadonlyArrayNonEmpty(value)) return [];\n if (!spec.explode) {\n const joined = Arr.join(Arr.map(value, enc), ',');\n return [op.named ? `${spec.name}=${joined}` : joined];\n }\n return Arr.map(value, (item) =>\n op.named\n ? item === ''\n ? `${spec.name}${op.ifEmpty}`\n : `${spec.name}=${enc(item)}`\n : enc(item),\n );\n};\n\nconst expandExpression = (\n expression: string,\n variables: Readonly<Record<string, Value>>,\n): string => {\n const head = expression.charAt(0);\n const op = Record.get(operators, head);\n const [operator, body] = Option.match(op, {\n onNone: () => [operators[''], expression] as const,\n onSome: (o) => [o, expression.slice(1)] as const,\n });\n const resolved = operator ?? { first: '', sep: ',', named: false, ifEmpty: '', reserved: false };\n const parts = Arr.flatMap(body.split(','), (raw) => {\n const spec = parseVarSpec(raw);\n return expandVar(resolved, spec, Record.get(variables, spec.name));\n });\n return Arr.match(parts, {\n onEmpty: () => '',\n onNonEmpty: (ps) => resolved.first + Arr.join(ps, resolved.sep),\n });\n};\n\n/**\n * Expands a URI template with the given variables (an absent variable is\n * undefined).\n *\n * @internal\n */\nexport const expand = (template: string, variables: Readonly<Record<string, Value>>): string =>\n template.replace(/\\{([^}]*)\\}/g, (_, e: string) => expandExpression(e, variables));\n","/**\n * The annotated tabular data model (Tabular Data Model §Tabular Data Models):\n * an already-parsed table (`Source`, rows of cell strings in file order) is\n * read with its dialect's row-level flags (skipped rows, header rows, comment\n * rows, blank rows, skipped columns, trimming), its embedded metadata is\n * extracted and checked against the metadata, and every cell is parsed with\n * its column's datatype into an annotated table, with the cell, primary-key\n * and foreign-key errors in a validation report.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Data from 'effect/Data';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport type * as Schema from 'effect/Schema';\nimport * as Datatype from './Datatype.ts';\nimport * as Metadata from './Metadata.ts';\nimport * as Report from './Report.ts';\nimport * as UriTemplate from './internal/uriTemplate.ts';\nimport * as Url from './internal/url.ts';\nimport * as Vocab from './internal/vocab.ts';\n\n// -----------------------------------------------------------------------------\n// Input\n// -----------------------------------------------------------------------------\n\n/**\n * An already-parsed tabular data file: its URL and its records, in file\n * order, as cell strings — every record, including skipped, header, comment\n * and blank ones, with quotes and escapes already removed. Trimming, comment\n * prefixes, skipped rows and columns and header rows are applied from the\n * table's dialect.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Source {\n readonly url: string;\n readonly rows: ReadonlyArray<ReadonlyArray<string>>;\n}\n\n// -----------------------------------------------------------------------------\n// Annotated model\n// -----------------------------------------------------------------------------\n\n/**\n * An annotated column, with every inherited property resolved.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Column {\n /** Position among the table's columns, from 1. */\n readonly number: number;\n /** Position in the source file, from 1 (`None` for a virtual column). */\n readonly sourceNumber: Option.Option<number>;\n readonly id: Option.Option<string>;\n /** The column name (percent-encoded when derived from a title). */\n readonly name: string;\n readonly titles: Metadata.LanguageMap;\n readonly isVirtual: boolean;\n readonly isSuppressed: boolean;\n readonly datatype: Datatype.Datatype;\n readonly default: string;\n readonly lang: string;\n readonly null: ReadonlyArray<string>;\n readonly ordered: boolean;\n readonly required: boolean;\n readonly separator: Option.Option<string>;\n readonly textDirection: 'ltr' | 'rtl' | 'auto';\n readonly aboutUrl: Option.Option<string>;\n readonly propertyUrl: Option.Option<string>;\n readonly valueUrl: Option.Option<string>;\n readonly common: Metadata.CommonProperties;\n}\n\n/**\n * The value of a cell: null, a single value, or a list of values (a column\n * with a `separator`).\n *\n * @since 0.1.0\n * @category models\n */\nexport type CellValue = Data.TaggedEnum<{\n /** No value (a variant without fields). */\n Null: { readonly value?: never };\n Single: { readonly value: Datatype.Value };\n List: { readonly values: ReadonlyArray<Datatype.Value> };\n}>;\n\n/**\n * Constructors and matchers for `CellValue`.\n *\n * @since 0.1.0\n * @category models\n */\nexport const CellValue = Data.taggedEnum<CellValue>();\n\nconst nullValue: CellValue = CellValue.Null({});\n\n/**\n * An annotated cell.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Cell {\n /** Index of the cell's column in `Table.columns`. */\n readonly column: number;\n readonly stringValue: string;\n readonly value: CellValue;\n readonly errors: ReadonlyArray<string>;\n readonly aboutUrl: Option.Option<string>;\n readonly propertyUrl: Option.Option<string>;\n readonly valueUrl: Option.Option<string>;\n readonly ordered: boolean;\n readonly textDirection: 'ltr' | 'rtl' | 'auto';\n}\n\n/**\n * An annotated row.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Row {\n /** Position among the table's rows, from 1. */\n readonly number: number;\n /** Position in the source file, from 1. */\n readonly sourceNumber: number;\n readonly cells: ReadonlyArray<Cell>;\n /** The row titles (from the schema's `rowTitles` columns). */\n readonly titles: ReadonlyArray<Datatype.Value>;\n}\n\n/**\n * An annotated table.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Table {\n readonly url: string;\n readonly id: Option.Option<string>;\n readonly schemaId: Option.Option<string>;\n readonly isSuppressed: boolean;\n readonly tableDirection: Metadata.TableDirection;\n readonly dialect: Metadata.Dialect;\n readonly notes: ReadonlyArray<Schema.Json>;\n /** Non-core annotations: the table description's common properties. */\n readonly common: Metadata.CommonProperties;\n readonly columns: ReadonlyArray<Column>;\n readonly rows: ReadonlyArray<Row>;\n readonly primaryKey: ReadonlyArray<string>;\n readonly foreignKeys: ReadonlyArray<Metadata.ForeignKey>;\n readonly transformations: ReadonlyArray<Metadata.Transformation>;\n}\n\n/**\n * An annotated group of tables.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface TableGroup {\n readonly id: Option.Option<string>;\n readonly notes: ReadonlyArray<Schema.Json>;\n readonly common: Metadata.CommonProperties;\n readonly tables: ReadonlyArray<Table>;\n}\n\n// -----------------------------------------------------------------------------\n// Reading rows and embedded metadata\n// -----------------------------------------------------------------------------\n\n/**\n * A data row as read from a source: its source row number and its cells\n * (after skipped columns, trimmed).\n *\n * @since 0.1.0\n * @category models\n */\nexport interface SourceRow {\n readonly sourceNumber: number;\n readonly cells: ReadonlyArray<string>;\n}\n\n/**\n * What reading a source with a dialect yields: the embedded metadata (column\n * titles from the header rows, comment rows) and the data rows.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Embedded {\n readonly columns: ReadonlyArray<Metadata.Column>;\n readonly comments: ReadonlyArray<string>;\n readonly rows: ReadonlyArray<SourceRow>;\n}\n\ninterface Reading {\n readonly headers: Array<ReadonlyArray<string>>;\n readonly comments: Array<string>;\n readonly rows: Array<SourceRow>;\n}\n\nconst trimCell = (value: string, trim: Metadata.Trim): string =>\n trim === 'true'\n ? value.trim()\n : trim === 'start'\n ? value.trimStart()\n : trim === 'end'\n ? value.trimEnd()\n : value;\n\nconst emptyColumn = (titles: Metadata.LanguageMap): Metadata.Column => ({\n ...Option.match(Option.flatMap(Arr.head(Record.values(titles)), Arr.head), {\n onNone: () => ({}),\n onSome: (titleName) => ({ titleName }),\n }),\n titles,\n isVirtual: false,\n isSuppressed: false,\n inherited: {},\n common: {},\n});\n\n/**\n * Reads a source with a dialect (Tabular Data Model §Parsing Tabular Data,\n * from the point a row's cells are known): skipped rows and comment rows\n * become comments, header rows become column titles in `lang`, and the\n * remaining rows (less blank ones when `skipBlankRows`) are the data.\n *\n * @since 0.1.0\n * @category reading\n */\nexport const read = (source: Source, dialect: Metadata.Dialect, lang: string): Embedded => {\n const prefix = Option.fromNullishOr(dialect.commentPrefix);\n const content = (cells: ReadonlyArray<string>) => Arr.join(cells, dialect.delimiter);\n const comment = (cells: ReadonlyArray<string>): Option.Option<string> =>\n Option.flatMap(prefix, (p) => {\n const c = content(cells);\n return c.startsWith(p) ? Option.some(c.slice(p.length).trim()) : Option.none();\n });\n const cellsOf = (cells: ReadonlyArray<string>) =>\n Arr.map(Arr.drop(cells, dialect.skipColumns), (c) => trimCell(c, dialect.trim));\n const numbered = Arr.map(source.rows, (cells, i) => ({ cells, sourceNumber: i + 1 }));\n const [skipped, rest] = Arr.splitAt(numbered, dialect.skipRows);\n const skippedComments = Arr.flatMap(skipped, ({ cells }) =>\n Option.match(comment(cells), {\n onSome: (c) => [c],\n onNone: () => {\n const c = content(cells).trim();\n return c === '' ? [] : [c];\n },\n }),\n );\n // Header rows are the first `headerRowCount` rows that are not comments.\n const initial: Reading = { headers: [], comments: [], rows: [] };\n const state = Arr.reduce(rest, initial, (acc, { cells, sourceNumber }) => {\n const c = comment(cells);\n if (Option.isSome(c)) {\n acc.comments.push(c.value);\n return acc;\n }\n if (Arr.length(acc.headers) < dialect.headerRowCount) {\n acc.headers.push(cellsOf(cells));\n return acc;\n }\n const data = cellsOf(cells);\n if (dialect.shouldSkipBlankRows && Arr.every(data, (v) => v === '')) return acc;\n acc.rows.push({ sourceNumber, cells: data });\n return acc;\n });\n const width = Math.max(\n 0,\n ...Arr.map(state.headers, Arr.length),\n ...Arr.map(Arr.take(state.rows, 1), (r) => Arr.length(r.cells)),\n );\n const columns = Arr.makeBy(width, (i) => {\n const titles = Arr.filter(\n Arr.map(state.headers, (h) => ((h[i] ?? '').trim() === '' ? '' : (h[i] ?? ''))),\n (t) => t !== '',\n );\n return emptyColumn(Arr.isReadonlyArrayNonEmpty(titles) ? { [lang]: titles } : {});\n });\n return {\n columns: dialect.headerRowCount === 0 ? Arr.map(columns, () => emptyColumn({})) : columns,\n comments: Arr.appendAll(skippedComments, state.comments),\n rows: state.rows,\n };\n};\n\n// -----------------------------------------------------------------------------\n// Columns\n// -----------------------------------------------------------------------------\n\nconst nameOf = (column: Metadata.Column, number: number): string =>\n column.name ??\n (column.titleName === undefined ? `_col.${number}` : Url.encodeName(column.titleName));\n\nconst annotateColumn = (\n column: Metadata.Column,\n number: number,\n sourceNumber: Option.Option<number>,\n inherited: ReadonlyArray<Metadata.Inherited>,\n tableDirection: Metadata.TableDirection,\n): Column => {\n const p = Metadata.inherit(column.inherited, ...inherited);\n const direction = p.textDirection ?? 'inherit';\n return {\n number,\n sourceNumber,\n id: Option.fromNullishOr(column.id),\n name: nameOf(column, number),\n titles: column.titles,\n isVirtual: column.isVirtual,\n isSuppressed: column.isSuppressed,\n datatype: p.datatype ?? Datatype.string,\n default: p.default ?? '',\n lang: p.lang ?? 'und',\n null: p.null ?? [''],\n ordered: p.ordered ?? false,\n required: p.required ?? false,\n separator: Option.fromNullishOr(p.separator),\n textDirection: direction === 'inherit' ? tableDirection : direction,\n aboutUrl: Option.fromNullishOr(p.aboutUrl),\n propertyUrl: Option.fromNullishOr(p.propertyUrl),\n valueUrl: Option.fromNullishOr(p.valueUrl),\n common: column.common,\n };\n};\n\n// -----------------------------------------------------------------------------\n// Cells\n// -----------------------------------------------------------------------------\n\nconst keepsWhitespace = (base: string): boolean =>\n Arr.contains(['string', 'json', 'xml', 'html', 'anyAtomicType'], Datatype.canonicalName(base));\n\nconst normalizeWhitespace = (value: string, base: string): string => {\n if (keepsWhitespace(base)) return value;\n const spaced = value.replace(/[\\r\\n\\t]/g, ' ');\n return Datatype.canonicalName(base) === 'normalizedString'\n ? spaced\n : spaced.trim().replace(/ {2,}/g, ' ');\n};\n\ninterface Parsed {\n readonly value: CellValue;\n readonly errors: ReadonlyArray<string>;\n}\n\ninterface ParsedItem {\n readonly value: Option.Option<Datatype.Value>;\n readonly errors: ReadonlyArray<string>;\n}\n\nconst parseItem = (text: string, column: Column): ParsedItem => {\n const s = text === '' ? column.default : text;\n if (Arr.contains(column.null, s)) return { value: Option.none(), errors: [] };\n const language = Option.some(column.lang);\n return Result.match(Datatype.parse(s, column.datatype, language), {\n onSuccess: (value) => ({ value: Option.some(value), errors: [] }),\n onFailure: (errors) => ({\n value: Option.some(\n Datatype.stringValue(\n s,\n Datatype.canonicalName(column.datatype.base) === 'string' ? language : Option.none(),\n ),\n ),\n errors,\n }),\n });\n};\n\n/**\n * Parses a cell's string value with its column (Tabular Data Model §Parsing\n * Cells): whitespace normalization, `default`, `null`, `separator` lists,\n * the datatype and its constraints, and `required`.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseCell = (stringValue: string, column: Column): Parsed => {\n const base = column.datatype.base;\n const normalized = normalizeWhitespace(stringValue, base);\n const s = normalized === '' ? column.default : normalized;\n const required = (value: CellValue, errors: ReadonlyArray<string>): Parsed => ({\n value,\n errors:\n column.required && CellValue.$is('Null')(value)\n ? Arr.append(errors, 'a required cell is null')\n : errors,\n });\n return Option.match(column.separator, {\n onNone: () => {\n const item = parseItem(s, column);\n return required(\n Option.match(item.value, {\n onNone: () => nullValue,\n onSome: (value) => CellValue.Single({ value }),\n }),\n item.errors,\n );\n },\n onSome: (separator) => {\n if (s === '')\n return {\n value: CellValue.List({ values: [] }),\n errors: column.required ? ['a required cell is empty'] : [],\n };\n if (Arr.contains(column.null, s)) return required(nullValue, []);\n const strip = !Arr.contains(['string', 'anyAtomicType'], Datatype.canonicalName(base));\n const items = Arr.map(s.split(separator), (part) =>\n parseItem(strip ? part.trim() : part, column),\n );\n return {\n value: CellValue.List({ values: Arr.getSomes(Arr.map(items, (i) => i.value)) }),\n errors: Arr.flatMap(items, (i) => i.errors),\n };\n },\n });\n};\n\nconst templateValue = (value: CellValue): Option.Option<UriTemplate.Value> =>\n CellValue.$match(value, {\n Null: () => Option.none(),\n Single: ({ value: v }) => Option.some(v.lexical),\n List: ({ values }) => Option.some(Arr.map(values, (v) => v.lexical)),\n });\n\nconst expandTemplate = (\n template: string,\n variables: Readonly<Record<string, UriTemplate.Value>>,\n tableUrl: string,\n): string => {\n const expanded = UriTemplate.expand(template, variables);\n return Url.resolve(\n Option.getOrElse(Vocab.expandPrefixed(expanded), () => expanded),\n tableUrl,\n );\n};\n\n// -----------------------------------------------------------------------------\n// Annotating a table\n// -----------------------------------------------------------------------------\n\n/**\n * Options for annotating tables.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Options {\n /**\n * Validate (default `false`): metadata incompatible with the data and\n * invalid cells are errors rather than warnings, and primary and foreign\n * keys are checked.\n */\n readonly validate?: boolean | undefined;\n}\n\n/**\n * An annotated table and the issues raised while annotating it.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Annotated {\n readonly table: Table;\n readonly issues: ReadonlyArray<Report.Issue>;\n}\n\n/**\n * Annotates one table of a group from its source: reads it with the table's\n * dialect, checks the metadata against the embedded metadata, and parses\n * every cell. Returns the annotated table and its issues.\n *\n * @since 0.1.0\n * @category annotating\n */\nexport const annotate = (\n group: Metadata.TableGroup,\n table: Metadata.Table,\n source: Source,\n options: Options = {},\n): Annotated => {\n const validate = options.validate ?? false;\n const level = validate ? Report.error : Report.warning;\n const schema = Metadata.schemaOfTable(group, table);\n const dialect = Metadata.dialectOfTable(group, table);\n const tableInherited = Metadata.inherit(table.inherited, group.inherited);\n const schemaInherited = Option.match(schema, { onNone: () => ({}), onSome: (s) => s.inherited });\n const lang = Metadata.inherit(schemaInherited, tableInherited).lang ?? 'und';\n const embedded = read(source, dialect, lang);\n const tableDirection = table.tableDirection ?? group.tableDirection ?? 'auto';\n const compatibility = Option.flatMap(schema, (s) =>\n Metadata.checkCompatible(s.columns, embedded.columns, validate),\n );\n const described = Option.match(schema, {\n onNone: () => embedded.columns,\n onSome: (s) => s.columns,\n });\n const real = Arr.filter(described, (c) => !c.isVirtual);\n const virtual = Arr.filter(described, (c) => c.isVirtual);\n const width = Math.max(Arr.length(real), Arr.length(embedded.columns));\n const inherited = [schemaInherited, table.inherited, group.inherited];\n const realColumns = Arr.makeBy(width, (i) =>\n annotateColumn(\n real[i] ?? emptyColumn({}),\n i + 1,\n Option.some(dialect.skipColumns + i + 1),\n inherited,\n tableDirection,\n ),\n );\n const columns = Arr.appendAll(\n realColumns,\n Arr.map(virtual, (c, i) =>\n annotateColumn(c, width + i + 1, Option.none(), inherited, tableDirection),\n ),\n );\n const rowTitles = Option.getOrElse(\n Option.flatMap(schema, (s) => Option.fromNullishOr(s.rowTitles)),\n () => [],\n );\n const issues: Array<Report.Issue> = Arr.fromOption(\n Option.map(compatibility, (message) => level(message, { table: table.url })),\n );\n const rows = Arr.map(embedded.rows, ({ sourceNumber, cells }, index): Row => {\n const parsed = Arr.map(columns, (column, i) =>\n parseCell(column.isVirtual ? '' : (cells[i] ?? ''), column),\n );\n const variables: Record<string, UriTemplate.Value> = Record.fromEntries(\n Arr.flatMap(columns, (c, i) =>\n Arr.fromOption(\n Option.map(templateValue(parsed[i]?.value ?? nullValue), (v) => [c.name, v] as const),\n ),\n ),\n );\n const annotated = Arr.map(columns, (column, i): Cell => {\n const p = parsed[i] ?? { value: nullValue, errors: [] };\n const vars = {\n ...variables,\n _column: String(column.number),\n _sourceColumn: String(Option.getOrElse(column.sourceNumber, () => column.number)),\n _row: String(index + 1),\n _sourceRow: String(sourceNumber),\n _name: Url.decodeName(column.name),\n };\n const expand = (t: Option.Option<string>) =>\n Option.map(t, (template) => expandTemplate(template, vars, table.url));\n Arr.forEach(p.errors, (message) =>\n issues.push(\n level(`${column.name}: ${message}`, {\n table: table.url,\n row: sourceNumber,\n column: Option.getOrElse(column.sourceNumber, () => column.number),\n }),\n ),\n );\n return {\n column: i,\n stringValue: column.isVirtual ? '' : (cells[i] ?? ''),\n value: p.value,\n errors: p.errors,\n aboutUrl: expand(column.aboutUrl),\n propertyUrl: expand(column.propertyUrl),\n valueUrl:\n CellValue.$is('Null')(p.value) && !column.isVirtual\n ? Option.none()\n : expand(column.valueUrl),\n ordered: column.ordered,\n textDirection: column.textDirection,\n };\n });\n const titles = Arr.flatMap(rowTitles, (name) =>\n Option.match(\n Arr.findFirstIndex(columns, (c) => c.name === name),\n {\n onNone: () => [],\n onSome: (i) =>\n CellValue.$match(annotated[i]?.value ?? nullValue, {\n Null: () => [],\n Single: ({ value }) => [value],\n List: ({ values }) => values,\n }),\n },\n ),\n );\n return { number: index + 1, sourceNumber, cells: annotated, titles };\n });\n const common = Arr.isReadonlyArrayNonEmpty(embedded.comments)\n ? {\n ...table.common,\n 'rdfs:comment': Arr.appendAll(\n Arr.ensure(table.common['rdfs:comment'] ?? []),\n Arr.map(embedded.comments, (c): Schema.Json => ({ '@value': c })),\n ),\n }\n : table.common;\n return {\n table: {\n url: table.url,\n id: Option.fromNullishOr(table.id),\n schemaId: Option.flatMap(schema, (s) => Option.fromNullishOr(s.id)),\n isSuppressed: table.isSuppressed,\n tableDirection,\n dialect,\n notes: table.notes,\n common,\n columns,\n rows,\n primaryKey: Option.getOrElse(\n Option.flatMap(schema, (s) => Option.fromNullishOr(s.primaryKey)),\n () => [],\n ),\n foreignKeys: Option.match(schema, { onNone: () => [], onSome: (s) => s.foreignKeys }),\n transformations: Arr.appendAll(table.transformations, group.transformations),\n },\n issues,\n };\n};\n\n// -----------------------------------------------------------------------------\n// Keys\n// -----------------------------------------------------------------------------\n\nconst keyOf = (row: Row, indexes: ReadonlyArray<number>): string =>\n Arr.join(\n Arr.map(indexes, (i) =>\n CellValue.$match(row.cells[i]?.value ?? nullValue, {\n Null: () => '\\u0000',\n Single: ({ value }) => value.lexical,\n List: ({ values }) =>\n Arr.join(\n Arr.map(values, (v) => v.lexical),\n '\\u0001',\n ),\n }),\n ),\n '\\u0002',\n );\n\nconst indexesOf = (\n table: Table,\n names: ReadonlyArray<string>,\n): Option.Option<ReadonlyArray<number>> =>\n Option.all(Arr.map(names, (n) => Arr.findFirstIndex(table.columns, (c) => c.name === n)));\n\nconst countKeys = (table: Table, indexes: ReadonlyArray<number>): HashMap.HashMap<string, number> =>\n Arr.reduce(table.rows, HashMap.empty<string, number>(), (map, row) => {\n const key = keyOf(row, indexes);\n return HashMap.set(map, key, Option.getOrElse(HashMap.get(map, key), () => 0) + 1);\n });\n\n/**\n * Finds the table a foreign key references: by `resource` URL or by\n * `schemaReference` (exactly one table must use that schema).\n *\n * @since 0.1.0\n * @category keys\n */\nexport const referencedTable = (\n tables: ReadonlyArray<Table>,\n reference: Metadata.Reference,\n): Option.Option<Table> => {\n if (reference.resource !== undefined) {\n const url = Url.normalize(reference.resource);\n return Arr.findFirst(tables, (t) => Url.normalize(t.url) === url);\n }\n const schema = reference.schemaReference;\n const matching = Arr.filter(tables, (t) => Option.exists(t.schemaId, (id) => id === schema));\n return Arr.length(matching) === 1 ? Arr.head(matching) : Option.none();\n};\n\n/**\n * Checks that every foreign key of a group references an existing table and\n * columns, returning the errors (these stop processing).\n *\n * @since 0.1.0\n * @category keys\n */\nexport const checkForeignKeyTargets = (tables: ReadonlyArray<Table>): ReadonlyArray<string> =>\n Arr.flatMap(tables, (table) =>\n Arr.flatMap(table.foreignKeys, (fk) =>\n Option.match(referencedTable(tables, fk.reference), {\n onNone: () => [`${table.url}: a foreign key references a table that is not in the group`],\n onSome: (target) =>\n Option.isSome(indexesOf(target, fk.reference.columnReference))\n ? []\n : [`${table.url}: a foreign key references a column that is not in ${target.url}`],\n }),\n ),\n );\n\n/**\n * Validates the primary keys and foreign keys of a group's tables: each row's\n * primary key is unique, and each row's foreign keys reference exactly one\n * row.\n *\n * @since 0.1.0\n * @category keys\n */\nexport const validateKeys = (tables: ReadonlyArray<Table>): ReadonlyArray<Report.Issue> => {\n const primary = Arr.flatMap(tables, (table) =>\n Option.match(indexesOf(table, table.primaryKey), {\n onNone: () => [],\n onSome: (indexes) => {\n if (!Arr.isReadonlyArrayNonEmpty(indexes)) return [];\n const counts = countKeys(table, indexes);\n return Arr.flatMap(table.rows, (row) =>\n Option.getOrElse(HashMap.get(counts, keyOf(row, indexes)), () => 0) > 1\n ? [Report.error('duplicate primary key', { table: table.url, row: row.sourceNumber })]\n : [],\n );\n },\n }),\n );\n const foreign = Arr.flatMap(tables, (table) =>\n Arr.flatMap(table.foreignKeys, (fk) =>\n Option.match(\n Option.all([\n indexesOf(table, fk.columnReference),\n Option.flatMap(referencedTable(tables, fk.reference), (target) =>\n Option.map(\n indexesOf(target, fk.reference.columnReference),\n (ix) => [target, ix] as const,\n ),\n ),\n ]),\n {\n onNone: () => [],\n onSome: ([indexes, [target, targetIndexes]]) => {\n const counts = countKeys(target, targetIndexes);\n return Arr.flatMap(table.rows, (row) => {\n const n = Option.getOrElse(HashMap.get(counts, keyOf(row, indexes)), () => 0);\n return n === 1\n ? []\n : [\n Report.error(\n n === 0\n ? `foreign key references no row of ${target.url}`\n : `foreign key references ${n} rows of ${target.url}`,\n { table: table.url, row: row.sourceNumber },\n ),\n ];\n });\n },\n },\n ),\n ),\n );\n return Arr.appendAll(primary, foreign);\n};\n"],"mappings":"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"}