glossarist 0.4.50 → 0.4.52
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.
- package/dist/compiled-format.d.ts +43 -0
- package/dist/compiled-format.d.ts.map +1 -0
- package/{src/compiled-format.ts → dist/compiled-format.js} +28 -46
- package/dist/compiled-format.js.map +1 -0
- package/dist/concept-collection.d.ts +39 -0
- package/dist/concept-collection.d.ts.map +1 -0
- package/dist/concept-collection.js +127 -0
- package/dist/concept-collection.js.map +1 -0
- package/dist/concept-diff.d.ts +14 -0
- package/dist/concept-diff.d.ts.map +1 -0
- package/{src/concept-diff.ts → dist/concept-diff.js} +2 -20
- package/dist/concept-diff.js.map +1 -0
- package/dist/concept-parser.d.ts +11 -0
- package/dist/concept-parser.d.ts.map +1 -0
- package/dist/concept-parser.js +209 -0
- package/dist/concept-parser.js.map +1 -0
- package/dist/concept-reader.d.ts +55 -0
- package/dist/concept-reader.d.ts.map +1 -0
- package/{src/concept-reader.ts → dist/concept-reader.js} +70 -76
- package/dist/concept-reader.js.map +1 -0
- package/dist/concept-serializer.d.ts +9 -0
- package/dist/concept-serializer.d.ts.map +1 -0
- package/dist/concept-serializer.js +87 -0
- package/dist/concept-serializer.js.map +1 -0
- package/dist/concept-writer.d.ts +10 -0
- package/dist/concept-writer.d.ts.map +1 -0
- package/dist/concept-writer.js +28 -0
- package/dist/concept-writer.js.map +1 -0
- package/dist/dataset-asset.d.ts +49 -0
- package/dist/dataset-asset.d.ts.map +1 -0
- package/{src/dataset-asset.ts → dist/dataset-asset.js} +16 -33
- package/dist/dataset-asset.js.map +1 -0
- package/dist/diff/canonical-json.d.ts +7 -0
- package/dist/diff/canonical-json.d.ts.map +1 -0
- package/dist/diff/canonical-json.js +28 -0
- package/dist/diff/canonical-json.js.map +1 -0
- package/dist/diff/change.d.ts +67 -0
- package/dist/diff/change.d.ts.map +1 -0
- package/dist/diff/change.js +131 -0
- package/dist/diff/change.js.map +1 -0
- package/dist/diff/collection-diff.d.ts +50 -0
- package/dist/diff/collection-diff.d.ts.map +1 -0
- package/dist/diff/collection-diff.js +182 -0
- package/dist/diff/collection-diff.js.map +1 -0
- package/dist/diff/concept-diff.d.ts +188 -0
- package/dist/diff/concept-diff.d.ts.map +1 -0
- package/dist/diff/concept-diff.js +624 -0
- package/dist/diff/concept-diff.js.map +1 -0
- package/dist/diff/diff-patch.d.ts +7 -0
- package/dist/diff/diff-patch.d.ts.map +1 -0
- package/dist/diff/diff-patch.js +225 -0
- package/dist/diff/diff-patch.js.map +1 -0
- package/dist/diff/diff-renderer.d.ts +44 -0
- package/dist/diff/diff-renderer.d.ts.map +1 -0
- package/dist/diff/diff-renderer.js +263 -0
- package/dist/diff/diff-renderer.js.map +1 -0
- package/dist/diff/identity.d.ts +2 -0
- package/dist/diff/identity.d.ts.map +1 -0
- package/dist/diff/identity.js +29 -0
- package/dist/diff/identity.js.map +1 -0
- package/dist/diff/index.d.ts +8 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +8 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/list-diff.d.ts +36 -0
- package/dist/diff/list-diff.d.ts.map +1 -0
- package/dist/diff/list-diff.js +185 -0
- package/dist/diff/list-diff.js.map +1 -0
- package/dist/diff/similarity.d.ts +4 -0
- package/dist/diff/similarity.d.ts.map +1 -0
- package/dist/diff/similarity.js +20 -0
- package/dist/diff/similarity.js.map +1 -0
- package/dist/diff/text-diff.d.ts +42 -0
- package/dist/diff/text-diff.d.ts.map +1 -0
- package/dist/diff/text-diff.js +134 -0
- package/dist/diff/text-diff.js.map +1 -0
- package/dist/entity-directory.d.ts +13 -0
- package/dist/entity-directory.d.ts.map +1 -0
- package/dist/entity-directory.js +35 -0
- package/dist/entity-directory.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -0
- package/dist/gcr-reader.d.ts +57 -0
- package/dist/gcr-reader.d.ts.map +1 -0
- package/dist/gcr-reader.js +264 -0
- package/dist/gcr-reader.js.map +1 -0
- package/dist/gcr-writer.d.ts +23 -0
- package/dist/gcr-writer.d.ts.map +1 -0
- package/dist/gcr-writer.js +84 -0
- package/dist/gcr-writer.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/managed-concept-collection.d.ts +31 -0
- package/dist/managed-concept-collection.d.ts.map +1 -0
- package/dist/managed-concept-collection.js +87 -0
- package/dist/managed-concept-collection.js.map +1 -0
- package/dist/migration/hyperedge-migrator.d.ts +33 -0
- package/dist/migration/hyperedge-migrator.d.ts.map +1 -0
- package/dist/migration/hyperedge-migrator.js +70 -0
- package/dist/migration/hyperedge-migrator.js.map +1 -0
- package/dist/models/abstract-hyperedge.d.ts +35 -0
- package/dist/models/abstract-hyperedge.d.ts.map +1 -0
- package/dist/models/abstract-hyperedge.js +112 -0
- package/dist/models/abstract-hyperedge.js.map +1 -0
- package/dist/models/base.d.ts +58 -0
- package/dist/models/base.d.ts.map +1 -0
- package/dist/models/base.js +77 -0
- package/dist/models/base.js.map +1 -0
- package/dist/models/bibliography-data.d.ts +20 -0
- package/dist/models/bibliography-data.d.ts.map +1 -0
- package/dist/models/bibliography-data.js +43 -0
- package/dist/models/bibliography-data.js.map +1 -0
- package/dist/models/bibliography-entry.d.ts +19 -0
- package/dist/models/bibliography-entry.d.ts.map +1 -0
- package/dist/models/bibliography-entry.js +34 -0
- package/dist/models/bibliography-entry.js.map +1 -0
- package/dist/models/citation.d.ts +40 -0
- package/dist/models/citation.d.ts.map +1 -0
- package/dist/models/citation.js +82 -0
- package/dist/models/citation.js.map +1 -0
- package/dist/models/completeness.d.ts +9 -0
- package/dist/models/completeness.d.ts.map +1 -0
- package/{src/models/completeness.ts → dist/models/completeness.js} +4 -9
- package/dist/models/completeness.js.map +1 -0
- package/dist/models/concept-date.d.ts +20 -0
- package/dist/models/concept-date.d.ts.map +1 -0
- package/dist/models/concept-date.js +36 -0
- package/dist/models/concept-date.js.map +1 -0
- package/dist/models/concept-ref.d.ts +32 -0
- package/dist/models/concept-ref.d.ts.map +1 -0
- package/dist/models/concept-ref.js +53 -0
- package/dist/models/concept-ref.js.map +1 -0
- package/dist/models/concept-reference.d.ts +22 -0
- package/dist/models/concept-reference.d.ts.map +1 -0
- package/dist/models/concept-reference.js +39 -0
- package/dist/models/concept-reference.js.map +1 -0
- package/dist/models/concept-source.d.ts +53 -0
- package/dist/models/concept-source.d.ts.map +1 -0
- package/dist/models/concept-source.js +66 -0
- package/dist/models/concept-source.js.map +1 -0
- package/dist/models/concept-system-type.d.ts +6 -0
- package/dist/models/concept-system-type.d.ts.map +1 -0
- package/dist/models/concept-system-type.js +22 -0
- package/dist/models/concept-system-type.js.map +1 -0
- package/dist/models/concept-system.d.ts +44 -0
- package/dist/models/concept-system.d.ts.map +1 -0
- package/dist/models/concept-system.js +115 -0
- package/dist/models/concept-system.js.map +1 -0
- package/dist/models/concept-type.d.ts +7 -0
- package/dist/models/concept-type.d.ts.map +1 -0
- package/{src/models/concept-type.ts → dist/models/concept-type.js} +8 -19
- package/dist/models/concept-type.js.map +1 -0
- package/dist/models/concept.d.ts +94 -0
- package/dist/models/concept.d.ts.map +1 -0
- package/dist/models/concept.js +368 -0
- package/dist/models/concept.js.map +1 -0
- package/dist/models/dataset-color.d.ts +28 -0
- package/dist/models/dataset-color.d.ts.map +1 -0
- package/dist/models/dataset-color.js +74 -0
- package/dist/models/dataset-color.js.map +1 -0
- package/dist/models/definition-type.d.ts +9 -0
- package/dist/models/definition-type.d.ts.map +1 -0
- package/{src/models/definition-type.ts → dist/models/definition-type.js} +6 -15
- package/dist/models/definition-type.js.map +1 -0
- package/dist/models/designation-relationship.d.ts +17 -0
- package/dist/models/designation-relationship.d.ts.map +1 -0
- package/dist/models/designation-relationship.js +30 -0
- package/dist/models/designation-relationship.js.map +1 -0
- package/dist/models/designation.d.ts +110 -0
- package/dist/models/designation.d.ts.map +1 -0
- package/dist/models/designation.js +224 -0
- package/dist/models/designation.js.map +1 -0
- package/dist/models/detailed-definition.d.ts +34 -0
- package/dist/models/detailed-definition.d.ts.map +1 -0
- package/dist/models/detailed-definition.js +63 -0
- package/dist/models/detailed-definition.js.map +1 -0
- package/dist/models/enum.d.ts +21 -0
- package/dist/models/enum.d.ts.map +1 -0
- package/dist/models/enum.js +39 -0
- package/dist/models/enum.js.map +1 -0
- package/dist/models/equivalence-degree.d.ts +7 -0
- package/dist/models/equivalence-degree.d.ts.map +1 -0
- package/dist/models/equivalence-degree.js +20 -0
- package/dist/models/equivalence-degree.js.map +1 -0
- package/dist/models/figure.d.ts +40 -0
- package/dist/models/figure.d.ts.map +1 -0
- package/dist/models/figure.js +82 -0
- package/dist/models/figure.js.map +1 -0
- package/dist/models/formula.d.ts +15 -0
- package/dist/models/formula.d.ts.map +1 -0
- package/dist/models/formula.js +27 -0
- package/dist/models/formula.js.map +1 -0
- package/dist/models/gcr-metadata.d.ts +62 -0
- package/dist/models/gcr-metadata.d.ts.map +1 -0
- package/dist/models/gcr-metadata.js +102 -0
- package/dist/models/gcr-metadata.js.map +1 -0
- package/dist/models/gcr-statistics.d.ts +30 -0
- package/dist/models/gcr-statistics.d.ts.map +1 -0
- package/dist/models/gcr-statistics.js +53 -0
- package/dist/models/gcr-statistics.js.map +1 -0
- package/dist/models/generic-hyperedge.d.ts +32 -0
- package/dist/models/generic-hyperedge.d.ts.map +1 -0
- package/dist/models/generic-hyperedge.js +51 -0
- package/dist/models/generic-hyperedge.js.map +1 -0
- package/dist/models/generic-member.d.ts +14 -0
- package/dist/models/generic-member.d.ts.map +1 -0
- package/dist/models/generic-member.js +51 -0
- package/dist/models/generic-member.js.map +1 -0
- package/dist/models/grammar-info.d.ts +34 -0
- package/dist/models/grammar-info.d.ts.map +1 -0
- package/dist/models/grammar-info.js +59 -0
- package/dist/models/grammar-info.js.map +1 -0
- package/dist/models/hyperedge-colors.d.ts +19 -0
- package/dist/models/hyperedge-colors.d.ts.map +1 -0
- package/dist/models/hyperedge-colors.js +61 -0
- package/dist/models/hyperedge-colors.js.map +1 -0
- package/dist/models/hyperedge-index.d.ts +34 -0
- package/dist/models/hyperedge-index.d.ts.map +1 -0
- package/dist/models/hyperedge-index.js +85 -0
- package/dist/models/hyperedge-index.js.map +1 -0
- package/dist/models/hyperedge-member.d.ts +28 -0
- package/dist/models/hyperedge-member.d.ts.map +1 -0
- package/dist/models/hyperedge-member.js +92 -0
- package/dist/models/hyperedge-member.js.map +1 -0
- package/dist/models/hyperedge-registry.d.ts +47 -0
- package/dist/models/hyperedge-registry.d.ts.map +1 -0
- package/dist/models/hyperedge-registry.js +118 -0
- package/dist/models/hyperedge-registry.js.map +1 -0
- package/dist/models/index.d.ts +53 -0
- package/dist/models/index.d.ts.map +1 -0
- package/{src/models/index.ts → dist/models/index.js} +11 -63
- package/dist/models/index.js.map +1 -0
- package/dist/models/locality.d.ts +17 -0
- package/dist/models/locality.d.ts.map +1 -0
- package/dist/models/locality.js +26 -0
- package/dist/models/locality.js.map +1 -0
- package/dist/models/localized-concept.d.ts +102 -0
- package/dist/models/localized-concept.d.ts.map +1 -0
- package/dist/models/localized-concept.js +195 -0
- package/dist/models/localized-concept.js.map +1 -0
- package/dist/models/localized-string.d.ts +5 -0
- package/dist/models/localized-string.d.ts.map +1 -0
- package/dist/models/localized-string.js +20 -0
- package/dist/models/localized-string.js.map +1 -0
- package/dist/models/multiplicity.d.ts +42 -0
- package/dist/models/multiplicity.d.ts.map +1 -0
- package/dist/models/multiplicity.js +84 -0
- package/dist/models/multiplicity.js.map +1 -0
- package/dist/models/non-verb-rep.d.ts +20 -0
- package/dist/models/non-verb-rep.d.ts.map +1 -0
- package/dist/models/non-verb-rep.js +32 -0
- package/dist/models/non-verb-rep.js.map +1 -0
- package/dist/models/non-verbal-entity.d.ts +30 -0
- package/dist/models/non-verbal-entity.d.ts.map +1 -0
- package/dist/models/non-verbal-entity.js +48 -0
- package/dist/models/non-verbal-entity.js.map +1 -0
- package/dist/models/non-verbal-reference.d.ts +23 -0
- package/dist/models/non-verbal-reference.d.ts.map +1 -0
- package/dist/models/non-verbal-reference.js +44 -0
- package/dist/models/non-verbal-reference.js.map +1 -0
- package/dist/models/non-verbal-references.d.ts +12 -0
- package/dist/models/non-verbal-references.d.ts.map +1 -0
- package/dist/models/non-verbal-references.js +20 -0
- package/dist/models/non-verbal-references.js.map +1 -0
- package/dist/models/partitive-count.d.ts +10 -0
- package/dist/models/partitive-count.d.ts.map +1 -0
- package/{src/models/partitive-count.ts → dist/models/partitive-count.js} +5 -9
- package/dist/models/partitive-count.js.map +1 -0
- package/dist/models/partitive-enumeration.d.ts +5 -0
- package/dist/models/partitive-enumeration.d.ts.map +1 -0
- package/dist/models/partitive-enumeration.js +16 -0
- package/dist/models/partitive-enumeration.js.map +1 -0
- package/dist/models/partitive-hyperedge.d.ts +43 -0
- package/dist/models/partitive-hyperedge.d.ts.map +1 -0
- package/dist/models/partitive-hyperedge.js +63 -0
- package/dist/models/partitive-hyperedge.js.map +1 -0
- package/dist/models/partitive-member.d.ts +14 -0
- package/dist/models/partitive-member.d.ts.map +1 -0
- package/dist/models/partitive-member.js +44 -0
- package/dist/models/partitive-member.js.map +1 -0
- package/dist/models/partitive-presence.d.ts +9 -0
- package/dist/models/partitive-presence.d.ts.map +1 -0
- package/{src/models/partitive-presence.ts → dist/models/partitive-presence.js} +4 -8
- package/dist/models/partitive-presence.js.map +1 -0
- package/dist/models/plurality-marker.d.ts +5 -0
- package/dist/models/plurality-marker.d.ts.map +1 -0
- package/dist/models/plurality-marker.js +20 -0
- package/dist/models/plurality-marker.js.map +1 -0
- package/dist/models/pronunciation.d.ts +19 -0
- package/dist/models/pronunciation.d.ts.map +1 -0
- package/dist/models/pronunciation.js +34 -0
- package/dist/models/pronunciation.js.map +1 -0
- package/dist/models/register.d.ts +104 -0
- package/dist/models/register.d.ts.map +1 -0
- package/dist/models/register.js +297 -0
- package/dist/models/register.js.map +1 -0
- package/dist/models/registrable.d.ts +25 -0
- package/dist/models/registrable.d.ts.map +1 -0
- package/dist/models/registrable.js +23 -0
- package/dist/models/registrable.js.map +1 -0
- package/dist/models/related-concept.d.ts +33 -0
- package/dist/models/related-concept.d.ts.map +1 -0
- package/dist/models/related-concept.js +95 -0
- package/dist/models/related-concept.js.map +1 -0
- package/dist/models/relation-categories.d.ts +38 -0
- package/dist/models/relation-categories.d.ts.map +1 -0
- package/dist/models/relation-categories.js +135 -0
- package/dist/models/relation-categories.js.map +1 -0
- package/dist/models/relation-colors.d.ts +35 -0
- package/dist/models/relation-colors.d.ts.map +1 -0
- package/dist/models/relation-colors.js +68 -0
- package/dist/models/relation-colors.js.map +1 -0
- package/dist/models/relation-loader.d.ts +41 -0
- package/dist/models/relation-loader.d.ts.map +1 -0
- package/dist/models/relation-loader.js +101 -0
- package/dist/models/relation-loader.js.map +1 -0
- package/dist/models/section.d.ts +22 -0
- package/dist/models/section.d.ts.map +1 -0
- package/dist/models/section.js +47 -0
- package/dist/models/section.js.map +1 -0
- package/dist/models/sequential-hyperedge.d.ts +32 -0
- package/dist/models/sequential-hyperedge.d.ts.map +1 -0
- package/dist/models/sequential-hyperedge.js +49 -0
- package/dist/models/sequential-hyperedge.js.map +1 -0
- package/dist/models/sequential-member.d.ts +8 -0
- package/dist/models/sequential-member.d.ts.map +1 -0
- package/{src/models/sequential-member.ts → dist/models/sequential-member.js} +4 -9
- package/dist/models/sequential-member.js.map +1 -0
- package/dist/models/shared-non-verbal-entity.d.ts +16 -0
- package/dist/models/shared-non-verbal-entity.d.ts.map +1 -0
- package/dist/models/shared-non-verbal-entity.js +28 -0
- package/dist/models/shared-non-verbal-entity.js.map +1 -0
- package/dist/models/table.d.ts +15 -0
- package/dist/models/table.d.ts.map +1 -0
- package/dist/models/table.js +27 -0
- package/dist/models/table.js.map +1 -0
- package/dist/rdf/agents-emitter.d.ts +37 -0
- package/dist/rdf/agents-emitter.d.ts.map +1 -0
- package/dist/rdf/agents-emitter.js +107 -0
- package/dist/rdf/agents-emitter.js.map +1 -0
- package/dist/rdf/bibliography-emitter.d.ts +16 -0
- package/dist/rdf/bibliography-emitter.d.ts.map +1 -0
- package/dist/rdf/bibliography-emitter.js +84 -0
- package/dist/rdf/bibliography-emitter.js.map +1 -0
- package/dist/rdf/bnode-id.d.ts +2 -0
- package/dist/rdf/bnode-id.d.ts.map +1 -0
- package/dist/rdf/bnode-id.js +57 -0
- package/dist/rdf/bnode-id.js.map +1 -0
- package/dist/rdf/build-activity-emitter.d.ts +42 -0
- package/dist/rdf/build-activity-emitter.d.ts.map +1 -0
- package/dist/rdf/build-activity-emitter.js +103 -0
- package/dist/rdf/build-activity-emitter.js.map +1 -0
- package/dist/rdf/curie.d.ts +7 -0
- package/dist/rdf/curie.d.ts.map +1 -0
- package/dist/rdf/curie.js +45 -0
- package/dist/rdf/curie.js.map +1 -0
- package/dist/rdf/dataset-emitter.d.ts +37 -0
- package/dist/rdf/dataset-emitter.d.ts.map +1 -0
- package/dist/rdf/dataset-emitter.js +126 -0
- package/dist/rdf/dataset-emitter.js.map +1 -0
- package/dist/rdf/deterministic-id.d.ts +3 -0
- package/dist/rdf/deterministic-id.d.ts.map +1 -0
- package/dist/rdf/deterministic-id.js +68 -0
- package/dist/rdf/deterministic-id.js.map +1 -0
- package/dist/rdf/document-writer.d.ts +11 -0
- package/dist/rdf/document-writer.d.ts.map +1 -0
- package/dist/rdf/document-writer.js +77 -0
- package/dist/rdf/document-writer.js.map +1 -0
- package/dist/rdf/gloss-concept.d.ts +27 -0
- package/dist/rdf/gloss-concept.d.ts.map +1 -0
- package/dist/rdf/gloss-concept.js +95 -0
- package/dist/rdf/gloss-concept.js.map +1 -0
- package/dist/rdf/gloss-designation.d.ts +17 -0
- package/dist/rdf/gloss-designation.d.ts.map +1 -0
- package/dist/rdf/gloss-designation.js +46 -0
- package/dist/rdf/gloss-designation.js.map +1 -0
- package/dist/rdf/gloss-detailed-definition.d.ts +14 -0
- package/dist/rdf/gloss-detailed-definition.d.ts.map +1 -0
- package/dist/rdf/gloss-detailed-definition.js +53 -0
- package/dist/rdf/gloss-detailed-definition.js.map +1 -0
- package/dist/rdf/gloss-generic-hyperedge.d.ts +27 -0
- package/dist/rdf/gloss-generic-hyperedge.d.ts.map +1 -0
- package/{src/rdf/gloss-generic-hyperedge.ts → dist/rdf/gloss-generic-hyperedge.js} +36 -50
- package/dist/rdf/gloss-generic-hyperedge.js.map +1 -0
- package/dist/rdf/gloss-localized-concept.d.ts +24 -0
- package/dist/rdf/gloss-localized-concept.d.ts.map +1 -0
- package/dist/rdf/gloss-localized-concept.js +71 -0
- package/dist/rdf/gloss-localized-concept.js.map +1 -0
- package/dist/rdf/gloss-non-verbal-rep.d.ts +33 -0
- package/dist/rdf/gloss-non-verbal-rep.d.ts.map +1 -0
- package/dist/rdf/gloss-non-verbal-rep.js +163 -0
- package/dist/rdf/gloss-non-verbal-rep.js.map +1 -0
- package/dist/rdf/gloss-partitive-member.d.ts +8 -0
- package/dist/rdf/gloss-partitive-member.d.ts.map +1 -0
- package/{src/rdf/gloss-partitive-member.ts → dist/rdf/gloss-partitive-member.js} +23 -41
- package/dist/rdf/gloss-partitive-member.js.map +1 -0
- package/dist/rdf/gloss-partitive-relation.d.ts +26 -0
- package/dist/rdf/gloss-partitive-relation.d.ts.map +1 -0
- package/dist/rdf/gloss-partitive-relation.js +73 -0
- package/dist/rdf/gloss-partitive-relation.js.map +1 -0
- package/dist/rdf/gloss-source.d.ts +23 -0
- package/dist/rdf/gloss-source.d.ts.map +1 -0
- package/dist/rdf/gloss-source.js +52 -0
- package/dist/rdf/gloss-source.js.map +1 -0
- package/dist/rdf/group-emitter.d.ts +46 -0
- package/dist/rdf/group-emitter.d.ts.map +1 -0
- package/dist/rdf/group-emitter.js +107 -0
- package/dist/rdf/group-emitter.js.map +1 -0
- package/dist/rdf/image-variant-emitter.d.ts +12 -0
- package/dist/rdf/image-variant-emitter.d.ts.map +1 -0
- package/dist/rdf/image-variant-emitter.js +55 -0
- package/dist/rdf/image-variant-emitter.js.map +1 -0
- package/dist/rdf/index.d.ts +26 -0
- package/dist/rdf/index.d.ts.map +1 -0
- package/{src/rdf/index.ts → dist/rdf/index.js} +8 -37
- package/dist/rdf/index.js.map +1 -0
- package/dist/rdf/normalize-enum.d.ts +3 -0
- package/dist/rdf/normalize-enum.d.ts.map +1 -0
- package/{src/rdf/normalize-enum.ts → dist/rdf/normalize-enum.js} +11 -10
- package/dist/rdf/normalize-enum.js.map +1 -0
- package/dist/rdf/predicates.d.ts +277 -0
- package/dist/rdf/predicates.d.ts.map +1 -0
- package/dist/rdf/predicates.js +279 -0
- package/dist/rdf/predicates.js.map +1 -0
- package/dist/rdf/prefixes.d.ts +16 -0
- package/dist/rdf/prefixes.d.ts.map +1 -0
- package/{src/rdf/prefixes.ts → dist/rdf/prefixes.js} +10 -12
- package/dist/rdf/prefixes.js.map +1 -0
- package/dist/rdf/provenance-emitter.d.ts +28 -0
- package/dist/rdf/provenance-emitter.d.ts.map +1 -0
- package/dist/rdf/provenance-emitter.js +74 -0
- package/dist/rdf/provenance-emitter.js.map +1 -0
- package/dist/rdf/sections-builder.d.ts +17 -0
- package/dist/rdf/sections-builder.d.ts.map +1 -0
- package/dist/rdf/sections-builder.js +137 -0
- package/dist/rdf/sections-builder.js.map +1 -0
- package/dist/rdf/shacl-entry.d.ts +2 -0
- package/dist/rdf/shacl-entry.d.ts.map +1 -0
- package/{src/rdf/shacl-entry.ts → dist/rdf/shacl-entry.js} +1 -1
- package/dist/rdf/shacl-entry.js.map +1 -0
- package/dist/rdf/shacl.d.ts +10 -0
- package/dist/rdf/shacl.d.ts.map +1 -0
- package/{src/rdf/shacl.ts → dist/rdf/shacl.js} +38 -57
- package/dist/rdf/shacl.js.map +1 -0
- package/dist/rdf/terms.d.ts +10 -0
- package/dist/rdf/terms.d.ts.map +1 -0
- package/{src/rdf/terms.ts → dist/rdf/terms.js} +6 -3
- package/dist/rdf/terms.js.map +1 -0
- package/dist/rdf/version-emitter.d.ts +57 -0
- package/dist/rdf/version-emitter.d.ts.map +1 -0
- package/dist/rdf/version-emitter.js +68 -0
- package/dist/rdf/version-emitter.js.map +1 -0
- package/dist/rdf/vocabulary-emitter.d.ts +32 -0
- package/dist/rdf/vocabulary-emitter.d.ts.map +1 -0
- package/dist/rdf/vocabulary-emitter.js +46 -0
- package/dist/rdf/vocabulary-emitter.js.map +1 -0
- package/dist/rdf/write-turtle-sync.d.ts +7 -0
- package/dist/rdf/write-turtle-sync.d.ts.map +1 -0
- package/dist/rdf/write-turtle-sync.js +130 -0
- package/dist/rdf/write-turtle-sync.js.map +1 -0
- package/dist/reference-mention.d.ts +49 -0
- package/dist/reference-mention.d.ts.map +1 -0
- package/dist/reference-mention.js +98 -0
- package/dist/reference-mention.js.map +1 -0
- package/dist/reference-resolver.d.ts +52 -0
- package/dist/reference-resolver.d.ts.map +1 -0
- package/dist/reference-resolver.js +311 -0
- package/dist/reference-resolver.js.map +1 -0
- package/dist/render-classification.d.ts +19 -0
- package/dist/render-classification.d.ts.map +1 -0
- package/dist/render-classification.js +82 -0
- package/dist/render-classification.js.map +1 -0
- package/dist/sort.d.ts +5 -0
- package/dist/sort.d.ts.map +1 -0
- package/dist/sort.js +25 -0
- package/dist/sort.js.map +1 -0
- package/dist/transforms/concept-to-gloss.transform.d.ts +32 -0
- package/dist/transforms/concept-to-gloss.transform.d.ts.map +1 -0
- package/dist/transforms/concept-to-gloss.transform.js +60 -0
- package/dist/transforms/concept-to-gloss.transform.js.map +1 -0
- package/dist/transforms/index.d.ts +2 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/{src/transforms/index.ts → dist/transforms/index.js} +1 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/utils/assertions.d.ts +4 -0
- package/dist/utils/assertions.d.ts.map +1 -0
- package/dist/utils/assertions.js +17 -0
- package/dist/utils/assertions.js.map +1 -0
- package/dist/utils/external-detection.d.ts +38 -0
- package/dist/utils/external-detection.d.ts.map +1 -0
- package/dist/utils/external-detection.js +55 -0
- package/dist/utils/external-detection.js.map +1 -0
- package/dist/uuid.d.ts +4 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +23 -0
- package/dist/uuid.js.map +1 -0
- package/dist/v1-reader.d.ts +8 -0
- package/dist/v1-reader.d.ts.map +1 -0
- package/dist/v1-reader.js +56 -0
- package/dist/v1-reader.js.map +1 -0
- package/dist/validators/asset-index.d.ts +23 -0
- package/dist/validators/asset-index.d.ts.map +1 -0
- package/dist/validators/asset-index.js +58 -0
- package/dist/validators/asset-index.js.map +1 -0
- package/dist/validators/binary-has-part-redundancy-rule.d.ts +8 -0
- package/dist/validators/binary-has-part-redundancy-rule.d.ts.map +1 -0
- package/dist/validators/binary-has-part-redundancy-rule.js +57 -0
- package/dist/validators/binary-has-part-redundancy-rule.js.map +1 -0
- package/dist/validators/concept-validator.d.ts +21 -0
- package/dist/validators/concept-validator.d.ts.map +1 -0
- package/dist/validators/concept-validator.js +76 -0
- package/dist/validators/concept-validator.js.map +1 -0
- package/dist/validators/delimiting-coherence-rule.d.ts +8 -0
- package/dist/validators/delimiting-coherence-rule.d.ts.map +1 -0
- package/dist/validators/delimiting-coherence-rule.js +72 -0
- package/dist/validators/delimiting-coherence-rule.js.map +1 -0
- package/dist/validators/extensional-completeness.d.ts +18 -0
- package/dist/validators/extensional-completeness.d.ts.map +1 -0
- package/dist/validators/extensional-completeness.js +41 -0
- package/dist/validators/extensional-completeness.js.map +1 -0
- package/dist/validators/external-concept-shape-rule.d.ts +8 -0
- package/dist/validators/external-concept-shape-rule.d.ts.map +1 -0
- package/dist/validators/external-concept-shape-rule.js +48 -0
- package/dist/validators/external-concept-shape-rule.js.map +1 -0
- package/dist/validators/gcr-validator.d.ts +11 -0
- package/dist/validators/gcr-validator.d.ts.map +1 -0
- package/dist/validators/gcr-validator.js +76 -0
- package/dist/validators/gcr-validator.js.map +1 -0
- package/dist/validators/hyperedge-coherence-rule.d.ts +9 -0
- package/dist/validators/hyperedge-coherence-rule.d.ts.map +1 -0
- package/dist/validators/hyperedge-coherence-rule.js +78 -0
- package/dist/validators/hyperedge-coherence-rule.js.map +1 -0
- package/dist/validators/index.d.ts +21 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/{src/validators/index.ts → dist/validators/index.js} +25 -51
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/partitive-relation-coherence-rule.d.ts +2 -0
- package/dist/validators/partitive-relation-coherence-rule.d.ts.map +1 -0
- package/{src/validators/partitive-relation-coherence-rule.ts → dist/validators/partitive-relation-coherence-rule.js} +1 -1
- package/dist/validators/partitive-relation-coherence-rule.js.map +1 -0
- package/dist/validators/ref-keys.d.ts +8 -0
- package/dist/validators/ref-keys.d.ts.map +1 -0
- package/dist/validators/ref-keys.js +27 -0
- package/dist/validators/ref-keys.js.map +1 -0
- package/dist/validators/register-validator.d.ts +10 -0
- package/dist/validators/register-validator.d.ts.map +1 -0
- package/dist/validators/register-validator.js +18 -0
- package/dist/validators/register-validator.js.map +1 -0
- package/dist/validators/relationship-type-rule.d.ts +13 -0
- package/dist/validators/relationship-type-rule.d.ts.map +1 -0
- package/dist/validators/relationship-type-rule.js +34 -0
- package/dist/validators/relationship-type-rule.js.map +1 -0
- package/dist/validators/sourced-from-locality-rule.d.ts +8 -0
- package/dist/validators/sourced-from-locality-rule.d.ts.map +1 -0
- package/dist/validators/sourced-from-locality-rule.js +37 -0
- package/dist/validators/sourced-from-locality-rule.js.map +1 -0
- package/dist/validators/v3-rules.d.ts +60 -0
- package/dist/validators/v3-rules.d.ts.map +1 -0
- package/dist/validators/v3-rules.js +327 -0
- package/dist/validators/v3-rules.js.map +1 -0
- package/dist/validators/validation-error.d.ts +13 -0
- package/dist/validators/validation-error.d.ts.map +1 -0
- package/dist/validators/validation-error.js +17 -0
- package/dist/validators/validation-error.js.map +1 -0
- package/dist/validators/validation-result.d.ts +17 -0
- package/dist/validators/validation-result.d.ts.map +1 -0
- package/dist/validators/validation-result.js +47 -0
- package/dist/validators/validation-result.js.map +1 -0
- package/dist/validators/validation-rule.d.ts +10 -0
- package/dist/validators/validation-rule.d.ts.map +1 -0
- package/dist/validators/validation-rule.js +17 -0
- package/dist/validators/validation-rule.js.map +1 -0
- package/package.json +37 -42
- package/src/concept-collection.ts +0 -172
- package/src/concept-parser.ts +0 -235
- package/src/concept-reader.d.ts +0 -13
- package/src/concept-serializer.ts +0 -110
- package/src/concept-writer.d.ts +0 -7
- package/src/concept-writer.ts +0 -47
- package/src/diff/canonical-json.ts +0 -29
- package/src/diff/change.ts +0 -175
- package/src/diff/collection-diff.ts +0 -245
- package/src/diff/concept-diff.ts +0 -853
- package/src/diff/diff-patch.ts +0 -276
- package/src/diff/diff-renderer.ts +0 -348
- package/src/diff/identity.ts +0 -33
- package/src/diff/index.d.ts +0 -242
- package/src/diff/index.ts +0 -50
- package/src/diff/list-diff.ts +0 -231
- package/src/diff/similarity.ts +0 -20
- package/src/diff/text-diff.ts +0 -167
- package/src/entity-directory.ts +0 -43
- package/src/errors.d.ts +0 -11
- package/src/errors.ts +0 -24
- package/src/gcr-reader.d.ts +0 -65
- package/src/gcr-reader.ts +0 -512
- package/src/gcr-writer.d.ts +0 -22
- package/src/gcr-writer.ts +0 -99
- package/src/index.d.ts +0 -124
- package/src/index.ts +0 -92
- package/src/managed-concept-collection.ts +0 -130
- package/src/migration/hyperedge-migrator.ts +0 -104
- package/src/models/abstract-hyperedge.ts +0 -164
- package/src/models/base.ts +0 -110
- package/src/models/bibliography-data.ts +0 -64
- package/src/models/bibliography-entry.ts +0 -40
- package/src/models/citation.ts +0 -98
- package/src/models/concept-date.ts +0 -48
- package/src/models/concept-ref.ts +0 -64
- package/src/models/concept-reference.ts +0 -50
- package/src/models/concept-source.ts +0 -96
- package/src/models/concept-system-type.ts +0 -39
- package/src/models/concept-system.ts +0 -152
- package/src/models/concept.ts +0 -499
- package/src/models/dataset-color.ts +0 -88
- package/src/models/designation-relationship.ts +0 -39
- package/src/models/designation.ts +0 -297
- package/src/models/detailed-definition.ts +0 -92
- package/src/models/enum.ts +0 -60
- package/src/models/equivalence-degree.ts +0 -34
- package/src/models/figure.ts +0 -110
- package/src/models/formula.ts +0 -36
- package/src/models/gcr-metadata.ts +0 -118
- package/src/models/gcr-statistics.ts +0 -76
- package/src/models/generic-hyperedge.ts +0 -72
- package/src/models/generic-member.ts +0 -80
- package/src/models/grammar-info.ts +0 -78
- package/src/models/hyperedge-colors.ts +0 -87
- package/src/models/hyperedge-index.ts +0 -101
- package/src/models/hyperedge-member.ts +0 -121
- package/src/models/hyperedge-registry.ts +0 -145
- package/src/models/index.d.ts +0 -586
- package/src/models/locality.ts +0 -34
- package/src/models/localized-concept.ts +0 -284
- package/src/models/localized-string.ts +0 -32
- package/src/models/multiplicity.ts +0 -134
- package/src/models/non-verb-rep.ts +0 -48
- package/src/models/non-verbal-entity.ts +0 -65
- package/src/models/non-verbal-reference.ts +0 -73
- package/src/models/non-verbal-references.ts +0 -29
- package/src/models/partitive-enumeration.ts +0 -27
- package/src/models/partitive-hyperedge.ts +0 -90
- package/src/models/partitive-member.ts +0 -56
- package/src/models/plurality-marker.ts +0 -31
- package/src/models/pronunciation.ts +0 -40
- package/src/models/register.ts +0 -315
- package/src/models/registrable.ts +0 -48
- package/src/models/related-concept.ts +0 -117
- package/src/models/relation-categories.ts +0 -167
- package/src/models/relation-colors.ts +0 -90
- package/src/models/relation-loader.ts +0 -115
- package/src/models/section.ts +0 -61
- package/src/models/sequential-hyperedge.ts +0 -70
- package/src/models/shared-non-verbal-entity.ts +0 -36
- package/src/models/table.ts +0 -36
- package/src/rdf/agents-emitter.ts +0 -137
- package/src/rdf/bibliography-emitter.ts +0 -126
- package/src/rdf/bnode-id.ts +0 -55
- package/src/rdf/build-activity-emitter.ts +0 -129
- package/src/rdf/curie.ts +0 -46
- package/src/rdf/dataset-emitter.ts +0 -170
- package/src/rdf/deterministic-id.ts +0 -69
- package/src/rdf/document-writer.ts +0 -87
- package/src/rdf/gloss-concept.ts +0 -115
- package/src/rdf/gloss-designation.ts +0 -72
- package/src/rdf/gloss-detailed-definition.ts +0 -69
- package/src/rdf/gloss-localized-concept.ts +0 -79
- package/src/rdf/gloss-non-verbal-rep.ts +0 -202
- package/src/rdf/gloss-partitive-relation.ts +0 -89
- package/src/rdf/gloss-source.ts +0 -56
- package/src/rdf/group-emitter.ts +0 -133
- package/src/rdf/image-variant-emitter.ts +0 -80
- package/src/rdf/index.d.ts +0 -371
- package/src/rdf/predicates.d.ts +0 -527
- package/src/rdf/predicates.ts +0 -287
- package/src/rdf/provenance-emitter.ts +0 -87
- package/src/rdf/sections-builder.ts +0 -190
- package/src/rdf/shacl-entry.d.ts +0 -6
- package/src/rdf/version-emitter.ts +0 -97
- package/src/rdf/vocabulary-emitter.ts +0 -67
- package/src/rdf/write-turtle-sync.ts +0 -179
- package/src/reference-mention.ts +0 -114
- package/src/reference-resolver.ts +0 -361
- package/src/render-classification.ts +0 -85
- package/src/sort.ts +0 -22
- package/src/transforms/concept-to-gloss.transform.ts +0 -81
- package/src/transforms/index.d.ts +0 -26
- package/src/uuid.ts +0 -32
- package/src/v1-reader.ts +0 -66
- package/src/validators/asset-index.ts +0 -72
- package/src/validators/binary-has-part-redundancy-rule.ts +0 -67
- package/src/validators/concept-validator.ts +0 -93
- package/src/validators/delimiting-coherence-rule.ts +0 -105
- package/src/validators/external-concept-shape-rule.ts +0 -60
- package/src/validators/gcr-validator.ts +0 -76
- package/src/validators/hyperedge-coherence-rule.ts +0 -98
- package/src/validators/index.d.ts +0 -43
- package/src/validators/ref-keys.ts +0 -31
- package/src/validators/register-validator.ts +0 -18
- package/src/validators/relationship-type-rule.ts +0 -39
- package/src/validators/sourced-from-locality-rule.ts +0 -53
- package/src/validators/v3-rules.ts +0 -382
- package/src/validators/validation-error.ts +0 -19
- package/src/validators/validation-result.ts +0 -52
- package/src/validators/validation-rule.ts +0 -21
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// Sync Turtle writer — produces Turtle from RDF/JS Quads without
|
|
2
|
+
// n3's callback API. Designed for UI use cases (Vue computed, React
|
|
3
|
+
// render) that need synchronous output.
|
|
4
|
+
const RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
|
|
5
|
+
export function writeTurtleSync(quads, options = {}) {
|
|
6
|
+
const prefixes = options.prefixes ?? {};
|
|
7
|
+
const sorted = [...quads].sort(compareQuadSync);
|
|
8
|
+
const grouped = groupBySubject(sorted);
|
|
9
|
+
const lines = [];
|
|
10
|
+
for (const [prefix, iri] of Object.entries(prefixes).sort(([a], [b]) => a.localeCompare(b))) {
|
|
11
|
+
lines.push(`@prefix ${prefix}: <${iri}> .`);
|
|
12
|
+
}
|
|
13
|
+
for (const { subject, triples } of grouped) {
|
|
14
|
+
lines.push('');
|
|
15
|
+
lines.push(...writeResource(subject, triples, prefixes));
|
|
16
|
+
}
|
|
17
|
+
return lines.join('\n') + '\n';
|
|
18
|
+
}
|
|
19
|
+
function writeResource(subject, triples, prefixes) {
|
|
20
|
+
const subjectStr = formatTermSync(subject, prefixes);
|
|
21
|
+
const types = triples.filter(t => t.predicate.value === RDF_TYPE);
|
|
22
|
+
const others = triples.filter(t => t.predicate.value !== RDF_TYPE);
|
|
23
|
+
if (types.length === 0 && others.length === 0) {
|
|
24
|
+
return [`${subjectStr} .`];
|
|
25
|
+
}
|
|
26
|
+
const lines = [];
|
|
27
|
+
const allPredObjs = [];
|
|
28
|
+
if (types.length > 0) {
|
|
29
|
+
const typeStrs = types.map(t => formatTermSync(t.object, prefixes));
|
|
30
|
+
allPredObjs.push({ predStr: 'a', objStrs: typeStrs });
|
|
31
|
+
}
|
|
32
|
+
const byPredicate = new Map();
|
|
33
|
+
for (const t of others) {
|
|
34
|
+
const predStr = formatTermSync(t.predicate, prefixes);
|
|
35
|
+
if (!byPredicate.has(predStr))
|
|
36
|
+
byPredicate.set(predStr, []);
|
|
37
|
+
byPredicate.get(predStr).push(formatTermSync(t.object, prefixes));
|
|
38
|
+
}
|
|
39
|
+
for (const [predStr, objStrs] of byPredicate) {
|
|
40
|
+
allPredObjs.push({ predStr, objStrs });
|
|
41
|
+
}
|
|
42
|
+
lines.push(`${subjectStr} ${allPredObjs[0].predStr} ${allPredObjs[0].objStrs.join(', ')} ;`);
|
|
43
|
+
for (let i = 1; i < allPredObjs.length; i++) {
|
|
44
|
+
lines.push(` ${allPredObjs[i].predStr} ${allPredObjs[i].objStrs.join(', ')} ;`);
|
|
45
|
+
}
|
|
46
|
+
lines[lines.length - 1] = lines[lines.length - 1].replace(/ ;$/, ' .');
|
|
47
|
+
return lines;
|
|
48
|
+
}
|
|
49
|
+
function formatTermSync(term, prefixes) {
|
|
50
|
+
switch (term.termType) {
|
|
51
|
+
case 'NamedNode':
|
|
52
|
+
return compactIriSync(term.value, prefixes);
|
|
53
|
+
case 'BlankNode':
|
|
54
|
+
return `_:${term.value}`;
|
|
55
|
+
case 'Literal':
|
|
56
|
+
return formatLiteralSync(term);
|
|
57
|
+
case 'DefaultGraph':
|
|
58
|
+
return '';
|
|
59
|
+
default:
|
|
60
|
+
return String(term.value ?? term);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function formatLiteralSync(lit) {
|
|
64
|
+
const escaped = escapeLiteralSync(lit.value);
|
|
65
|
+
if (lit.language)
|
|
66
|
+
return `"${escaped}"@${lit.language}`;
|
|
67
|
+
const dt = lit.datatype?.value;
|
|
68
|
+
if (dt && dt !== 'http://www.w3.org/2001/XMLSchema#string') {
|
|
69
|
+
return `"${escaped}"^^<${dt}>`;
|
|
70
|
+
}
|
|
71
|
+
return `"${escaped}"`;
|
|
72
|
+
}
|
|
73
|
+
function escapeLiteralSync(s) {
|
|
74
|
+
return String(s)
|
|
75
|
+
.replace(/\\/g, '\\\\')
|
|
76
|
+
.replace(/"/g, '\\"')
|
|
77
|
+
.replace(/\n/g, '\\n')
|
|
78
|
+
.replace(/\r/g, '\\r')
|
|
79
|
+
.replace(/\t/g, '\\t');
|
|
80
|
+
}
|
|
81
|
+
function compactIriSync(iri, prefixes) {
|
|
82
|
+
if (!prefixes || Object.keys(prefixes).length === 0) {
|
|
83
|
+
return `<${iri}>`;
|
|
84
|
+
}
|
|
85
|
+
let bestPrefix = null;
|
|
86
|
+
let bestLen = 0;
|
|
87
|
+
for (const [prefix, base] of Object.entries(prefixes)) {
|
|
88
|
+
if (iri.startsWith(base) && base.length > bestLen) {
|
|
89
|
+
const local = iri.slice(base.length);
|
|
90
|
+
if (!local.startsWith('//')) {
|
|
91
|
+
bestPrefix = prefix;
|
|
92
|
+
bestLen = base.length;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!bestPrefix)
|
|
97
|
+
return `<${iri}>`;
|
|
98
|
+
const local = iri.slice(bestLen);
|
|
99
|
+
const escaped = local.replace(/([/])/g, '\\$1');
|
|
100
|
+
return `${bestPrefix}:${escaped}`;
|
|
101
|
+
}
|
|
102
|
+
function compareQuadSync(a, b) {
|
|
103
|
+
let cmp = cmpTermSync(a.subject, b.subject);
|
|
104
|
+
if (cmp !== 0)
|
|
105
|
+
return cmp;
|
|
106
|
+
cmp = cmpTermSync(a.predicate, b.predicate);
|
|
107
|
+
if (cmp !== 0)
|
|
108
|
+
return cmp;
|
|
109
|
+
return cmpTermSync(a.object, b.object);
|
|
110
|
+
}
|
|
111
|
+
function cmpTermSync(a, b) {
|
|
112
|
+
if (a.termType !== b.termType)
|
|
113
|
+
return a.termType.localeCompare(b.termType);
|
|
114
|
+
return String(a.value).localeCompare(String(b.value));
|
|
115
|
+
}
|
|
116
|
+
function groupBySubject(quads) {
|
|
117
|
+
const map = new Map();
|
|
118
|
+
for (const q of quads) {
|
|
119
|
+
const key = termKey(q.subject);
|
|
120
|
+
if (!map.has(key)) {
|
|
121
|
+
map.set(key, { subject: q.subject, triples: [] });
|
|
122
|
+
}
|
|
123
|
+
map.get(key).triples.push({ predicate: q.predicate, object: q.object });
|
|
124
|
+
}
|
|
125
|
+
return [...map.values()];
|
|
126
|
+
}
|
|
127
|
+
function termKey(term) {
|
|
128
|
+
return `${term.termType}:${term.value}`;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=write-turtle-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-turtle-sync.js","sourceRoot":"","sources":["../../src/rdf/write-turtle-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mention parser for {{...}} inline references in concept text.
|
|
3
|
+
*
|
|
4
|
+
* Pure function: takes a raw mention body (the text inside
|
|
5
|
+
* {{...}}) and returns a structured MentionParseResult.
|
|
6
|
+
*
|
|
7
|
+
* Convention: the ID always comes first, the display (render) text
|
|
8
|
+
* always comes last. Every comma-separated form follows this:
|
|
9
|
+
*
|
|
10
|
+
* {{cite:key}} cite-key (source id)
|
|
11
|
+
* {{cite:key, render term}} cite-key + render term
|
|
12
|
+
* {{urn:...}} URN reference
|
|
13
|
+
* {{urn:..., render term}} URN + render term
|
|
14
|
+
* {{numeric_id}} local concept ID
|
|
15
|
+
* {{numeric_id, render term}} local concept ID + render term
|
|
16
|
+
* {{designation}} designation matching
|
|
17
|
+
* {{designation, render term}} designation + render term
|
|
18
|
+
*
|
|
19
|
+
* @typedef {Object} MentionParseResult
|
|
20
|
+
* @property {'cite-ref' | 'urn-ref' | 'numeric' | 'designation' | 'unresolved'} kind
|
|
21
|
+
* @property {string} [key] — for 'cite-ref': the local key
|
|
22
|
+
* @property {string} [uri] — for 'urn-ref': the URN
|
|
23
|
+
* @property {string} [label] — render text (always last)
|
|
24
|
+
* @property {string} [id] — for 'numeric' / 'designation': the id
|
|
25
|
+
* @property {string} raw — the original mention body
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Parse the body of a {{...}} mention (without the braces).
|
|
29
|
+
*
|
|
30
|
+
* The function is pure: no I/O, no model lookups, no state.
|
|
31
|
+
* Resolution of the parsed result is the extractor's job.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} raw — the trimmed text inside {{...}}
|
|
34
|
+
* @returns {MentionParseResult}
|
|
35
|
+
*/
|
|
36
|
+
export type MentionKind = 'cite-ref' | 'urn-ref' | 'numeric' | 'designation' | 'unresolved' | 'fig-ref' | 'table-ref' | 'formula-ref';
|
|
37
|
+
export interface MentionParseResult {
|
|
38
|
+
kind: MentionKind;
|
|
39
|
+
key?: string;
|
|
40
|
+
uri?: string;
|
|
41
|
+
label?: string | null;
|
|
42
|
+
id?: string;
|
|
43
|
+
raw: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse the body of a {{...}} mention (without the braces).
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseMention(raw: string): MentionParseResult;
|
|
49
|
+
//# sourceMappingURL=reference-mention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-mention.d.ts","sourceRoot":"","sources":["../src/reference-mention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAUH;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAEtI,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAyD5D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mention parser for {{...}} inline references in concept text.
|
|
3
|
+
*
|
|
4
|
+
* Pure function: takes a raw mention body (the text inside
|
|
5
|
+
* {{...}}) and returns a structured MentionParseResult.
|
|
6
|
+
*
|
|
7
|
+
* Convention: the ID always comes first, the display (render) text
|
|
8
|
+
* always comes last. Every comma-separated form follows this:
|
|
9
|
+
*
|
|
10
|
+
* {{cite:key}} cite-key (source id)
|
|
11
|
+
* {{cite:key, render term}} cite-key + render term
|
|
12
|
+
* {{urn:...}} URN reference
|
|
13
|
+
* {{urn:..., render term}} URN + render term
|
|
14
|
+
* {{numeric_id}} local concept ID
|
|
15
|
+
* {{numeric_id, render term}} local concept ID + render term
|
|
16
|
+
* {{designation}} designation matching
|
|
17
|
+
* {{designation, render term}} designation + render term
|
|
18
|
+
*
|
|
19
|
+
* @typedef {Object} MentionParseResult
|
|
20
|
+
* @property {'cite-ref' | 'urn-ref' | 'numeric' | 'designation' | 'unresolved'} kind
|
|
21
|
+
* @property {string} [key] — for 'cite-ref': the local key
|
|
22
|
+
* @property {string} [uri] — for 'urn-ref': the URN
|
|
23
|
+
* @property {string} [label] — render text (always last)
|
|
24
|
+
* @property {string} [id] — for 'numeric' / 'designation': the id
|
|
25
|
+
* @property {string} raw — the original mention body
|
|
26
|
+
*/
|
|
27
|
+
const NUMERIC_RE = /^\d+(?:[.-]\d+)+$/;
|
|
28
|
+
const NVR_PREFIXES = Object.freeze([
|
|
29
|
+
{ prefix: 'fig:', kind: 'fig-ref' },
|
|
30
|
+
{ prefix: 'table:', kind: 'table-ref' },
|
|
31
|
+
{ prefix: 'formula:', kind: 'formula-ref' },
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Parse the body of a {{...}} mention (without the braces).
|
|
35
|
+
*/
|
|
36
|
+
export function parseMention(raw) {
|
|
37
|
+
const body = raw.trim();
|
|
38
|
+
// 1. cite:<key>[,render] — explicit citation reference.
|
|
39
|
+
const citeMatch = body.match(/^cite:([^,}]+)(?:,(.*))?$/);
|
|
40
|
+
if (citeMatch) {
|
|
41
|
+
const label = citeMatch[2] !== undefined ? unquoteLabel(citeMatch[2].trim()) : null;
|
|
42
|
+
return {
|
|
43
|
+
kind: 'cite-ref',
|
|
44
|
+
key: citeMatch[1].trim(),
|
|
45
|
+
label,
|
|
46
|
+
raw: body,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// 2. urn:...[,render] — URN reference.
|
|
50
|
+
const urnMatch = body.match(/^(urn:[^,}]+)(?:,(.*))?$/);
|
|
51
|
+
if (urnMatch) {
|
|
52
|
+
const label = urnMatch[2] !== undefined ? unquoteLabel(urnMatch[2].trim()) : null;
|
|
53
|
+
return {
|
|
54
|
+
kind: 'urn-ref',
|
|
55
|
+
uri: urnMatch[1].trim(),
|
|
56
|
+
label,
|
|
57
|
+
raw: body,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// 3. NVR prefixes (fig:/table:/formula:) — config-driven dispatch.
|
|
61
|
+
for (const { prefix, kind } of NVR_PREFIXES) {
|
|
62
|
+
const escPrefix = prefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
63
|
+
const match = body.match(new RegExp(`^${escPrefix}([^,}]+)(?:,(.*))?$`));
|
|
64
|
+
if (match) {
|
|
65
|
+
const label = match[2] !== undefined ? unquoteLabel(match[2].trim()) : null;
|
|
66
|
+
return { kind: kind, key: match[1].trim(), label, raw: body };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// 4. Comma-separated form: {{id, render}}.
|
|
70
|
+
// ID always comes first, render text always comes last.
|
|
71
|
+
const commaIdx = body.indexOf(',');
|
|
72
|
+
if (commaIdx !== -1) {
|
|
73
|
+
const id = body.slice(0, commaIdx).trim();
|
|
74
|
+
const label = unquoteLabel(body.slice(commaIdx + 1).trim());
|
|
75
|
+
if (NUMERIC_RE.test(id)) {
|
|
76
|
+
return { kind: 'numeric', id, label, raw: body };
|
|
77
|
+
}
|
|
78
|
+
return { kind: 'designation', id, label, raw: body };
|
|
79
|
+
}
|
|
80
|
+
// 5. Bare numeric id.
|
|
81
|
+
if (NUMERIC_RE.test(body)) {
|
|
82
|
+
return { kind: 'numeric', id: body, label: null, raw: body };
|
|
83
|
+
}
|
|
84
|
+
// 6. Anything else is unresolved at the parse layer.
|
|
85
|
+
return { kind: 'unresolved', raw: body };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Strip surrounding double quotes from a label, unescaping
|
|
89
|
+
* CSV-style "" to a single ". If the input is not quoted,
|
|
90
|
+
* return it unchanged.
|
|
91
|
+
*/
|
|
92
|
+
function unquoteLabel(label) {
|
|
93
|
+
if (label.length >= 2 && label.startsWith('"') && label.endsWith('"')) {
|
|
94
|
+
return label.slice(1, -1).replace(/""/g, '"');
|
|
95
|
+
}
|
|
96
|
+
return label;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=reference-mention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-mention.js","sourceRoot":"","sources":["../src/reference-mention.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { MentionParseResult } from './reference-mention.js';
|
|
2
|
+
import type { Concept } from './models/concept.js';
|
|
3
|
+
type RefType = 'concept' | 'bibliography' | 'figure' | 'table' | 'formula' | 'dataset' | 'typed-ref' | 'standard';
|
|
4
|
+
interface ReferenceExtras {
|
|
5
|
+
uri?: string | null;
|
|
6
|
+
citation?: unknown;
|
|
7
|
+
sourceId?: string | null;
|
|
8
|
+
resolution?: Record<string, unknown> | null;
|
|
9
|
+
lookupKey?: Record<string, unknown> | null;
|
|
10
|
+
}
|
|
11
|
+
export declare class Reference {
|
|
12
|
+
type: RefType;
|
|
13
|
+
target: string;
|
|
14
|
+
relationship: string | null;
|
|
15
|
+
source: string | null;
|
|
16
|
+
uri: string | null;
|
|
17
|
+
citation: unknown;
|
|
18
|
+
sourceId: string | null;
|
|
19
|
+
resolution: Record<string, unknown> | null;
|
|
20
|
+
lookupKey: Record<string, unknown> | null;
|
|
21
|
+
constructor(type: RefType, target: string, relationship?: string | null, source?: string | null, extras?: ReferenceExtras);
|
|
22
|
+
get dedupKey(): [RefType, unknown];
|
|
23
|
+
}
|
|
24
|
+
type Registry = Record<string, unknown>;
|
|
25
|
+
export declare function resolveBibliographyRecord(citationRef: {
|
|
26
|
+
source?: string;
|
|
27
|
+
id?: string;
|
|
28
|
+
version?: string;
|
|
29
|
+
} | null | undefined, registry: Registry): unknown;
|
|
30
|
+
export declare function findNonVerbalEntity(ref: {
|
|
31
|
+
lookupKey?: {
|
|
32
|
+
entityType?: string;
|
|
33
|
+
entityId?: string;
|
|
34
|
+
} | null;
|
|
35
|
+
}, registry: Registry): unknown;
|
|
36
|
+
export declare class ReferenceResolver {
|
|
37
|
+
extractReferences(concept: Concept): Reference[];
|
|
38
|
+
_dedup(refs: Reference[]): Reference[];
|
|
39
|
+
_extractFromText(text: string, source: string, concept: Concept): Reference[];
|
|
40
|
+
_resolveCiteRef(parsed: MentionParseResult, source: string, concept: Concept): Reference;
|
|
41
|
+
resolveReference(ref: Reference | null, registry: Registry | null): unknown;
|
|
42
|
+
_resolveNonVerbal(ref: Parameters<typeof findNonVerbalEntity>[0], registry: Registry): unknown;
|
|
43
|
+
_resolveConcept(ref: Reference, registry: Registry): unknown;
|
|
44
|
+
_resolveBibliography(ref: Reference, registry: Registry): unknown;
|
|
45
|
+
_resolveDataset(_ref: Reference, _registry: Registry): null;
|
|
46
|
+
_resolveTypedRef(_ref: Reference, _registry: Registry): null;
|
|
47
|
+
_resolveStandard(_ref: Reference, _registry: Registry): null;
|
|
48
|
+
resolveAll(concept: Concept, registry: Registry): Map<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
export declare const referenceResolver: ReferenceResolver;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=reference-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-resolver.d.ts","sourceRoot":"","sources":["../src/reference-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { ConceptRef } from './models/concept-ref.js';
|
|
2
|
+
import { parseMention } from './reference-mention.js';
|
|
3
|
+
export class Reference {
|
|
4
|
+
type;
|
|
5
|
+
target;
|
|
6
|
+
relationship;
|
|
7
|
+
source;
|
|
8
|
+
uri;
|
|
9
|
+
citation;
|
|
10
|
+
sourceId;
|
|
11
|
+
resolution;
|
|
12
|
+
lookupKey;
|
|
13
|
+
constructor(type, target, relationship, source, extras = {}) {
|
|
14
|
+
this.type = type;
|
|
15
|
+
this.target = target;
|
|
16
|
+
this.relationship = relationship ?? null;
|
|
17
|
+
this.source = source ?? null;
|
|
18
|
+
this.uri = extras.uri ?? null;
|
|
19
|
+
this.citation = extras.citation ?? null;
|
|
20
|
+
this.sourceId = extras.sourceId ?? null;
|
|
21
|
+
this.resolution = extras.resolution ?? null;
|
|
22
|
+
this.lookupKey = extras.lookupKey ?? null;
|
|
23
|
+
}
|
|
24
|
+
get dedupKey() {
|
|
25
|
+
if (this.type === 'bibliography') {
|
|
26
|
+
return ['bibliography',
|
|
27
|
+
this.sourceId ?? this.citation?.ref?.id ?? this.target];
|
|
28
|
+
}
|
|
29
|
+
if (this.type === 'figure' || this.type === 'table' || this.type === 'formula') {
|
|
30
|
+
return [this.type, this.lookupKey?.entityId ?? this.target];
|
|
31
|
+
}
|
|
32
|
+
if (this.type === 'concept') {
|
|
33
|
+
return ['concept',
|
|
34
|
+
this.lookupKey?.id
|
|
35
|
+
?? this.lookupKey?.designation
|
|
36
|
+
?? this.target];
|
|
37
|
+
}
|
|
38
|
+
return [this.type, this.target];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function refTarget(rc) {
|
|
42
|
+
if (rc.content)
|
|
43
|
+
return rc.content;
|
|
44
|
+
if (rc.ref instanceof ConceptRef) {
|
|
45
|
+
return rc.ref.id ?? rc.ref.source ?? '';
|
|
46
|
+
}
|
|
47
|
+
const ref = rc.ref;
|
|
48
|
+
return ref?.id ?? ref?.source ?? '';
|
|
49
|
+
}
|
|
50
|
+
function hyperedgeRefTarget(ref) {
|
|
51
|
+
if (!ref)
|
|
52
|
+
return '';
|
|
53
|
+
if (ref.id)
|
|
54
|
+
return ref.id;
|
|
55
|
+
if (ref.source)
|
|
56
|
+
return ref.source;
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
function getRegistryCollection(registry, key) {
|
|
60
|
+
const entry = registry[key];
|
|
61
|
+
if (!entry)
|
|
62
|
+
return null;
|
|
63
|
+
if (entry && typeof entry === 'object' && 'concepts' in entry && entry.concepts) {
|
|
64
|
+
return entry.concepts;
|
|
65
|
+
}
|
|
66
|
+
return entry;
|
|
67
|
+
}
|
|
68
|
+
export function resolveBibliographyRecord(citationRef, registry) {
|
|
69
|
+
if (!citationRef?.source || !citationRef?.id)
|
|
70
|
+
return null;
|
|
71
|
+
const bioColl = getRegistryCollection(registry, `bibliography:${citationRef.source}`);
|
|
72
|
+
if (!bioColl)
|
|
73
|
+
return null;
|
|
74
|
+
if (citationRef.version) {
|
|
75
|
+
return bioColl.byIdAnd(citationRef.id, citationRef.version);
|
|
76
|
+
}
|
|
77
|
+
return bioColl.byId(citationRef.id);
|
|
78
|
+
}
|
|
79
|
+
export function findNonVerbalEntity(ref, registry) {
|
|
80
|
+
const { entityType, entityId } = ref.lookupKey ?? {};
|
|
81
|
+
if (!entityType || !entityId)
|
|
82
|
+
return null;
|
|
83
|
+
const collection = registry[`nvr:${entityType}`];
|
|
84
|
+
if (!collection)
|
|
85
|
+
return null;
|
|
86
|
+
for (const entity of collection) {
|
|
87
|
+
const found = entity.findById(entityId);
|
|
88
|
+
if (found)
|
|
89
|
+
return found;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
export class ReferenceResolver {
|
|
94
|
+
extractReferences(concept) {
|
|
95
|
+
const refs = [];
|
|
96
|
+
for (const rc of concept.relatedConcepts) {
|
|
97
|
+
const target = refTarget(rc);
|
|
98
|
+
if (target) {
|
|
99
|
+
refs.push(new Reference('concept', target, rc.type, 'relatedConcepts', {
|
|
100
|
+
lookupKey: { id: target },
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const relations = concept.relations ?? [];
|
|
105
|
+
for (let i = 0; i < relations.length; i++) {
|
|
106
|
+
const rel = relations[i];
|
|
107
|
+
const relType = rel?.constructor?.typeTag ?? 'hyperedge';
|
|
108
|
+
const relPath = `relations[${i}]`;
|
|
109
|
+
const compTarget = hyperedgeRefTarget(rel.comprehensive ?? null);
|
|
110
|
+
if (compTarget) {
|
|
111
|
+
refs.push(new Reference('concept', compTarget, relType, `${relPath}.comprehensive`, { lookupKey: { id: compTarget } }));
|
|
112
|
+
}
|
|
113
|
+
const members = rel.members ?? rel.partitives ?? rel.parts ?? [];
|
|
114
|
+
for (let j = 0; j < members.length; j++) {
|
|
115
|
+
const m = members[j];
|
|
116
|
+
const memberRef = m?.ref ?? null;
|
|
117
|
+
const pTarget = hyperedgeRefTarget(memberRef);
|
|
118
|
+
if (!pTarget)
|
|
119
|
+
continue;
|
|
120
|
+
refs.push(new Reference('concept', pTarget, relType, `${relPath}.members[${j}]`, { lookupKey: { id: pTarget } }));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
for (const ref of concept.figures ?? []) {
|
|
124
|
+
const r = ref;
|
|
125
|
+
refs.push(new Reference('figure', r.display ?? r.entityId ?? '', 'structural', 'figures', {
|
|
126
|
+
lookupKey: { entityType: 'figure', entityId: r.entityId },
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
for (const ref of concept.tables ?? []) {
|
|
130
|
+
const r = ref;
|
|
131
|
+
refs.push(new Reference('table', r.display ?? r.entityId ?? '', 'structural', 'tables', {
|
|
132
|
+
lookupKey: { entityType: 'table', entityId: r.entityId },
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
for (const ref of concept.formulas ?? []) {
|
|
136
|
+
const r = ref;
|
|
137
|
+
refs.push(new Reference('formula', r.display ?? r.entityId ?? '', 'structural', 'formulas', {
|
|
138
|
+
lookupKey: { entityType: 'formula', entityId: r.entityId },
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
for (const lang of concept.languages) {
|
|
142
|
+
const lc = concept.localization(lang);
|
|
143
|
+
if (!lc)
|
|
144
|
+
continue;
|
|
145
|
+
for (let i = 0; i < lc.sources.length; i++) {
|
|
146
|
+
const src = lc.sources[i];
|
|
147
|
+
const ref = src.origin?.toString() ?? '';
|
|
148
|
+
if (ref) {
|
|
149
|
+
refs.push(new Reference('standard', ref, src.type, `localizations.${lang}.sources[${i}]`));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
for (const { text, source } of lc.walkTexts(`localizations.${lang}`)) {
|
|
153
|
+
for (const ref of this._extractFromText(text, source, concept)) {
|
|
154
|
+
refs.push(ref);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return this._dedup(refs);
|
|
159
|
+
}
|
|
160
|
+
_dedup(refs) {
|
|
161
|
+
const seen = new Set();
|
|
162
|
+
return refs.filter(ref => {
|
|
163
|
+
const key = JSON.stringify(ref.dedupKey);
|
|
164
|
+
if (seen.has(key))
|
|
165
|
+
return false;
|
|
166
|
+
seen.add(key);
|
|
167
|
+
return true;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
_extractFromText(text, source, concept) {
|
|
171
|
+
const refs = [];
|
|
172
|
+
const re = /\{\{([^{}]*?)\}\}/g;
|
|
173
|
+
let m;
|
|
174
|
+
while ((m = re.exec(text)) !== null) {
|
|
175
|
+
const parsed = parseMention(m[1]);
|
|
176
|
+
switch (parsed.kind) {
|
|
177
|
+
case 'cite-ref':
|
|
178
|
+
refs.push(this._resolveCiteRef(parsed, source, concept));
|
|
179
|
+
break;
|
|
180
|
+
case 'urn-ref':
|
|
181
|
+
refs.push(new Reference('concept', parsed.label ?? parsed.uri ?? '', 'embedded', source, {
|
|
182
|
+
uri: parsed.uri,
|
|
183
|
+
resolution: null,
|
|
184
|
+
}));
|
|
185
|
+
break;
|
|
186
|
+
case 'fig-ref':
|
|
187
|
+
refs.push(new Reference('figure', parsed.label ?? parsed.key ?? '', 'embedded', source, {
|
|
188
|
+
lookupKey: { entityType: 'figure', entityId: parsed.key },
|
|
189
|
+
}));
|
|
190
|
+
break;
|
|
191
|
+
case 'table-ref':
|
|
192
|
+
refs.push(new Reference('table', parsed.label ?? parsed.key ?? '', 'embedded', source, {
|
|
193
|
+
lookupKey: { entityType: 'table', entityId: parsed.key },
|
|
194
|
+
}));
|
|
195
|
+
break;
|
|
196
|
+
case 'formula-ref':
|
|
197
|
+
refs.push(new Reference('formula', parsed.label ?? parsed.key ?? '', 'embedded', source, {
|
|
198
|
+
lookupKey: { entityType: 'formula', entityId: parsed.key },
|
|
199
|
+
}));
|
|
200
|
+
break;
|
|
201
|
+
case 'numeric':
|
|
202
|
+
refs.push(new Reference('concept', parsed.label ?? parsed.id ?? '', 'embedded', source, {
|
|
203
|
+
lookupKey: { id: parsed.id },
|
|
204
|
+
}));
|
|
205
|
+
break;
|
|
206
|
+
case 'designation':
|
|
207
|
+
refs.push(new Reference('concept', parsed.label ?? parsed.id ?? '', 'embedded', source, {
|
|
208
|
+
lookupKey: { designation: parsed.id },
|
|
209
|
+
}));
|
|
210
|
+
break;
|
|
211
|
+
case 'unresolved':
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return refs;
|
|
216
|
+
}
|
|
217
|
+
_resolveCiteRef(parsed, source, concept) {
|
|
218
|
+
const sourceEntry = concept?.findSourceById?.(parsed.key ?? '') ?? null;
|
|
219
|
+
if (!sourceEntry) {
|
|
220
|
+
return new Reference('bibliography', parsed.label ?? parsed.key ?? '', null, source, {
|
|
221
|
+
sourceId: parsed.key,
|
|
222
|
+
citation: null,
|
|
223
|
+
resolution: { kind: 'unresolved', reason: 'no-source' },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
const displayTarget = parsed.label
|
|
227
|
+
?? sourceEntry.origin?.toString()
|
|
228
|
+
?? sourceEntry.id
|
|
229
|
+
?? '';
|
|
230
|
+
return new Reference('bibliography', displayTarget, null, source, {
|
|
231
|
+
sourceId: sourceEntry.id,
|
|
232
|
+
citation: sourceEntry.origin,
|
|
233
|
+
resolution: { kind: 'resolved', sourceId: sourceEntry.id },
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
resolveReference(ref, registry) {
|
|
237
|
+
if (ref == null || registry == null)
|
|
238
|
+
return null;
|
|
239
|
+
switch (ref.type) {
|
|
240
|
+
case 'concept': return this._resolveConcept(ref, registry);
|
|
241
|
+
case 'bibliography': return this._resolveBibliography(ref, registry);
|
|
242
|
+
case 'figure':
|
|
243
|
+
case 'table':
|
|
244
|
+
case 'formula': return this._resolveNonVerbal(ref, registry);
|
|
245
|
+
case 'dataset': return this._resolveDataset(ref, registry);
|
|
246
|
+
case 'typed-ref': return this._resolveTypedRef(ref, registry);
|
|
247
|
+
case 'standard': return this._resolveStandard(ref, registry);
|
|
248
|
+
default: return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
_resolveNonVerbal(ref, registry) {
|
|
252
|
+
return findNonVerbalEntity(ref, registry);
|
|
253
|
+
}
|
|
254
|
+
_resolveConcept(ref, registry) {
|
|
255
|
+
const lookupKey = ref.lookupKey;
|
|
256
|
+
if (lookupKey?.id) {
|
|
257
|
+
const dataset = lookupKey.dataset;
|
|
258
|
+
if (dataset) {
|
|
259
|
+
return getRegistryCollection(registry, dataset)?.byId(lookupKey.id) ?? null;
|
|
260
|
+
}
|
|
261
|
+
for (const key of Object.keys(registry)) {
|
|
262
|
+
const found = getRegistryCollection(registry, key)?.byId(lookupKey.id);
|
|
263
|
+
if (found)
|
|
264
|
+
return found;
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
const resolution = ref.resolution;
|
|
269
|
+
if (ref.uri && resolution?.datasetId) {
|
|
270
|
+
return getRegistryCollection(registry, resolution.datasetId)?.byId(resolution.conceptId ?? '') ?? null;
|
|
271
|
+
}
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
_resolveBibliography(ref, registry) {
|
|
275
|
+
const citation = ref.citation;
|
|
276
|
+
if (citation) {
|
|
277
|
+
return resolveBibliographyRecord(citation.ref ?? null, registry) ?? citation;
|
|
278
|
+
}
|
|
279
|
+
const resolution = ref.resolution;
|
|
280
|
+
if (ref.uri && resolution?.source) {
|
|
281
|
+
return resolveBibliographyRecord(resolution, registry) ?? null;
|
|
282
|
+
}
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
_resolveDataset(_ref, _registry) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
_resolveTypedRef(_ref, _registry) {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
_resolveStandard(_ref, _registry) {
|
|
292
|
+
return null;
|
|
293
|
+
}
|
|
294
|
+
resolveAll(concept, registry) {
|
|
295
|
+
const resolved = new Map();
|
|
296
|
+
for (const ref of this.extractReferences(concept)) {
|
|
297
|
+
if (ref.type === 'concept' || ref.type === 'bibliography'
|
|
298
|
+
|| ref.type === 'figure' || ref.type === 'table' || ref.type === 'formula') {
|
|
299
|
+
const target = this.resolveReference(ref, registry);
|
|
300
|
+
if (target != null) {
|
|
301
|
+
const key = ref.target ?? ref.uri ?? ref.sourceId;
|
|
302
|
+
if (key != null)
|
|
303
|
+
resolved.set(key, target);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return resolved;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
export const referenceResolver = new ReferenceResolver();
|
|
311
|
+
//# sourceMappingURL=reference-resolver.js.map
|