@graphty/graph-io 0.3.24 → 0.3.26

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 (581) hide show
  1. package/README.md +49 -414
  2. package/dist/chunks/children-CL3Cy0ez.js.map +1 -1
  3. package/dist/chunks/choose-BbJI55dx.js +56 -0
  4. package/dist/chunks/choose-BbJI55dx.js.map +1 -0
  5. package/dist/chunks/constants-BCsFsMj4.js +231 -0
  6. package/dist/chunks/constants-BCsFsMj4.js.map +1 -0
  7. package/dist/chunks/{escape-B-tkk_Cl.js → escape-D0g6NNUy.js} +382 -92
  8. package/dist/chunks/escape-D0g6NNUy.js.map +1 -0
  9. package/dist/chunks/export-BTI4yQgy.js +4333 -0
  10. package/dist/chunks/export-BTI4yQgy.js.map +1 -0
  11. package/dist/chunks/exporter-BMqk5oxW.js +3465 -0
  12. package/dist/chunks/exporter-BMqk5oxW.js.map +1 -0
  13. package/dist/chunks/{importer-eUREhBGj.js → exporter-Cra2GYcN.js} +4969 -3201
  14. package/dist/chunks/exporter-Cra2GYcN.js.map +1 -0
  15. package/dist/chunks/{exporter-BGrsWamJ.js → exporter-Dxh231ZF.js} +38 -229
  16. package/dist/chunks/exporter-Dxh231ZF.js.map +1 -0
  17. package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-tne475KK.js} +22 -20
  18. package/dist/chunks/exporter-tne475KK.js.map +1 -0
  19. package/dist/chunks/importer-90YWhJoF.js +2811 -0
  20. package/dist/chunks/importer-90YWhJoF.js.map +1 -0
  21. package/dist/chunks/{importer-D_e7e7LX.js → importer-Bcl1d4xH.js} +398 -145
  22. package/dist/chunks/importer-Bcl1d4xH.js.map +1 -0
  23. package/dist/chunks/{importer-BWY2FFc5.js → importer-BfIsp1f9.js} +255 -77
  24. package/dist/chunks/importer-BfIsp1f9.js.map +1 -0
  25. package/dist/chunks/{importer-zGLo8Dg_.js → importer-C_TEA1zJ.js} +484 -157
  26. package/dist/chunks/importer-C_TEA1zJ.js.map +1 -0
  27. package/dist/chunks/{importer-DET1tg6s.js → importer-DCjOvO7U.js} +1687 -310
  28. package/dist/chunks/importer-DCjOvO7U.js.map +1 -0
  29. package/dist/chunks/{importer-vi3bSdtw.js → importer-DfVu6j59.js} +509 -76
  30. package/dist/chunks/importer-DfVu6j59.js.map +1 -0
  31. package/dist/chunks/{importer-DIrbbnAf.js → importer-Dku_VAIY.js} +585 -226
  32. package/dist/chunks/importer-Dku_VAIY.js.map +1 -0
  33. package/dist/chunks/json-elements-3tnyt5uZ.js +1225 -0
  34. package/dist/chunks/json-elements-3tnyt5uZ.js.map +1 -0
  35. package/dist/chunks/ontology-export-B9Tcf37D.js +357 -0
  36. package/dist/chunks/ontology-export-B9Tcf37D.js.map +1 -0
  37. package/dist/chunks/{records-dbRkxwaq.js → records-CQXT__mY.js} +298 -114
  38. package/dist/chunks/records-CQXT__mY.js.map +1 -0
  39. package/dist/chunks/{text-Dr0Ifpag.js → text-DmcUs5_Q.js} +29 -11
  40. package/dist/chunks/text-DmcUs5_Q.js.map +1 -0
  41. package/dist/chunks/{writer-C7flM-Ih.js → writer-DxjgHwSe.js} +19 -1
  42. package/dist/chunks/writer-DxjgHwSe.js.map +1 -0
  43. package/dist/csv.js +951 -261
  44. package/dist/csv.js.map +1 -1
  45. package/dist/cx.js +6 -3
  46. package/dist/cx2.js +2 -2
  47. package/dist/cys.js +6 -3
  48. package/dist/dot.js +1 -1
  49. package/dist/gexf.js +554 -122
  50. package/dist/gexf.js.map +1 -1
  51. package/dist/gml.js +342 -85
  52. package/dist/gml.js.map +1 -1
  53. package/dist/graph-io.js +1105 -213
  54. package/dist/graph-io.js.map +1 -1
  55. package/dist/graphml.js +3 -2
  56. package/dist/graphml.js.map +1 -1
  57. package/dist/json.js +3 -2
  58. package/dist/neo4j.js +564 -157
  59. package/dist/neo4j.js.map +1 -1
  60. package/dist/obo.js +6 -3
  61. package/dist/pajek.js +1 -1
  62. package/dist/src/children.d.ts +18 -6
  63. package/dist/src/children.d.ts.map +1 -1
  64. package/dist/src/children.js +6 -3
  65. package/dist/src/children.js.map +1 -1
  66. package/dist/src/common/attributes.d.ts +29 -11
  67. package/dist/src/common/attributes.d.ts.map +1 -1
  68. package/dist/src/common/attributes.js +25 -7
  69. package/dist/src/common/attributes.js.map +1 -1
  70. package/dist/src/common/cell-budget.d.ts +9 -2
  71. package/dist/src/common/cell-budget.d.ts.map +1 -1
  72. package/dist/src/common/cell-budget.js +11 -3
  73. package/dist/src/common/cell-budget.js.map +1 -1
  74. package/dist/src/common/choose.d.ts +19 -0
  75. package/dist/src/common/choose.d.ts.map +1 -0
  76. package/dist/src/common/choose.js +72 -0
  77. package/dist/src/common/choose.js.map +1 -0
  78. package/dist/src/common/codes.d.ts +456 -66
  79. package/dist/src/common/codes.d.ts.map +1 -1
  80. package/dist/src/common/codes.js +458 -66
  81. package/dist/src/common/codes.js.map +1 -1
  82. package/dist/src/common/compare.d.ts +81 -0
  83. package/dist/src/common/compare.d.ts.map +1 -0
  84. package/dist/src/common/compare.js +394 -0
  85. package/dist/src/common/compare.js.map +1 -0
  86. package/dist/src/common/cx-export.d.ts +123 -0
  87. package/dist/src/common/cx-export.d.ts.map +1 -0
  88. package/dist/src/common/cx-export.js +334 -0
  89. package/dist/src/common/cx-export.js.map +1 -0
  90. package/dist/src/common/declared-types.d.ts +22 -2
  91. package/dist/src/common/declared-types.d.ts.map +1 -1
  92. package/dist/src/common/declared-types.js +19 -1
  93. package/dist/src/common/declared-types.js.map +1 -1
  94. package/dist/src/common/direction.d.ts +74 -50
  95. package/dist/src/common/direction.d.ts.map +1 -1
  96. package/dist/src/common/direction.js +47 -27
  97. package/dist/src/common/direction.js.map +1 -1
  98. package/dist/src/common/escape.d.ts +21 -9
  99. package/dist/src/common/escape.d.ts.map +1 -1
  100. package/dist/src/common/escape.js +33 -17
  101. package/dist/src/common/escape.js.map +1 -1
  102. package/dist/src/common/export.d.ts +144 -32
  103. package/dist/src/common/export.d.ts.map +1 -1
  104. package/dist/src/common/export.js +216 -42
  105. package/dist/src/common/export.js.map +1 -1
  106. package/dist/src/common/format.d.ts +23 -1
  107. package/dist/src/common/format.d.ts.map +1 -1
  108. package/dist/src/common/format.js +26 -1
  109. package/dist/src/common/format.js.map +1 -1
  110. package/dist/src/common/ids.d.ts +9 -2
  111. package/dist/src/common/ids.d.ts.map +1 -1
  112. package/dist/src/common/ids.js +6 -2
  113. package/dist/src/common/ids.js.map +1 -1
  114. package/dist/src/common/input.d.ts +122 -28
  115. package/dist/src/common/input.d.ts.map +1 -1
  116. package/dist/src/common/input.js +890 -124
  117. package/dist/src/common/input.js.map +1 -1
  118. package/dist/src/common/json-elements.d.ts +144 -20
  119. package/dist/src/common/json-elements.d.ts.map +1 -1
  120. package/dist/src/common/json-elements.js +868 -188
  121. package/dist/src/common/json-elements.js.map +1 -1
  122. package/dist/src/common/line-format.d.ts +90 -0
  123. package/dist/src/common/line-format.d.ts.map +1 -0
  124. package/dist/src/common/line-format.js +185 -0
  125. package/dist/src/common/line-format.js.map +1 -0
  126. package/dist/src/common/lists.d.ts +6 -1
  127. package/dist/src/common/lists.d.ts.map +1 -1
  128. package/dist/src/common/lists.js +2 -0
  129. package/dist/src/common/lists.js.map +1 -1
  130. package/dist/src/common/ontology-export.d.ts +167 -0
  131. package/dist/src/common/ontology-export.d.ts.map +1 -0
  132. package/dist/src/common/ontology-export.js +359 -0
  133. package/dist/src/common/ontology-export.js.map +1 -0
  134. package/dist/src/common/ontology.d.ts +25 -3
  135. package/dist/src/common/ontology.d.ts.map +1 -1
  136. package/dist/src/common/ontology.js +30 -9
  137. package/dist/src/common/ontology.js.map +1 -1
  138. package/dist/src/common/options.d.ts +62 -12
  139. package/dist/src/common/options.d.ts.map +1 -1
  140. package/dist/src/common/options.js +89 -11
  141. package/dist/src/common/options.js.map +1 -1
  142. package/dist/src/common/plural.d.ts +31 -0
  143. package/dist/src/common/plural.d.ts.map +1 -0
  144. package/dist/src/common/plural.js +46 -0
  145. package/dist/src/common/plural.js.map +1 -0
  146. package/dist/src/common/report.d.ts +72 -14
  147. package/dist/src/common/report.d.ts.map +1 -1
  148. package/dist/src/common/report.js +146 -22
  149. package/dist/src/common/report.js.map +1 -1
  150. package/dist/src/common/temporal.d.ts +22 -5
  151. package/dist/src/common/temporal.d.ts.map +1 -1
  152. package/dist/src/common/temporal.js +13 -2
  153. package/dist/src/common/temporal.js.map +1 -1
  154. package/dist/src/common/text.d.ts +39 -23
  155. package/dist/src/common/text.d.ts.map +1 -1
  156. package/dist/src/common/text.js +51 -21
  157. package/dist/src/common/text.js.map +1 -1
  158. package/dist/src/common/weights.d.ts +37 -4
  159. package/dist/src/common/weights.d.ts.map +1 -1
  160. package/dist/src/common/weights.js +61 -2
  161. package/dist/src/common/weights.js.map +1 -1
  162. package/dist/src/common/writer.d.ts +19 -3
  163. package/dist/src/common/writer.d.ts.map +1 -1
  164. package/dist/src/common/writer.js +30 -2
  165. package/dist/src/common/writer.js.map +1 -1
  166. package/dist/src/common/xml.d.ts +125 -9
  167. package/dist/src/common/xml.d.ts.map +1 -1
  168. package/dist/src/common/xml.js +400 -83
  169. package/dist/src/common/xml.js.map +1 -1
  170. package/dist/src/common/zip.d.ts +44 -4
  171. package/dist/src/common/zip.d.ts.map +1 -1
  172. package/dist/src/common/zip.js +134 -5
  173. package/dist/src/common/zip.js.map +1 -1
  174. package/dist/src/formats/csv/exporter.d.ts +80 -24
  175. package/dist/src/formats/csv/exporter.d.ts.map +1 -1
  176. package/dist/src/formats/csv/exporter.js +145 -32
  177. package/dist/src/formats/csv/exporter.js.map +1 -1
  178. package/dist/src/formats/csv/header.d.ts +38 -9
  179. package/dist/src/formats/csv/header.d.ts.map +1 -1
  180. package/dist/src/formats/csv/header.js +46 -10
  181. package/dist/src/formats/csv/header.js.map +1 -1
  182. package/dist/src/formats/csv/importer.d.ts +187 -37
  183. package/dist/src/formats/csv/importer.d.ts.map +1 -1
  184. package/dist/src/formats/csv/importer.js +835 -204
  185. package/dist/src/formats/csv/importer.js.map +1 -1
  186. package/dist/src/formats/csv/index.d.ts +100 -19
  187. package/dist/src/formats/csv/index.d.ts.map +1 -1
  188. package/dist/src/formats/csv/index.js +94 -21
  189. package/dist/src/formats/csv/index.js.map +1 -1
  190. package/dist/src/formats/csv/records.d.ts +95 -10
  191. package/dist/src/formats/csv/records.d.ts.map +1 -1
  192. package/dist/src/formats/csv/records.js +333 -122
  193. package/dist/src/formats/csv/records.js.map +1 -1
  194. package/dist/src/formats/csv/values.d.ts +1 -0
  195. package/dist/src/formats/csv/values.d.ts.map +1 -1
  196. package/dist/src/formats/csv/values.js +1 -0
  197. package/dist/src/formats/csv/values.js.map +1 -1
  198. package/dist/src/formats/cx/exporter.d.ts +102 -0
  199. package/dist/src/formats/cx/exporter.d.ts.map +1 -0
  200. package/dist/src/formats/cx/exporter.js +1217 -0
  201. package/dist/src/formats/cx/exporter.js.map +1 -0
  202. package/dist/src/formats/cx/importer.d.ts +79 -32
  203. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  204. package/dist/src/formats/cx/importer.js +680 -285
  205. package/dist/src/formats/cx/importer.js.map +1 -1
  206. package/dist/src/formats/cx/index.d.ts +4 -3
  207. package/dist/src/formats/cx/index.d.ts.map +1 -1
  208. package/dist/src/formats/cx/index.js +4 -3
  209. package/dist/src/formats/cx/index.js.map +1 -1
  210. package/dist/src/formats/cx2/exporter.d.ts +29 -11
  211. package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
  212. package/dist/src/formats/cx2/exporter.js +39 -268
  213. package/dist/src/formats/cx2/exporter.js.map +1 -1
  214. package/dist/src/formats/cx2/importer.d.ts +78 -28
  215. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  216. package/dist/src/formats/cx2/importer.js +226 -79
  217. package/dist/src/formats/cx2/importer.js.map +1 -1
  218. package/dist/src/formats/cx2/index.d.ts +2 -1
  219. package/dist/src/formats/cx2/index.d.ts.map +1 -1
  220. package/dist/src/formats/cx2/index.js +2 -1
  221. package/dist/src/formats/cx2/index.js.map +1 -1
  222. package/dist/src/formats/cys/constants.d.ts +66 -17
  223. package/dist/src/formats/cys/constants.d.ts.map +1 -1
  224. package/dist/src/formats/cys/constants.js +59 -18
  225. package/dist/src/formats/cys/constants.js.map +1 -1
  226. package/dist/src/formats/cys/exporter.d.ts +118 -0
  227. package/dist/src/formats/cys/exporter.d.ts.map +1 -0
  228. package/dist/src/formats/cys/exporter.js +1072 -0
  229. package/dist/src/formats/cys/exporter.js.map +1 -0
  230. package/dist/src/formats/cys/importer.d.ts +22 -8
  231. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  232. package/dist/src/formats/cys/importer.js +510 -149
  233. package/dist/src/formats/cys/importer.js.map +1 -1
  234. package/dist/src/formats/cys/index.d.ts +4 -2
  235. package/dist/src/formats/cys/index.d.ts.map +1 -1
  236. package/dist/src/formats/cys/index.js +4 -2
  237. package/dist/src/formats/cys/index.js.map +1 -1
  238. package/dist/src/formats/cys/session.d.ts +46 -7
  239. package/dist/src/formats/cys/session.d.ts.map +1 -1
  240. package/dist/src/formats/cys/session.js +98 -24
  241. package/dist/src/formats/cys/session.js.map +1 -1
  242. package/dist/src/formats/cys/tables.d.ts +9 -2
  243. package/dist/src/formats/cys/tables.d.ts.map +1 -1
  244. package/dist/src/formats/cys/tables.js +29 -7
  245. package/dist/src/formats/cys/tables.js.map +1 -1
  246. package/dist/src/formats/dot/exporter.d.ts +42 -14
  247. package/dist/src/formats/dot/exporter.d.ts.map +1 -1
  248. package/dist/src/formats/dot/exporter.js +56 -29
  249. package/dist/src/formats/dot/exporter.js.map +1 -1
  250. package/dist/src/formats/dot/importer.d.ts +91 -29
  251. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  252. package/dist/src/formats/dot/importer.js +190 -39
  253. package/dist/src/formats/dot/importer.js.map +1 -1
  254. package/dist/src/formats/dot/index.d.ts +2 -1
  255. package/dist/src/formats/dot/index.d.ts.map +1 -1
  256. package/dist/src/formats/dot/index.js +2 -1
  257. package/dist/src/formats/dot/index.js.map +1 -1
  258. package/dist/src/formats/dot/names.d.ts +44 -11
  259. package/dist/src/formats/dot/names.d.ts.map +1 -1
  260. package/dist/src/formats/dot/names.js +44 -11
  261. package/dist/src/formats/dot/names.js.map +1 -1
  262. package/dist/src/formats/dot/tokenizer.d.ts +9 -2
  263. package/dist/src/formats/dot/tokenizer.d.ts.map +1 -1
  264. package/dist/src/formats/dot/tokenizer.js +20 -5
  265. package/dist/src/formats/dot/tokenizer.js.map +1 -1
  266. package/dist/src/formats/gexf/exporter.d.ts +46 -15
  267. package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
  268. package/dist/src/formats/gexf/exporter.js +45 -15
  269. package/dist/src/formats/gexf/exporter.js.map +1 -1
  270. package/dist/src/formats/gexf/importer.d.ts +87 -23
  271. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  272. package/dist/src/formats/gexf/importer.js +471 -90
  273. package/dist/src/formats/gexf/importer.js.map +1 -1
  274. package/dist/src/formats/gexf/index.d.ts +84 -21
  275. package/dist/src/formats/gexf/index.d.ts.map +1 -1
  276. package/dist/src/formats/gexf/index.js +80 -23
  277. package/dist/src/formats/gexf/index.js.map +1 -1
  278. package/dist/src/formats/gexf/schema.d.ts +67 -15
  279. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  280. package/dist/src/formats/gexf/schema.js +59 -13
  281. package/dist/src/formats/gexf/schema.js.map +1 -1
  282. package/dist/src/formats/gml/exporter.d.ts +69 -21
  283. package/dist/src/formats/gml/exporter.d.ts.map +1 -1
  284. package/dist/src/formats/gml/exporter.js +74 -29
  285. package/dist/src/formats/gml/exporter.js.map +1 -1
  286. package/dist/src/formats/gml/importer.d.ts +116 -25
  287. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  288. package/dist/src/formats/gml/importer.js +290 -61
  289. package/dist/src/formats/gml/importer.js.map +1 -1
  290. package/dist/src/formats/gml/index.d.ts +87 -24
  291. package/dist/src/formats/gml/index.d.ts.map +1 -1
  292. package/dist/src/formats/gml/index.js +79 -26
  293. package/dist/src/formats/gml/index.js.map +1 -1
  294. package/dist/src/formats/gml/syntax.d.ts +67 -18
  295. package/dist/src/formats/gml/syntax.d.ts.map +1 -1
  296. package/dist/src/formats/gml/syntax.js +108 -26
  297. package/dist/src/formats/gml/syntax.js.map +1 -1
  298. package/dist/src/formats/graphml/constants.d.ts +174 -44
  299. package/dist/src/formats/graphml/constants.d.ts.map +1 -1
  300. package/dist/src/formats/graphml/constants.js +165 -44
  301. package/dist/src/formats/graphml/constants.js.map +1 -1
  302. package/dist/src/formats/graphml/exporter.d.ts +17 -9
  303. package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
  304. package/dist/src/formats/graphml/exporter.js +33 -12
  305. package/dist/src/formats/graphml/exporter.js.map +1 -1
  306. package/dist/src/formats/graphml/importer.d.ts +19 -7
  307. package/dist/src/formats/graphml/importer.d.ts.map +1 -1
  308. package/dist/src/formats/graphml/importer.js +466 -39
  309. package/dist/src/formats/graphml/importer.js.map +1 -1
  310. package/dist/src/formats/graphml/index.d.ts +2 -1
  311. package/dist/src/formats/graphml/index.d.ts.map +1 -1
  312. package/dist/src/formats/graphml/index.js +2 -1
  313. package/dist/src/formats/graphml/index.js.map +1 -1
  314. package/dist/src/formats/graphml/tree.d.ts +6 -2
  315. package/dist/src/formats/graphml/tree.d.ts.map +1 -1
  316. package/dist/src/formats/graphml/tree.js +6 -2
  317. package/dist/src/formats/graphml/tree.js.map +1 -1
  318. package/dist/src/formats/graphml/yfiles.d.ts +8 -3
  319. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  320. package/dist/src/formats/graphml/yfiles.js +36 -15
  321. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  322. package/dist/src/formats/json/dialect.d.ts +88 -24
  323. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  324. package/dist/src/formats/json/dialect.js +109 -19
  325. package/dist/src/formats/json/dialect.js.map +1 -1
  326. package/dist/src/formats/json/exporter.d.ts +134 -22
  327. package/dist/src/formats/json/exporter.d.ts.map +1 -1
  328. package/dist/src/formats/json/exporter.js +135 -54
  329. package/dist/src/formats/json/exporter.js.map +1 -1
  330. package/dist/src/formats/json/importer.d.ts +173 -52
  331. package/dist/src/formats/json/importer.d.ts.map +1 -1
  332. package/dist/src/formats/json/importer.js +899 -220
  333. package/dist/src/formats/json/importer.js.map +1 -1
  334. package/dist/src/formats/json/index.d.ts +3 -2
  335. package/dist/src/formats/json/index.d.ts.map +1 -1
  336. package/dist/src/formats/json/index.js +3 -2
  337. package/dist/src/formats/json/index.js.map +1 -1
  338. package/dist/src/formats/json/obographs-export.d.ts +68 -0
  339. package/dist/src/formats/json/obographs-export.d.ts.map +1 -0
  340. package/dist/src/formats/json/obographs-export.js +941 -0
  341. package/dist/src/formats/json/obographs-export.js.map +1 -0
  342. package/dist/src/formats/json/obographs.d.ts +26 -0
  343. package/dist/src/formats/json/obographs.d.ts.map +1 -1
  344. package/dist/src/formats/json/obographs.js +297 -80
  345. package/dist/src/formats/json/obographs.js.map +1 -1
  346. package/dist/src/formats/neo4j/exporter.d.ts +109 -21
  347. package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
  348. package/dist/src/formats/neo4j/exporter.js +238 -85
  349. package/dist/src/formats/neo4j/exporter.js.map +1 -1
  350. package/dist/src/formats/neo4j/header.d.ts +17 -4
  351. package/dist/src/formats/neo4j/header.d.ts.map +1 -1
  352. package/dist/src/formats/neo4j/header.js +36 -4
  353. package/dist/src/formats/neo4j/header.js.map +1 -1
  354. package/dist/src/formats/neo4j/importer.d.ts +107 -27
  355. package/dist/src/formats/neo4j/importer.d.ts.map +1 -1
  356. package/dist/src/formats/neo4j/importer.js +415 -63
  357. package/dist/src/formats/neo4j/importer.js.map +1 -1
  358. package/dist/src/formats/neo4j/index.d.ts +73 -23
  359. package/dist/src/formats/neo4j/index.d.ts.map +1 -1
  360. package/dist/src/formats/neo4j/index.js +65 -25
  361. package/dist/src/formats/neo4j/index.js.map +1 -1
  362. package/dist/src/formats/obo/exporter.d.ts +150 -0
  363. package/dist/src/formats/obo/exporter.d.ts.map +1 -0
  364. package/dist/src/formats/obo/exporter.js +1736 -0
  365. package/dist/src/formats/obo/exporter.js.map +1 -0
  366. package/dist/src/formats/obo/importer.d.ts +95 -19
  367. package/dist/src/formats/obo/importer.d.ts.map +1 -1
  368. package/dist/src/formats/obo/importer.js +475 -104
  369. package/dist/src/formats/obo/importer.js.map +1 -1
  370. package/dist/src/formats/obo/index.d.ts +6 -3
  371. package/dist/src/formats/obo/index.d.ts.map +1 -1
  372. package/dist/src/formats/obo/index.js +6 -3
  373. package/dist/src/formats/obo/index.js.map +1 -1
  374. package/dist/src/formats/obo/syntax.d.ts +108 -4
  375. package/dist/src/formats/obo/syntax.d.ts.map +1 -1
  376. package/dist/src/formats/obo/syntax.js +211 -34
  377. package/dist/src/formats/obo/syntax.js.map +1 -1
  378. package/dist/src/formats/pajek/exporter.d.ts +54 -16
  379. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  380. package/dist/src/formats/pajek/exporter.js +66 -34
  381. package/dist/src/formats/pajek/exporter.js.map +1 -1
  382. package/dist/src/formats/pajek/importer.d.ts +84 -22
  383. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  384. package/dist/src/formats/pajek/importer.js +303 -83
  385. package/dist/src/formats/pajek/importer.js.map +1 -1
  386. package/dist/src/formats/pajek/index.d.ts +2 -1
  387. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  388. package/dist/src/formats/pajek/index.js +2 -1
  389. package/dist/src/formats/pajek/index.js.map +1 -1
  390. package/dist/src/formats/pajek/syntax.d.ts +77 -14
  391. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  392. package/dist/src/formats/pajek/syntax.js +183 -51
  393. package/dist/src/formats/pajek/syntax.js.map +1 -1
  394. package/dist/src/formats/xgmml/columns.d.ts +1 -0
  395. package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
  396. package/dist/src/formats/xgmml/columns.js +4 -0
  397. package/dist/src/formats/xgmml/columns.js.map +1 -1
  398. package/dist/src/formats/xgmml/constants.d.ts +186 -56
  399. package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
  400. package/dist/src/formats/xgmml/constants.js +181 -57
  401. package/dist/src/formats/xgmml/constants.js.map +1 -1
  402. package/dist/src/formats/xgmml/document.d.ts +65 -11
  403. package/dist/src/formats/xgmml/document.d.ts.map +1 -1
  404. package/dist/src/formats/xgmml/document.js +157 -28
  405. package/dist/src/formats/xgmml/document.js.map +1 -1
  406. package/dist/src/formats/xgmml/emit.d.ts +61 -3
  407. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  408. package/dist/src/formats/xgmml/emit.js +129 -26
  409. package/dist/src/formats/xgmml/emit.js.map +1 -1
  410. package/dist/src/formats/xgmml/exporter.d.ts +13 -6
  411. package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
  412. package/dist/src/formats/xgmml/exporter.js +20 -21
  413. package/dist/src/formats/xgmml/exporter.js.map +1 -1
  414. package/dist/src/formats/xgmml/importer.d.ts +33 -12
  415. package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
  416. package/dist/src/formats/xgmml/importer.js +35 -72
  417. package/dist/src/formats/xgmml/importer.js.map +1 -1
  418. package/dist/src/formats/xgmml/index.d.ts +1 -0
  419. package/dist/src/formats/xgmml/index.d.ts.map +1 -1
  420. package/dist/src/formats/xgmml/index.js +1 -0
  421. package/dist/src/formats/xgmml/index.js.map +1 -1
  422. package/dist/src/formats/xgmml/values.d.ts +8 -1
  423. package/dist/src/formats/xgmml/values.d.ts.map +1 -1
  424. package/dist/src/formats/xgmml/values.js +7 -2
  425. package/dist/src/formats/xgmml/values.js.map +1 -1
  426. package/dist/src/index.d.ts +23 -18
  427. package/dist/src/index.d.ts.map +1 -1
  428. package/dist/src/index.js +28 -16
  429. package/dist/src/index.js.map +1 -1
  430. package/dist/src/registry.d.ts +478 -92
  431. package/dist/src/registry.d.ts.map +1 -1
  432. package/dist/src/registry.js +807 -88
  433. package/dist/src/registry.js.map +1 -1
  434. package/dist/src/sniff.d.ts +61 -19
  435. package/dist/src/sniff.d.ts.map +1 -1
  436. package/dist/src/sniff.js +121 -29
  437. package/dist/src/sniff.js.map +1 -1
  438. package/dist/src/types.d.ts +362 -112
  439. package/dist/src/types.d.ts.map +1 -1
  440. package/dist/src/types.js +28 -7
  441. package/dist/src/types.js.map +1 -1
  442. package/dist/xgmml.js +2 -2
  443. package/docs/samples/README.md +25 -0
  444. package/docs/samples/got-edges.csv +353 -0
  445. package/docs/samples/got-network.graphml +1384 -0
  446. package/docs/samples/got-nodes.csv +108 -0
  447. package/docs/samples/got.cx +930 -0
  448. package/docs/samples/got.cx2 +465 -0
  449. package/docs/samples/got.gexf +471 -0
  450. package/docs/samples/got.gml +2650 -0
  451. package/docs/samples/got.json +2546 -0
  452. package/docs/samples/got.net +461 -0
  453. package/docs/samples/movies-nodes.csv +9 -0
  454. package/docs/samples/movies-rels.csv +8 -0
  455. package/docs/samples/networks.cys +0 -0
  456. package/docs/samples/proteins.xgmml +9 -0
  457. package/docs/samples/teams.gv +24 -0
  458. package/docs/samples/vehicles.obo +25 -0
  459. package/package.json +9 -4
  460. package/src/children.ts +18 -6
  461. package/src/common/attributes.ts +29 -11
  462. package/src/common/cell-budget.ts +11 -3
  463. package/src/common/choose.ts +89 -0
  464. package/src/common/codes.ts +490 -66
  465. package/src/common/compare.ts +472 -0
  466. package/src/common/cx-export.ts +432 -0
  467. package/src/common/declared-types.ts +38 -4
  468. package/src/common/direction.ts +78 -51
  469. package/src/common/escape.ts +33 -17
  470. package/src/common/export.ts +284 -47
  471. package/src/common/format.ts +30 -1
  472. package/src/common/ids.ts +14 -3
  473. package/src/common/input.ts +1057 -134
  474. package/src/common/json-elements.ts +1034 -198
  475. package/src/common/line-format.ts +249 -0
  476. package/src/common/lists.ts +6 -1
  477. package/src/common/ontology-export.ts +461 -0
  478. package/src/common/ontology.ts +31 -9
  479. package/src/common/options.ts +110 -15
  480. package/src/common/plural.ts +49 -0
  481. package/src/common/report.ts +168 -25
  482. package/src/common/temporal.ts +22 -5
  483. package/src/common/text.ts +62 -23
  484. package/src/common/weights.ts +74 -4
  485. package/src/common/writer.ts +37 -3
  486. package/src/common/xml.ts +477 -88
  487. package/src/common/zip.ts +169 -7
  488. package/src/formats/csv/exporter.ts +201 -46
  489. package/src/formats/csv/header.ts +50 -11
  490. package/src/formats/csv/importer.ts +1133 -245
  491. package/src/formats/csv/index.ts +106 -19
  492. package/src/formats/csv/records.ts +396 -122
  493. package/src/formats/csv/values.ts +1 -0
  494. package/src/formats/cx/exporter.ts +1483 -0
  495. package/src/formats/cx/importer.ts +888 -300
  496. package/src/formats/cx/index.ts +4 -3
  497. package/src/formats/cx2/exporter.ts +61 -338
  498. package/src/formats/cx2/importer.ts +317 -86
  499. package/src/formats/cx2/index.ts +2 -1
  500. package/src/formats/cys/constants.ts +62 -17
  501. package/src/formats/cys/exporter.ts +1368 -0
  502. package/src/formats/cys/importer.ts +659 -157
  503. package/src/formats/cys/index.ts +4 -2
  504. package/src/formats/cys/session.ts +139 -31
  505. package/src/formats/cys/tables.ts +47 -9
  506. package/src/formats/dot/exporter.ts +83 -37
  507. package/src/formats/dot/importer.ts +248 -54
  508. package/src/formats/dot/index.ts +2 -1
  509. package/src/formats/dot/names.ts +44 -11
  510. package/src/formats/dot/tokenizer.ts +25 -6
  511. package/src/formats/gexf/exporter.ts +57 -18
  512. package/src/formats/gexf/importer.ts +636 -105
  513. package/src/formats/gexf/index.ts +90 -21
  514. package/src/formats/gexf/schema.ts +67 -15
  515. package/src/formats/gml/exporter.ts +90 -36
  516. package/src/formats/gml/importer.ts +388 -67
  517. package/src/formats/gml/index.ts +85 -24
  518. package/src/formats/gml/syntax.ts +111 -26
  519. package/src/formats/graphml/constants.ts +178 -44
  520. package/src/formats/graphml/exporter.ts +52 -18
  521. package/src/formats/graphml/importer.ts +640 -60
  522. package/src/formats/graphml/index.ts +2 -1
  523. package/src/formats/graphml/tree.ts +6 -2
  524. package/src/formats/graphml/yfiles.ts +37 -15
  525. package/src/formats/json/dialect.ts +128 -29
  526. package/src/formats/json/exporter.ts +205 -68
  527. package/src/formats/json/importer.ts +1163 -253
  528. package/src/formats/json/index.ts +3 -1
  529. package/src/formats/json/obographs-export.ts +1197 -0
  530. package/src/formats/json/obographs.ts +353 -92
  531. package/src/formats/neo4j/exporter.ts +320 -101
  532. package/src/formats/neo4j/header.ts +44 -6
  533. package/src/formats/neo4j/importer.ts +512 -73
  534. package/src/formats/neo4j/index.ts +75 -23
  535. package/src/formats/obo/exporter.ts +2210 -0
  536. package/src/formats/obo/importer.ts +622 -109
  537. package/src/formats/obo/index.ts +6 -3
  538. package/src/formats/obo/syntax.ts +232 -37
  539. package/src/formats/pajek/exporter.ts +89 -41
  540. package/src/formats/pajek/importer.ts +407 -93
  541. package/src/formats/pajek/index.ts +2 -1
  542. package/src/formats/pajek/syntax.ts +213 -52
  543. package/src/formats/xgmml/columns.ts +10 -0
  544. package/src/formats/xgmml/constants.ts +183 -56
  545. package/src/formats/xgmml/document.ts +212 -34
  546. package/src/formats/xgmml/emit.ts +175 -34
  547. package/src/formats/xgmml/exporter.ts +35 -27
  548. package/src/formats/xgmml/importer.ts +64 -86
  549. package/src/formats/xgmml/index.ts +1 -0
  550. package/src/formats/xgmml/values.ts +11 -3
  551. package/src/index.ts +81 -11
  552. package/src/registry.ts +1121 -135
  553. package/src/sniff.ts +163 -32
  554. package/src/types.ts +385 -114
  555. package/dist/chunks/escape-B-tkk_Cl.js.map +0 -1
  556. package/dist/chunks/export-Bh60Dv-n.js +0 -582
  557. package/dist/chunks/export-Bh60Dv-n.js.map +0 -1
  558. package/dist/chunks/exporter-BGrsWamJ.js.map +0 -1
  559. package/dist/chunks/exporter-DIeGJXAZ.js.map +0 -1
  560. package/dist/chunks/importer-BWY2FFc5.js.map +0 -1
  561. package/dist/chunks/importer-DD-xv9_Y.js +0 -1471
  562. package/dist/chunks/importer-DD-xv9_Y.js.map +0 -1
  563. package/dist/chunks/importer-DET1tg6s.js.map +0 -1
  564. package/dist/chunks/importer-DEcKhsmQ.js +0 -1614
  565. package/dist/chunks/importer-DEcKhsmQ.js.map +0 -1
  566. package/dist/chunks/importer-DIrbbnAf.js.map +0 -1
  567. package/dist/chunks/importer-D_e7e7LX.js.map +0 -1
  568. package/dist/chunks/importer-eUREhBGj.js.map +0 -1
  569. package/dist/chunks/importer-vi3bSdtw.js.map +0 -1
  570. package/dist/chunks/importer-zGLo8Dg_.js.map +0 -1
  571. package/dist/chunks/json-elements-DDS8N2Dd.js +0 -779
  572. package/dist/chunks/json-elements-DDS8N2Dd.js.map +0 -1
  573. package/dist/chunks/ontology-BnrJ4I98.js +0 -113
  574. package/dist/chunks/ontology-BnrJ4I98.js.map +0 -1
  575. package/dist/chunks/records-dbRkxwaq.js.map +0 -1
  576. package/dist/chunks/report-B1z4WT9e.js +0 -2372
  577. package/dist/chunks/report-B1z4WT9e.js.map +0 -1
  578. package/dist/chunks/text-Dr0Ifpag.js.map +0 -1
  579. package/dist/chunks/weights-Dzba96G3.js +0 -176
  580. package/dist/chunks/weights-Dzba96G3.js.map +0 -1
  581. package/dist/chunks/writer-C7flM-Ih.js.map +0 -1
@@ -14,12 +14,19 @@
14
14
  import { INVALID_INDEX } from "@graphty/graph-format";
15
15
  import { declareResolved } from "../../common/attributes.js";
16
16
  import { compactOboIri, OBO_NODE_COLUMNS, oboColumnDecl, OBOGRAPHS_PREDICATE_TAGS, PLACEHOLDER_COLUMN, synonymScopeOf, } from "../../common/ontology.js";
17
+ import { agree, plural } from "../../common/plural.js";
17
18
  import { hasKey, isJsonObject } from "./dialect.js";
18
19
  import { chosenGraph, JSON_ISSUE } from "./importer.js";
19
- /** The node keys the schema defines; any other key goes to `obo.unrecognized`. */
20
- const NODE_KEYS = new Set(["id", "lbl", "type", "propertyType", "meta"]);
21
- /** The `meta` keys mapped onto columns; any other key goes to `obo.unrecognized` as `meta.<key>`. */
22
- const META_KEYS = new Set([
20
+ /**
21
+ * The node keys the schema defines; any other key goes to `obo.unrecognized`.
22
+ * @category Plugin helpers
23
+ */
24
+ export const NODE_KEYS = new Set(["id", "lbl", "type", "propertyType", "meta"]);
25
+ /**
26
+ * The `meta` keys mapped onto columns; any other key goes to `obo.unrecognized` as `meta.<key>`.
27
+ * @category Plugin helpers
28
+ */
29
+ export const META_KEYS = new Set([
23
30
  "definition",
24
31
  "comments",
25
32
  "subsets",
@@ -28,21 +35,30 @@ const META_KEYS = new Set([
28
35
  "basicPropertyValues",
29
36
  "deprecated",
30
37
  ]);
31
- /** The OBO frame type of an OBO Graphs node type. */
32
- const FRAME_TYPES = Object.freeze({
38
+ /**
39
+ * The OBO frame type of an OBO Graphs node type.
40
+ * @category Plugin helpers
41
+ */
42
+ export const FRAME_TYPES = Object.freeze({
33
43
  CLASS: "Term",
34
44
  INDIVIDUAL: "Instance",
35
45
  PROPERTY: "Typedef",
36
46
  });
37
- /** The OBO name of the predicates OBO Graphs writes without an IRI. */
38
- const BUILTIN_PREDICATES = Object.freeze({
47
+ /**
48
+ * The OBO name of the predicates OBO Graphs writes without an IRI.
49
+ * @category Plugin helpers
50
+ */
51
+ export const BUILTIN_PREDICATES = Object.freeze({
39
52
  is_a: "is_a",
40
53
  subPropertyOf: "is_a",
41
54
  type: "instance_of",
42
55
  inverseOf: "inverse_of",
43
56
  });
44
- /** Predicates that relate two properties (metadata under typedefs "metadata"). */
45
- const PROPERTY_PREDICATES = new Set(["subPropertyOf", "inverseOf"]);
57
+ /**
58
+ * Predicates that relate two properties (metadata under typedefs "metadata").
59
+ * @category Plugin helpers
60
+ */
61
+ export const PROPERTY_PREDICATES = new Set(["subPropertyOf", "inverseOf"]);
46
62
  /** Writes the OBO vocabulary columns, declaring each on first use. */
47
63
  class ColumnWriter {
48
64
  /**
@@ -88,6 +104,15 @@ class ColumnWriter {
88
104
  return handle;
89
105
  }
90
106
  }
107
+ /** The axiom sections of an OBO Graphs graph, each an array (kept verbatim in the metadata). */
108
+ const AXIOM_KEYS = [
109
+ "logicalDefinitionAxioms",
110
+ "equivalentNodesSets",
111
+ "domainRangeAxioms",
112
+ "propertyChainAxioms",
113
+ ];
114
+ /** The edge keys the schema defines (`subj` is the README's outdated spelling of `sub`). */
115
+ const EDGE_KEYS = new Set(["sub", "subj", "pred", "obj", "meta"]);
91
116
  /**
92
117
  * The id rule and the property table of one graph: PROPERTY nodes are found first, so an edge's
93
118
  * predicate is named by the shorthand of the property it names wherever that property stands.
@@ -98,8 +123,13 @@ class ColumnWriter {
98
123
  function vocabularyOf(nodes, oboIds) {
99
124
  const shorthands = new Map();
100
125
  const propertyIds = new Set();
126
+ const classIds = new Set();
101
127
  for (const node of nodes) {
102
- if (!isJsonObject(node) || typeof node.id !== "string" || node.type !== "PROPERTY") {
128
+ if (!isJsonObject(node) || typeof node.id !== "string") {
129
+ continue;
130
+ }
131
+ if (node.type !== "PROPERTY") {
132
+ classIds.add(node.id);
103
133
  continue;
104
134
  }
105
135
  propertyIds.add(node.id);
@@ -112,41 +142,77 @@ function vocabularyOf(nodes, oboIds) {
112
142
  return {
113
143
  id: (iri) => (oboIds === "curie" ? (shorthands.get(iri) ?? compactOboIri(iri)) : iri),
114
144
  relation: (pred) => BUILTIN_PREDICATES[pred] ?? shorthands.get(pred) ?? compact(pred),
115
- isProperty: (iri) => propertyIds.has(iri),
116
- properties: {},
145
+ isProperty: (iri) => propertyIds.has(iri) && !classIds.has(iri),
146
+ isClass: (iri) => classIds.has(iri),
147
+ properties: Object.create(null),
148
+ written: new Map(),
117
149
  };
118
150
  }
119
151
  /**
120
- * The well-formed `basicPropertyValues` of a node's meta.
152
+ * The well-formed `basicPropertyValues` of a node's meta, each malformed entry reported when a
153
+ * context is given (the vocabulary pre-pass reads them silently; writeMeta reports them).
121
154
  * @param meta - the node's meta, or anything
155
+ * @param ctx - the context to report through, or null
156
+ * @param element - the node's name in messages
122
157
  * @returns the entries with a string pred and val
123
158
  */
124
- function basicValues(meta) {
125
- if (!isJsonObject(meta) || !Array.isArray(meta.basicPropertyValues)) {
159
+ function basicValues(meta, ctx = null, element = "") {
160
+ if (!isJsonObject(meta) || meta.basicPropertyValues === undefined || meta.basicPropertyValues === null) {
126
161
  return [];
127
162
  }
128
- return meta.basicPropertyValues.filter((pv) => isJsonObject(pv) && typeof pv.pred === "string" && typeof pv.val === "string");
163
+ const path = `${element}.meta.basicPropertyValues`;
164
+ if (!Array.isArray(meta.basicPropertyValues)) {
165
+ if (ctx !== null) {
166
+ badValue(ctx, `${path} must be an array; it is dropped`, path);
167
+ }
168
+ return [];
169
+ }
170
+ const out = [];
171
+ meta.basicPropertyValues.forEach((pv, j) => {
172
+ if (isJsonObject(pv) && typeof pv.pred === "string" && typeof pv.val === "string") {
173
+ out.push(pv);
174
+ }
175
+ else if (ctx !== null) {
176
+ badValue(ctx, `${path}[${j}] needs a string pred and a string val; it is dropped`, `${path}[${j}]`);
177
+ }
178
+ });
179
+ return out;
129
180
  }
130
181
  /**
131
- * The strings of an array, or of an array of `{ val }` records.
132
- * @param value - the array, or anything
182
+ * The strings of an array, or of an array of `{ val }` records, each item that is neither
183
+ * reported (E_BAD_VALUE) and dropped, and a value that is not an array reported whole.
184
+ * @param ctx - the context
185
+ * @param value - the array, or anything (undefined and null: none)
186
+ * @param path - the field's path in messages
133
187
  * @returns the strings
134
188
  */
135
- function strings(value) {
189
+ function strings(ctx, value, path) {
190
+ if (value === undefined || value === null) {
191
+ return [];
192
+ }
136
193
  if (!Array.isArray(value)) {
194
+ badValue(ctx, `${path} must be an array; it is dropped`, path);
137
195
  return [];
138
196
  }
139
- return value.flatMap((item) => {
197
+ const out = [];
198
+ value.forEach((item, j) => {
140
199
  if (typeof item === "string") {
141
- return [item];
200
+ out.push(item);
201
+ }
202
+ else if (isJsonObject(item) && typeof item.val === "string") {
203
+ out.push(item.val);
204
+ }
205
+ else {
206
+ badValue(ctx, `${path}[${j}] is not a string or a { val } record; it is dropped`, `${path}[${j}]`);
142
207
  }
143
- return isJsonObject(item) && typeof item.val === "string" ? [item.val] : [];
144
208
  });
209
+ return out;
145
210
  }
146
211
  /**
147
212
  * Read the chosen graph of an OBO Graphs document into the sink.
148
213
  * @param ctx - the import context
149
214
  * @param root - the document
215
+ * @category Plugin helpers
150
216
  */
151
217
  export function importObographs(ctx, root) {
152
218
  const graph = chosenGraph(ctx, root, "OBO Graphs");
@@ -167,6 +233,12 @@ export function importObographs(ctx, root) {
167
233
  graphMeta[key] = graph[key];
168
234
  }
169
235
  }
236
+ for (const key of AXIOM_KEYS) {
237
+ const axioms = graph[key];
238
+ if (axioms !== undefined && axioms !== null && !Array.isArray(axioms)) {
239
+ badValue(ctx, `the graph's ${key} must be an array; it is kept as written`, key);
240
+ }
241
+ }
170
242
  const document = {};
171
243
  for (const key of Object.keys(root)) {
172
244
  if (key !== "graphs") {
@@ -221,34 +293,39 @@ function readNode(ctx, columns, vocabulary, record, element) {
221
293
  ctx.badElement("node", element);
222
294
  return;
223
295
  }
224
- if (typeof record.id !== "string") {
296
+ if (typeof record.id !== "string" || record.id.length === 0) {
225
297
  if (record.id === undefined) {
226
298
  ctx.coerceId(undefined, element);
227
299
  }
300
+ else if (record.id === "") {
301
+ ctx.report.error("missing-value", JSON_ISSUE.MISSING_ID, `${element} has an empty id; it is skipped`, {
302
+ element,
303
+ });
304
+ }
228
305
  else {
229
306
  badValue(ctx, `${element}.id must be a string; the node is skipped`);
230
307
  }
231
308
  ctx.countSkipped("node");
232
309
  return;
233
310
  }
311
+ if (typeof record.type === "string" && FRAME_TYPES[record.type] === undefined) {
312
+ ctx.report.warnOnce("unsupported", JSON_ISSUE.UNKNOWN_ELEMENT, `${element}: node type ${JSON.stringify(record.type)} is not CLASS, INDIVIDUAL or PROPERTY; kept as written`, { element: record.type }, `${JSON_ISSUE.UNKNOWN_ELEMENT}:type:${record.type}`);
313
+ }
234
314
  if (record.type === "PROPERTY" && ctx.json.typedefs === "metadata") {
235
- const shorthand = vocabulary.id(record.id) === record.id ? undefined : vocabulary.id(record.id);
236
- const entry = {};
237
- for (const [key, value] of Object.entries({
238
- lbl: record.lbl,
239
- propertyType: record.propertyType,
240
- shorthand,
241
- meta: record.meta,
242
- })) {
243
- if (value !== undefined) {
244
- entry[key] = value;
245
- }
246
- }
247
- vocabulary.properties[record.id] = entry;
315
+ readProperty(ctx, vocabulary, record, record.id, element);
248
316
  return;
249
317
  }
250
- const id = ctx.coerceId(vocabulary.id(record.id), element);
251
- const row = id === null ? -1 : ctx.pushNode(id, element);
318
+ const compacted = vocabulary.id(record.id);
319
+ const id = ctx.coerceId(compacted, element);
320
+ // two ids that differ only by IRI compaction (the PURL and its CURIE) meet here
321
+ const earlier = vocabulary.written.get(compacted);
322
+ if (earlier === undefined) {
323
+ vocabulary.written.set(compacted, record.id);
324
+ }
325
+ const why = earlier === undefined || earlier === record.id
326
+ ? ""
327
+ : ` (${earlier} and ${record.id} meet only after IRI compaction; oboIds "iri" keeps them apart)`;
328
+ const row = id === null ? -1 : ctx.pushNode(id, element, why);
252
329
  if (row < 0) {
253
330
  return;
254
331
  }
@@ -259,6 +336,33 @@ function readNode(ctx, columns, vocabulary, record, element) {
259
336
  ctx.report.recordError(err, { element: record.id });
260
337
  }
261
338
  }
339
+ /**
340
+ * Keep a PROPERTY node in the metadata (typedefs "metadata"), the first of a repeated id.
341
+ * @param ctx - the context
342
+ * @param vocabulary - the graph's vocabulary
343
+ * @param record - the node record
344
+ * @param iri - its id
345
+ * @param element - its name in messages
346
+ */
347
+ function readProperty(ctx, vocabulary, record, iri, element) {
348
+ if (Object.hasOwn(vocabulary.properties, iri)) {
349
+ ctx.report.warning("merged", JSON_ISSUE.DUPLICATE_NODE, `${element}: property ${JSON.stringify(iri)} is declared again; the first declaration is kept`, { element });
350
+ return;
351
+ }
352
+ const shorthand = vocabulary.id(iri) === iri ? undefined : vocabulary.id(iri);
353
+ const entry = {};
354
+ for (const [key, value] of Object.entries({
355
+ lbl: record.lbl,
356
+ propertyType: record.propertyType,
357
+ shorthand,
358
+ meta: record.meta,
359
+ })) {
360
+ if (value !== undefined) {
361
+ entry[key] = value;
362
+ }
363
+ }
364
+ vocabulary.properties[iri] = entry;
365
+ }
262
366
  /**
263
367
  * Write a node's fields and meta onto the OBO columns.
264
368
  * @param ctx - the context
@@ -289,7 +393,7 @@ function writeNode(ctx, columns, vocabulary, record, row, element) {
289
393
  }
290
394
  const { meta } = record;
291
395
  if (isJsonObject(meta)) {
292
- writeMeta(columns, vocabulary, meta, row, unrecognized);
396
+ writeMeta(ctx, columns, vocabulary, meta, row, unrecognized, element);
293
397
  }
294
398
  else if (meta !== undefined && meta !== null) {
295
399
  badValue(ctx, `${element}.meta must be an object`);
@@ -300,77 +404,161 @@ function writeNode(ctx, columns, vocabulary, record, row, element) {
300
404
  }
301
405
  /**
302
406
  * Write a node's `meta` onto the OBO columns (design 4.6): definition, comments, subsets, xrefs,
303
- * synonyms, deprecated, and the basicPropertyValues mapped back to the OBO tag they came from.
407
+ * synonyms, deprecated, and the basicPropertyValues mapped back to the OBO tag they came from. A
408
+ * field of the wrong JSON type is reported and dropped; a nested `meta` (axiom annotations) of
409
+ * a definition or a property value is kept in `obo.unrecognized`.
410
+ * @param ctx - the context
304
411
  * @param columns - the column writer
305
412
  * @param vocabulary - the graph's vocabulary
306
413
  * @param meta - the meta record
307
414
  * @param row - the node index
308
415
  * @param unrecognized - where keys without a column go
416
+ * @param element - the node's name in messages
309
417
  */
310
- function writeMeta(columns, vocabulary, meta, row, unrecognized) {
418
+ function writeMeta(ctx, columns, vocabulary, meta, row, unrecognized, element) {
419
+ const path = `${element}.meta`;
311
420
  const { definition } = meta;
312
- if (isJsonObject(definition) && typeof definition.val === "string") {
313
- columns.node("def", row, definition.val);
314
- columns.node("def.xrefs", row, strings(definition.xrefs));
421
+ if (isJsonObject(definition)) {
422
+ const xrefs = strings(ctx, definition.xrefs, `${path}.definition.xrefs`);
423
+ if (typeof definition.val === "string") {
424
+ columns.node("def", row, definition.val);
425
+ columns.node("def.xrefs", row, xrefs);
426
+ }
427
+ else {
428
+ badValue(ctx, `${path}.definition has no string val; it is dropped`, `${path}.definition.val`);
429
+ }
430
+ if (definition.meta !== undefined) {
431
+ unrecognized["meta.definition.meta"] = definition.meta;
432
+ }
433
+ }
434
+ else if (definition !== undefined && definition !== null) {
435
+ badValue(ctx, `${path}.definition must be an object with a val; it is dropped`, `${path}.definition`);
315
436
  }
316
- const comments = strings(meta.comments);
437
+ const comments = strings(ctx, meta.comments, `${path}.comments`);
317
438
  if (comments.length > 0) {
318
439
  columns.node("comment", row, comments.join("\n"));
319
440
  }
320
- const subsets = strings(meta.subsets).map((s) => vocabulary.id(s));
441
+ const subsets = strings(ctx, meta.subsets, `${path}.subsets`).map((s) => vocabulary.id(s));
321
442
  if (subsets.length > 0) {
322
443
  columns.node("subset", row, subsets);
323
444
  }
324
- const xrefs = strings(meta.xrefs);
445
+ const xrefs = strings(ctx, meta.xrefs, `${path}.xrefs`);
325
446
  if (xrefs.length > 0) {
326
447
  columns.node("xref", row, xrefs);
327
448
  }
328
- if (Array.isArray(meta.synonyms) && meta.synonyms.length > 0) {
329
- columns.node("synonym", row, meta.synonyms.filter(isJsonObject).map((s) => ({
330
- text: typeof s.val === "string" ? s.val : null,
331
- scope: typeof s.pred === "string" ? synonymScopeOf(s.pred) : null,
332
- type: typeof s.synonymType === "string" ? vocabulary.id(s.synonymType) : null,
333
- xrefs: strings(s.xrefs),
334
- })));
449
+ const synonyms = synonymsOf(ctx, vocabulary, meta.synonyms, `${path}.synonyms`);
450
+ if (synonyms.length > 0) {
451
+ columns.node("synonym", row, synonyms);
335
452
  }
336
453
  if (typeof meta.deprecated === "boolean") {
337
454
  columns.node("is_obsolete", row, meta.deprecated);
338
455
  }
339
- writePropertyValues(columns, vocabulary, basicValues(meta), row);
456
+ else if (meta.deprecated !== undefined && meta.deprecated !== null) {
457
+ badValue(ctx, `${path}.deprecated must be a boolean; it is dropped`, `${path}.deprecated`);
458
+ }
459
+ writePropertyValues(ctx, columns, vocabulary, meta, row, unrecognized, element);
340
460
  for (const key of Object.keys(meta)) {
341
461
  if (!META_KEYS.has(key)) {
342
462
  unrecognized[`meta.${key}`] = meta[key];
343
463
  }
344
464
  }
345
465
  }
466
+ /**
467
+ * The synonyms of a node's meta as the OBO `synonym` items: each entry that is not an object or
468
+ * has no string val reported and dropped, a predicate that is not one of the four scopes kept with
469
+ * scope null (W_UNKNOWN_ELEMENT once per predicate), a nested `meta` kept on the item.
470
+ * @param ctx - the context
471
+ * @param vocabulary - the graph's vocabulary
472
+ * @param value - the `synonyms` field
473
+ * @param path - its path in messages
474
+ * @returns the items
475
+ */
476
+ function synonymsOf(ctx, vocabulary, value, path) {
477
+ if (value === undefined || value === null) {
478
+ return [];
479
+ }
480
+ if (!Array.isArray(value)) {
481
+ badValue(ctx, `${path} must be an array; it is dropped`, path);
482
+ return [];
483
+ }
484
+ const out = [];
485
+ value.forEach((s, j) => {
486
+ const at = `${path}[${j}]`;
487
+ if (!isJsonObject(s)) {
488
+ badValue(ctx, `${at} is not an object; it is dropped`, at);
489
+ return;
490
+ }
491
+ if (typeof s.val !== "string") {
492
+ badValue(ctx, `${at} has no string val; it is dropped`, `${at}.val`);
493
+ return;
494
+ }
495
+ const scope = typeof s.pred === "string" ? synonymScopeOf(s.pred) : null;
496
+ if (scope === null && typeof s.pred === "string") {
497
+ ctx.report.warnOnce("unsupported", JSON_ISSUE.UNKNOWN_ELEMENT, `${at}: synonym predicate ${JSON.stringify(s.pred)} is not one of the four scopes; kept with scope null`, { element: s.pred }, `${JSON_ISSUE.UNKNOWN_ELEMENT}:pred:${s.pred}`);
498
+ }
499
+ const item = { text: s.val, scope, type: null, xrefs: strings(ctx, s.xrefs, `${at}.xrefs`) };
500
+ if (typeof s.synonymType === "string") {
501
+ item.type = vocabulary.id(s.synonymType);
502
+ }
503
+ else if (s.synonymType !== undefined && s.synonymType !== null) {
504
+ badValue(ctx, `${at}.synonymType must be a string; it is dropped`, `${at}.synonymType`);
505
+ }
506
+ if (s.meta !== undefined) {
507
+ item.meta = s.meta;
508
+ }
509
+ out.push(item);
510
+ });
511
+ return out;
512
+ }
346
513
  /**
347
514
  * Write the basicPropertyValues: the ones an OBO tag maps to onto that tag's column (lists for
348
- * alt_id, replaced_by, consider), the rest into `property_value`.
515
+ * alt_id, replaced_by, consider; the first value of a single-valued tag, a repeat warned as the
516
+ * .obo importer warns it), the rest into `property_value`.
517
+ * @param ctx - the context
349
518
  * @param columns - the column writer
350
519
  * @param vocabulary - the graph's vocabulary
351
- * @param values - the entries
520
+ * @param meta - the node's meta
352
521
  * @param row - the node index
522
+ * @param unrecognized - where the nested meta of a mapped value goes
523
+ * @param element - the node's name in messages
353
524
  */
354
- function writePropertyValues(columns, vocabulary, values, row) {
525
+ function writePropertyValues(ctx, columns, vocabulary, meta, row, unrecognized, element) {
355
526
  const lists = new Map();
527
+ const singles = new Map();
356
528
  const others = [];
357
- for (const { pred, val } of values) {
529
+ const values = basicValues(meta, ctx, element);
530
+ values.forEach(({ pred, val, meta: nested }, j) => {
358
531
  const tag = OBOGRAPHS_PREDICATE_TAGS.get(pred);
359
532
  if (tag === "shorthand") {
360
- continue;
533
+ return;
361
534
  }
362
535
  if (tag === undefined) {
363
- others.push({ relation: vocabulary.id(pred), value: val, datatype: null });
536
+ const item = { relation: vocabulary.id(pred), value: val, datatype: null };
537
+ if (nested !== undefined) {
538
+ item.meta = nested;
539
+ }
540
+ others.push(item);
541
+ return;
364
542
  }
365
- else if (OBO_NODE_COLUMNS[tag].dtype === "list") {
543
+ if (nested !== undefined) {
544
+ unrecognized[`meta.basicPropertyValues[${j}].meta`] = nested;
545
+ }
546
+ if (OBO_NODE_COLUMNS[tag].dtype === "list") {
366
547
  const list = lists.get(tag) ?? [];
367
548
  list.push(tag === "alt_id" ? val : vocabulary.id(val));
368
549
  lists.set(tag, list);
369
550
  }
551
+ else if (singles.get(tag) === val) {
552
+ // an identical value counts once, as an identical .obo clause does
553
+ }
554
+ else if (singles.has(tag)) {
555
+ ctx.report.warning("validation-error", JSON_ISSUE.DUPLICATE_ATTRIBUTE, `${element}: a second ${tag} (${JSON.stringify(val)}); the first is kept`, { element: tag });
556
+ }
370
557
  else {
558
+ singles.set(tag, val);
371
559
  columns.node(tag, row, val);
372
560
  }
373
- }
561
+ });
374
562
  for (const [tag, list] of lists) {
375
563
  columns.node(tag, row, list);
376
564
  }
@@ -382,9 +570,38 @@ function writePropertyValues(columns, vocabulary, values, row) {
382
570
  * Report a field of the wrong JSON type (the field is left unset, the element kept).
383
571
  * @param ctx - the context
384
572
  * @param message - what is wrong
573
+ * @param element - the field's path, when known
574
+ */
575
+ function badValue(ctx, message, element) {
576
+ ctx.report.error("validation-error", JSON_ISSUE.BAD_VALUE, message, element === undefined ? undefined : { element });
577
+ }
578
+ /**
579
+ * An edge's subject: `sub`, else the README's outdated `subj` (warned once), and a warning when
580
+ * both are present and differ; every key outside the schema warned once per key name.
581
+ * @param ctx - the context
582
+ * @param record - the edge record
583
+ * @param element - its name in messages
584
+ * @returns the subject value, unchecked
385
585
  */
386
- function badValue(ctx, message) {
387
- ctx.report.error("validation-error", JSON_ISSUE.BAD_VALUE, message);
586
+ function subjectOf(ctx, record, element) {
587
+ const { report } = ctx;
588
+ for (const key of Object.keys(record)) {
589
+ if (!EDGE_KEYS.has(key)) {
590
+ report.warnOnce("unsupported", JSON_ISSUE.UNREAD_KEY, `${element}: the key ${JSON.stringify(key)} is not part of an OBO Graphs edge; it is not read`, { element: `${element}.${key}` }, `${JSON_ISSUE.UNREAD_KEY}:edge:${key}`);
591
+ }
592
+ }
593
+ if (!hasKey(record, "sub")) {
594
+ if (hasKey(record, "subj")) {
595
+ report.warnOnce("coercion", JSON_ISSUE.OBOGRAPHS_SUBJ, `${element} uses the outdated key subj; read as sub`, {
596
+ element,
597
+ });
598
+ }
599
+ return record.subj;
600
+ }
601
+ if (hasKey(record, "subj") && record.subj !== record.sub) {
602
+ report.warning("coercion", JSON_ISSUE.OBOGRAPHS_SUBJ, `${element} has both sub and the outdated subj, which differ; sub is read and subj ignored`, { element });
603
+ }
604
+ return record.sub;
388
605
  }
389
606
  /**
390
607
  * Read the edges: the ones between properties into the metadata (typedefs "metadata"), the rest
@@ -422,21 +639,18 @@ function readEdges(ctx, columns, vocabulary, edges) {
422
639
  ctx.badElement("edge", element);
423
640
  continue;
424
641
  }
425
- const subKey = hasKey(record, "sub") ? "sub" : "subj";
426
- if (subKey === "subj" && hasKey(record, "subj")) {
427
- report.warnOnce("coercion", JSON_ISSUE.OBOGRAPHS_SUBJ, `${element} uses the outdated key subj; read as sub`, {
428
- element,
429
- });
430
- }
431
- const sub = record[subKey];
642
+ const sub = subjectOf(ctx, record, element);
432
643
  const { obj, pred } = record;
433
- if (typeof sub !== "string" || typeof obj !== "string") {
434
- ctx.missingEndpoint(element, typeof sub === "string" ? "obj" : "sub");
644
+ if (typeof sub !== "string" || typeof obj !== "string" || sub.length === 0 || obj.length === 0) {
645
+ ctx.missingEndpoint(element, typeof sub === "string" && sub.length > 0 ? "obj" : "sub");
435
646
  continue;
436
647
  }
437
- const between = (typeof pred === "string" && PROPERTY_PREDICATES.has(pred)) ||
438
- vocabulary.isProperty(sub) ||
439
- vocabulary.isProperty(obj);
648
+ // only an edge between two properties is property metadata; one that touches a class stays
649
+ const between = (vocabulary.isProperty(sub) && vocabulary.isProperty(obj)) ||
650
+ (typeof pred === "string" &&
651
+ PROPERTY_PREDICATES.has(pred) &&
652
+ !vocabulary.isClass(sub) &&
653
+ !vocabulary.isClass(obj));
440
654
  if (between && ctx.json.typedefs === "metadata") {
441
655
  propertyEdges.push(record);
442
656
  continue;
@@ -459,6 +673,9 @@ function readEdges(ctx, columns, vocabulary, edges) {
459
673
  if (isJsonObject(record.meta)) {
460
674
  columns.edge("meta", edge, record.meta);
461
675
  }
676
+ else if (record.meta !== undefined && record.meta !== null) {
677
+ badValue(ctx, `${element}.meta must be an object; it is dropped`, `${element}.meta`);
678
+ }
462
679
  }
463
680
  catch (err) {
464
681
  ctx.skip(err, "edge", element);
@@ -468,8 +685,8 @@ function readEdges(ctx, columns, vocabulary, edges) {
468
685
  const shown = [...new Set(dangling)].slice(0, 5).join(", ");
469
686
  const action = ctx.options.addMissingNodes
470
687
  ? "each became a placeholder node (graphty.placeholder)"
471
- : `${dropped} edge(s) to them were dropped (addMissingNodes false)`;
472
- report.warning("validation-error", JSON_ISSUE.DANGLING_REFERENCE, `${new Set(dangling).size} edge endpoint(s) missing from nodes: ${shown}; ${action}`, { element: dangling[0] });
688
+ : `${dropped} edge${plural(dropped)} to them ${agree(dropped, "was", "were")} dropped (addMissingNodes false)`;
689
+ report.warning("validation-error", JSON_ISSUE.DANGLING_REFERENCE, `${new Set(dangling).size} edge endpoint${plural(new Set(dangling).size)} missing from nodes: ${shown}; ${action}`, { element: dangling[0] });
473
690
  }
474
691
  return propertyEdges;
475
692
  }
@@ -1 +1 @@
1
- {"version":3,"file":"obographs.js","sourceRoot":"","sources":["../../../../src/formats/json/obographs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obographs.js","sourceRoot":"","sources":["../../../../src/formats/json/obographs.ts"],"names":[],"mappings":"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"}