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,58 @@
|
|
|
1
|
+
import { DATASET_ASSETS } from '../dataset-asset.js';
|
|
2
|
+
export class AssetIndex {
|
|
3
|
+
_paths = new Set();
|
|
4
|
+
get paths() {
|
|
5
|
+
return [...this._paths].sort();
|
|
6
|
+
}
|
|
7
|
+
get size() {
|
|
8
|
+
return this._paths.size;
|
|
9
|
+
}
|
|
10
|
+
register(path) {
|
|
11
|
+
if (path == null)
|
|
12
|
+
return;
|
|
13
|
+
this._paths.add(this._normalize(path));
|
|
14
|
+
}
|
|
15
|
+
has(path) {
|
|
16
|
+
if (path == null)
|
|
17
|
+
return false;
|
|
18
|
+
return this._paths.has(this._normalize(path));
|
|
19
|
+
}
|
|
20
|
+
[Symbol.iterator]() {
|
|
21
|
+
return this._paths[Symbol.iterator]();
|
|
22
|
+
}
|
|
23
|
+
_normalize(path) {
|
|
24
|
+
return String(path).replace(/^\//, '');
|
|
25
|
+
}
|
|
26
|
+
static async fromGcrPackage(pkg) {
|
|
27
|
+
const index = new AssetIndex();
|
|
28
|
+
const names = await pkg.imageFileNames();
|
|
29
|
+
for (const name of names) {
|
|
30
|
+
index.register(name);
|
|
31
|
+
}
|
|
32
|
+
return index;
|
|
33
|
+
}
|
|
34
|
+
static fromDirectory(datasetPath, fs) {
|
|
35
|
+
const index = new AssetIndex();
|
|
36
|
+
const imagesAsset = DATASET_ASSETS.find(a => a.type === 'directory' && a.path === 'images');
|
|
37
|
+
if (!imagesAsset)
|
|
38
|
+
return index;
|
|
39
|
+
const imagesDir = `${datasetPath}/${imagesAsset.path}`;
|
|
40
|
+
_walkDir(fs, imagesDir, imagesAsset.path, index);
|
|
41
|
+
return index;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function _walkDir(fs, dirPath, relativePrefix, index) {
|
|
45
|
+
if (!fs.existsSync(dirPath))
|
|
46
|
+
return;
|
|
47
|
+
for (const entry of fs.readdirSync(dirPath, { withFileTypes: true })) {
|
|
48
|
+
const fullPath = `${dirPath}/${entry.name}`;
|
|
49
|
+
const relPath = `${relativePrefix}/${entry.name}`;
|
|
50
|
+
if (entry.isDirectory()) {
|
|
51
|
+
_walkDir(fs, fullPath, relPath, index);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
index.register(relPath);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=asset-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-index.js","sourceRoot":"","sources":["../../src/validators/asset-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,MAAM,OAAO,UAAU;IACb,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IAExC,IAAI,KAAK;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,IAA+B;QACtC,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,IAA+B;QACjC,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAe;QACzC,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,WAAmB,EAAE,EAAU;QAClD,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAI,cAA0C,CAAC,IAAI,CAClE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACvD,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,EAAU,EAAE,OAAe,EAAE,cAAsB,EAAE,KAAiB;IACtF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import type { Concept } from '../models/concept.js';
|
|
3
|
+
import type { ValidationResult } from './validation-result.js';
|
|
4
|
+
export declare class BinaryHasPartRedundancyRule extends ValidationRule {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=binary-has-part-redundancy-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-has-part-redundancy-rule.d.ts","sourceRoot":"","sources":["../../src/validators/binary-has-part-redundancy-rule.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgB/D,qBAAa,2BAA4B,SAAQ,cAAc;;IAGpD,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CA6C3E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Warns when binary `has_part` / `is_part_of` edges duplicate
|
|
2
|
+
// PartitiveHyperedge members, or when a concept has many binary
|
|
3
|
+
// has_part edges that should be consolidated into a PartitiveHyperedge.
|
|
4
|
+
//
|
|
5
|
+
// Per TODO.partitive-relation-v2 item 14, binary edges and
|
|
6
|
+
// PartitiveRelations coexist by design. The asymmetry is pragmatic:
|
|
7
|
+
// binary edges are compact for single pairwise facts; relations
|
|
8
|
+
// carry completeness/plurality/criterion metadata. The redundancy
|
|
9
|
+
// case (same fact encoded both ways) is harmless data-wise but
|
|
10
|
+
// wasteful and should be flagged for migration.
|
|
11
|
+
//
|
|
12
|
+
// Severity: warning. Never blocks save.
|
|
13
|
+
import { ValidationRule } from './validation-rule.js';
|
|
14
|
+
import { refKey } from './ref-keys.js';
|
|
15
|
+
const BINARY_HAS_PART_TYPES = new Set(['has_part', 'is_part_of']);
|
|
16
|
+
export class BinaryHasPartRedundancyRule extends ValidationRule {
|
|
17
|
+
constructor() { super('binary-has-part-redundancy', 'warning'); }
|
|
18
|
+
validate(concept, path, result) {
|
|
19
|
+
const relations = concept.relations ?? [];
|
|
20
|
+
// Collect partitive refs from PartitiveRelations.
|
|
21
|
+
const relationTargets = new Set();
|
|
22
|
+
for (const rel of relations) {
|
|
23
|
+
const compKey = refKey(rel?.comprehensive ?? null);
|
|
24
|
+
const members = rel?.partitives ?? rel?.parts ?? [];
|
|
25
|
+
for (const member of members) {
|
|
26
|
+
const ref = (member?.ref ?? member ?? null);
|
|
27
|
+
const key = refKey(ref);
|
|
28
|
+
if (key && key !== compKey)
|
|
29
|
+
relationTargets.add(key);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Collect binary has_part refs.
|
|
33
|
+
const binaryTargets = new Set();
|
|
34
|
+
const related = concept.relatedConcepts ?? [];
|
|
35
|
+
for (const rc of related) {
|
|
36
|
+
if (!BINARY_HAS_PART_TYPES.has(rc.type))
|
|
37
|
+
continue;
|
|
38
|
+
const key = refKey((rc?.ref ?? null));
|
|
39
|
+
if (key)
|
|
40
|
+
binaryTargets.add(key);
|
|
41
|
+
}
|
|
42
|
+
// Redundancy: refs in both.
|
|
43
|
+
for (const target of relationTargets) {
|
|
44
|
+
if (binaryTargets.has(target)) {
|
|
45
|
+
this.addIssue(result, `${path}relatedConcepts`, `binary has_part edge for (${target}) is redundant — already in a ` +
|
|
46
|
+
`PartitiveHyperedge member; pick one encoding to avoid divergence`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Cluster: 3+ binary has_part edges suggests PartitiveHyperedge territory.
|
|
50
|
+
if (binaryTargets.size >= 3) {
|
|
51
|
+
this.addIssue(result, `${path}relatedConcepts`, `${binaryTargets.size} binary has_part edges on this concept; ` +
|
|
52
|
+
`consider converting to a PartitiveHyperedge (which can carry ` +
|
|
53
|
+
`completeness, multiplicity, and criterion metadata)`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=binary-has-part-redundancy-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-has-part-redundancy-rule.js","sourceRoot":"","sources":["../../src/validators/binary-has-part-redundancy-rule.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,2DAA2D;AAC3D,oEAAoE;AACpE,gEAAgE;AAChE,kEAAkE;AAClE,+DAA+D;AAC/D,gDAAgD;AAChD,EAAE;AACF,wCAAwC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAavC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAElE,MAAM,OAAO,2BAA4B,SAAQ,cAAc;IAC7D,gBAAgB,KAAK,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAExD,QAAQ,CAAC,OAAgB,EAAE,IAAY,EAAE,MAAwB;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAE1C,kDAAkD;QAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,SAAgD,EAAE,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;YACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAA4C,CAAC;gBACvF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,GAAG,IAAI,GAAG,KAAK,OAAO;oBAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAC9C,KAAK,MAAM,EAAE,IAAI,OAA2C,EAAE,CAAC;YAC7D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAA4C,CAAC,CAAC;YACjF,IAAI,GAAG;gBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,4BAA4B;QAC5B,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAClB,GAAG,IAAI,iBAAiB,EACxB,6BAA6B,MAAM,gCAAgC;oBACnE,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,aAAa,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAClB,GAAG,IAAI,iBAAiB,EACxB,GAAG,aAAa,CAAC,IAAI,0CAA0C;gBAC/D,+DAA+D;gBAC/D,qDAAqD,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import type { Concept } from '../models/concept.js';
|
|
3
|
+
import { ValidationResult } from './validation-result.js';
|
|
4
|
+
export declare class LanguageCodeRule extends ValidationRule {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
7
|
+
}
|
|
8
|
+
export declare class DesignationTypeRule extends ValidationRule {
|
|
9
|
+
constructor();
|
|
10
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class EntryStatusRule extends ValidationRule {
|
|
13
|
+
constructor();
|
|
14
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class ConceptValidator {
|
|
17
|
+
_rules: ValidationRule[];
|
|
18
|
+
addRule(rule: ValidationRule): this;
|
|
19
|
+
validate(concept: Concept): ValidationResult;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=concept-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concept-validator.d.ts","sourceRoot":"","sources":["../../src/validators/concept-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU1D,qBAAa,gBAAiB,SAAQ,cAAc;;IAEzC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CAS3E;AAED,qBAAa,mBAAoB,SAAQ,cAAc;;IAE5C,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CAc3E;AAED,qBAAa,eAAgB,SAAQ,cAAc;;IAExC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CAW3E;AAED,qBAAa,gBAAgB;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAM;IAE9B,OAAO,CAAC,IAAI,EAAE,cAAc;IAK5B,QAAQ,CAAC,OAAO,EAAE,OAAO;CAyB1B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import { ValidationResult } from './validation-result.js';
|
|
3
|
+
const VALID_DESIGNATION_TYPES = new Set([
|
|
4
|
+
'expression', 'abbreviation', 'symbol', 'graphical symbol', 'graphical_symbol',
|
|
5
|
+
]);
|
|
6
|
+
const VALID_ENTRY_STATUSES = new Set([
|
|
7
|
+
'valid', 'draft', 'retired', 'notValid', 'superseded', 'withdrawn',
|
|
8
|
+
]);
|
|
9
|
+
export class LanguageCodeRule extends ValidationRule {
|
|
10
|
+
constructor() { super('language-code'); }
|
|
11
|
+
validate(concept, path, result) {
|
|
12
|
+
for (const lang of concept.languages) {
|
|
13
|
+
if (!/^[a-z]{3}$/.test(lang)) {
|
|
14
|
+
this.addIssue(result, `${path}localizations.${lang}`, `Invalid language code '${lang}': expected ISO 639-3 (3 lowercase letters)`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class DesignationTypeRule extends ValidationRule {
|
|
20
|
+
constructor() { super('designation-type'); }
|
|
21
|
+
validate(concept, path, result) {
|
|
22
|
+
for (const lang of concept.languages) {
|
|
23
|
+
const lc = concept.localization(lang);
|
|
24
|
+
if (!lc)
|
|
25
|
+
continue;
|
|
26
|
+
for (let i = 0; i < lc.terms.length; i++) {
|
|
27
|
+
const type = lc.terms[i].type;
|
|
28
|
+
if (type && !VALID_DESIGNATION_TYPES.has(type)) {
|
|
29
|
+
this.addIssue(result, `${path}localizations.${lang}.terms[${i}].type`, `Unknown designation type '${type}'`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class EntryStatusRule extends ValidationRule {
|
|
36
|
+
constructor() { super('entry-status'); }
|
|
37
|
+
validate(concept, path, result) {
|
|
38
|
+
for (const lang of concept.languages) {
|
|
39
|
+
const lc = concept.localization(lang);
|
|
40
|
+
if (!lc)
|
|
41
|
+
continue;
|
|
42
|
+
if (lc.entryStatus && !VALID_ENTRY_STATUSES.has(lc.entryStatus)) {
|
|
43
|
+
this.addIssue(result, `${path}localizations.${lang}.entry_status`, `Unknown entry status '${lc.entryStatus}'`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class ConceptValidator {
|
|
49
|
+
_rules = [];
|
|
50
|
+
addRule(rule) {
|
|
51
|
+
this._rules.push(rule);
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
validate(concept) {
|
|
55
|
+
const result = new ValidationResult();
|
|
56
|
+
if (!concept.id) {
|
|
57
|
+
result.addError('id', 'Concept must have an id');
|
|
58
|
+
}
|
|
59
|
+
if (concept.languages.length === 0) {
|
|
60
|
+
result.addWarning('localizations', 'Concept must have at least one localization');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
for (const lang of concept.languages) {
|
|
64
|
+
const lc = concept.localization(lang);
|
|
65
|
+
if (!lc || lc.terms.length === 0) {
|
|
66
|
+
result.addWarning(`localizations.${lang}.terms`, `Localization '${lang}' must have at least one term`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const rule of this._rules) {
|
|
71
|
+
rule.validate(concept, '', result);
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=concept-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concept-validator.js","sourceRoot":"","sources":["../../src/validators/concept-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import type { Concept } from '../models/concept.js';
|
|
3
|
+
import type { ValidationResult } from './validation-result.js';
|
|
4
|
+
export declare class DelimitingCoherenceRule extends ValidationRule {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=delimiting-coherence-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delimiting-coherence-rule.d.ts","sourceRoot":"","sources":["../../src/validators/delimiting-coherence-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU/D,qBAAa,uBAAwB,SAAQ,cAAc;;IAGhD,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CAQ3E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import { refKey, criterionKey } from './ref-keys.js';
|
|
3
|
+
export class DelimitingCoherenceRule extends ValidationRule {
|
|
4
|
+
constructor() { super('delimiting-coherence'); }
|
|
5
|
+
validate(concept, path, result) {
|
|
6
|
+
const relations = concept.relations ?? [];
|
|
7
|
+
if (relations.length === 0)
|
|
8
|
+
return;
|
|
9
|
+
_checkOveruse(relations, path, result);
|
|
10
|
+
_checkInconsistentAcrossRelations(relations, path, result, this);
|
|
11
|
+
_checkDelimitingWithoutCriterion(relations, path, result);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function _checkOveruse(relations, path, result) {
|
|
15
|
+
for (let i = 0; i < relations.length; i++) {
|
|
16
|
+
const rel = relations[i];
|
|
17
|
+
const members = rel?.partitives ?? [];
|
|
18
|
+
if (members.length < 2)
|
|
19
|
+
continue;
|
|
20
|
+
const delimitingCount = members.filter(m => m?.is_delimiting === true).length;
|
|
21
|
+
if (delimitingCount === members.length) {
|
|
22
|
+
result.addWarning(`${path}partitiveRelations[${i}]`, `every partitive is marked is_delimiting=true; typically only ` +
|
|
23
|
+
`some parts distinguish the comprehensive from coordinate concepts`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function _checkInconsistentAcrossRelations(relations, path, result, rule) {
|
|
28
|
+
const byCriterion = new Map();
|
|
29
|
+
for (let i = 0; i < relations.length; i++) {
|
|
30
|
+
const rel = relations[i];
|
|
31
|
+
const critKey = criterionKey(rel?.criterion ?? null);
|
|
32
|
+
if (critKey == null)
|
|
33
|
+
continue;
|
|
34
|
+
if (!byCriterion.has(critKey))
|
|
35
|
+
byCriterion.set(critKey, []);
|
|
36
|
+
byCriterion.get(critKey).push({ rel: rel, i });
|
|
37
|
+
}
|
|
38
|
+
for (const [, group] of byCriterion) {
|
|
39
|
+
const refDelimiting = new Map();
|
|
40
|
+
for (const { rel, i } of group) {
|
|
41
|
+
for (const m of rel?.partitives ?? []) {
|
|
42
|
+
const key = refKey(m?.ref ?? null);
|
|
43
|
+
if (key == null)
|
|
44
|
+
continue;
|
|
45
|
+
const delimiting = m?.is_delimiting === true;
|
|
46
|
+
const existing = refDelimiting.get(key);
|
|
47
|
+
if (existing != null && existing.delimiting !== delimiting) {
|
|
48
|
+
rule.addIssue(result, `${path}partitiveRelations[${i}].partitives`, `inconsistent is_delimiting for ref (${key}) across ` +
|
|
49
|
+
`relations ${existing.relIdx} and ${i} with the same ` +
|
|
50
|
+
`criterion; ISO 704 requires delimiting claims about the ` +
|
|
51
|
+
`same part to be consistent`);
|
|
52
|
+
}
|
|
53
|
+
else if (existing == null) {
|
|
54
|
+
refDelimiting.set(key, { delimiting, relIdx: i });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function _checkDelimitingWithoutCriterion(relations, path, result) {
|
|
61
|
+
for (let i = 0; i < relations.length; i++) {
|
|
62
|
+
const rel = relations[i];
|
|
63
|
+
if (rel?.criterion)
|
|
64
|
+
continue;
|
|
65
|
+
const anyDelimiting = (rel?.partitives ?? []).some(m => m?.is_delimiting === true);
|
|
66
|
+
if (anyDelimiting) {
|
|
67
|
+
result.addWarning(`${path}partitiveRelations[${i}].criterion`, `relation has is_delimiting=true on partitives but no criterion; ` +
|
|
68
|
+
`delimiting is meaningful only relative to a subdivision criterion`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=delimiting-coherence-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delimiting-coherence-rule.js","sourceRoot":"","sources":["../../src/validators/delimiting-coherence-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const OPEN_ENDED_PATTERNS: readonly ReadonlyRegExp[];
|
|
2
|
+
export interface ExtensionalDefinitionLike {
|
|
3
|
+
type?: string | null;
|
|
4
|
+
content?: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface ExtensionalCompletenessIssue {
|
|
7
|
+
rule: 'ISO-704-6.4.5.1';
|
|
8
|
+
severity: 'warning';
|
|
9
|
+
message: string;
|
|
10
|
+
match: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function checkExtensionalCompleteness(definition: ExtensionalDefinitionLike | null | undefined): ExtensionalCompletenessIssue | null;
|
|
13
|
+
interface ReadonlyRegExp extends RegExp {
|
|
14
|
+
readonly source: string;
|
|
15
|
+
readonly flags: string;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=extensional-completeness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensional-completeness.d.ts","sourceRoot":"","sources":["../../src/validators/extensional-completeness.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB,EAQ3B,SAAS,cAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,GACvD,4BAA4B,GAAG,IAAI,CAiBrC;AAED,UAAU,cAAe,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Extensional definition completeness check.
|
|
2
|
+
//
|
|
3
|
+
// ISO 704:2022 §6.4.5.1 requires extensional definitions to enumerate
|
|
4
|
+
// exhaustively. Open-ended wording ("etc.", "...", "and so on") in an
|
|
5
|
+
// extensional definition violates this — the reader cannot reconstruct
|
|
6
|
+
// the full set from the definition text.
|
|
7
|
+
//
|
|
8
|
+
// This is a pure function, not a ValidationRule, because the check
|
|
9
|
+
// applies per-definition, not per-concept. Callers (validators, UI
|
|
10
|
+
// components) iterate definitions and call this on each.
|
|
11
|
+
//
|
|
12
|
+
// Per TODO 14 (external-concepts-ellipsis-rendering), mirroring the
|
|
13
|
+
// concept-model `check-definition-rules` §6.4.5.1.
|
|
14
|
+
export const OPEN_ENDED_PATTERNS = [
|
|
15
|
+
/\.\.\./,
|
|
16
|
+
/\betc\b\.?/i,
|
|
17
|
+
/\band similar\b/i,
|
|
18
|
+
/\band so on\b/i,
|
|
19
|
+
/\band the like\b/i,
|
|
20
|
+
/\band others?\b/i,
|
|
21
|
+
/\bincluding\b/i,
|
|
22
|
+
];
|
|
23
|
+
export function checkExtensionalCompleteness(definition) {
|
|
24
|
+
if (definition?.type !== 'extensional')
|
|
25
|
+
return null;
|
|
26
|
+
const content = definition?.content ?? '';
|
|
27
|
+
for (const pattern of OPEN_ENDED_PATTERNS) {
|
|
28
|
+
const match = content.match(pattern);
|
|
29
|
+
if (match) {
|
|
30
|
+
return {
|
|
31
|
+
rule: 'ISO-704-6.4.5.1',
|
|
32
|
+
severity: 'warning',
|
|
33
|
+
message: `Extensional definition contains open-ended wording '${match[0]}'; ` +
|
|
34
|
+
'ISO 704:2022 §6.4.5.1 requires exhaustive enumeration.',
|
|
35
|
+
match: match[0],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=extensional-completeness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensional-completeness.js","sourceRoot":"","sources":["../../src/validators/extensional-completeness.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,uEAAuE;AACvE,yCAAyC;AACzC,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AACnE,yDAAyD;AACzD,EAAE;AACF,oEAAoE;AACpE,mDAAmD;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;CACY,CAAC;AAc/B,MAAM,UAAU,4BAA4B,CAC1C,UAAwD;IAExD,IAAI,UAAU,EAAE,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EACL,uDAAuD,KAAK,CAAC,CAAC,CAAC,KAAK;oBACpE,wDAAwD;gBAC1D,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import type { Concept } from '../models/concept.js';
|
|
3
|
+
import type { ValidationResult } from './validation-result.js';
|
|
4
|
+
export declare class ExternalConceptShapeRule extends ValidationRule {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=external-concept-shape-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-concept-shape-rule.d.ts","sourceRoot":"","sources":["../../src/validators/external-concept-shape-rule.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,qBAAa,wBAAyB,SAAQ,cAAc;;IAGjD,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CA0C3E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Validates ExternalConcept shape (status: external).
|
|
2
|
+
//
|
|
3
|
+
// Per TODO.partitive-relation-v2 item 06, an ExternalConcept is a
|
|
4
|
+
// ManagedConcept with status: external. External concepts:
|
|
5
|
+
// - MUST have at least one designation (the name by which they're referenced)
|
|
6
|
+
// - MUST NOT have a definition (contradicts status: external)
|
|
7
|
+
// - MUST NOT have sources (we don't define them)
|
|
8
|
+
//
|
|
9
|
+
// Severity: error. An external concept with a definition or sources
|
|
10
|
+
// contradicts the semantic role of "external" and should be re-typed
|
|
11
|
+
// to a real concept status (valid, draft, etc.).
|
|
12
|
+
import { ValidationRule } from './validation-rule.js';
|
|
13
|
+
export class ExternalConceptShapeRule extends ValidationRule {
|
|
14
|
+
constructor() { super('external-concept-shape', 'error'); }
|
|
15
|
+
validate(concept, path, result) {
|
|
16
|
+
if (concept.status !== 'external')
|
|
17
|
+
return;
|
|
18
|
+
// Every concept — even an external one — needs at least one
|
|
19
|
+
// designation (the name by which it is referenced).
|
|
20
|
+
let designationCount = 0;
|
|
21
|
+
for (const lang of concept.languages ?? []) {
|
|
22
|
+
const lc = concept.localization?.(lang);
|
|
23
|
+
if (!lc)
|
|
24
|
+
continue;
|
|
25
|
+
designationCount += (lc.terms ?? []).length;
|
|
26
|
+
}
|
|
27
|
+
if (designationCount === 0) {
|
|
28
|
+
this.addIssue(result, `${path}localizations.*.terms`, 'ExternalConcept has no designations; every concept (including external) ' +
|
|
29
|
+
'needs at least one designation (the name by which it is referenced)');
|
|
30
|
+
}
|
|
31
|
+
// External concepts must NOT have a definition or sources.
|
|
32
|
+
for (const lang of concept.languages ?? []) {
|
|
33
|
+
const lc = concept.localization?.(lang);
|
|
34
|
+
if (!lc)
|
|
35
|
+
continue;
|
|
36
|
+
if ((lc.definitions ?? []).length > 0) {
|
|
37
|
+
this.addIssue(result, `${path}localizations.${lang}.definitions`, `ExternalConcept has a definition in language '${lang}'; ` +
|
|
38
|
+
`external concepts are referenced but not defined here ` +
|
|
39
|
+
`(move the definition to the providing dataset and add a provided_by edge)`);
|
|
40
|
+
}
|
|
41
|
+
if ((lc.sources ?? []).length > 0) {
|
|
42
|
+
this.addIssue(result, `${path}localizations.${lang}.sources`, `ExternalConcept has sources in language '${lang}'; ` +
|
|
43
|
+
`external concepts should not carry sources (sources belong on the providing concept)`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=external-concept-shape-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-concept-shape-rule.js","sourceRoot":"","sources":["../../src/validators/external-concept-shape-rule.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,kEAAkE;AAClE,2DAA2D;AAC3D,gFAAgF;AAChF,gEAAgE;AAChE,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AACpE,qEAAqE;AACrE,iDAAiD;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,gBAAgB,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAElD,QAAQ,CAAC,OAAgB,EAAE,IAAY,EAAE,MAAwB;QACxE,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO;QAE1C,4DAA4D;QAC5D,oDAAoD;QACpD,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,gBAAgB,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9C,CAAC;QACD,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAClB,GAAG,IAAI,uBAAuB,EAC9B,0EAA0E;gBAC1E,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,EAAE;gBAAE,SAAS;YAElB,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAClB,GAAG,IAAI,iBAAiB,IAAI,cAAc,EAC1C,iDAAiD,IAAI,KAAK;oBAC1D,wDAAwD;oBACxD,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAClB,GAAG,IAAI,iBAAiB,IAAI,UAAU,EACtC,4CAA4C,IAAI,KAAK;oBACrD,sFAAsF,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ValidationResult } from './validation-result.js';
|
|
2
|
+
import type { GcrPackage } from '../gcr-reader.js';
|
|
3
|
+
export declare class GcrValidator {
|
|
4
|
+
validate(pkg: GcrPackage): Promise<ValidationResult>;
|
|
5
|
+
_validateMetadata(pkg: GcrPackage, result: ValidationResult): Promise<void>;
|
|
6
|
+
_validateConcepts(pkg: GcrPackage, result: ValidationResult): Promise<void>;
|
|
7
|
+
_validateAssets(pkg: GcrPackage, result: ValidationResult): Promise<void>;
|
|
8
|
+
_validateFileAsset(pkg: GcrPackage, path: string, result: ValidationResult): Promise<void>;
|
|
9
|
+
_validateDirectoryAsset(pkg: GcrPackage, dirPath: string, result: ValidationResult): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=gcr-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcr-validator.d.ts","sourceRoot":"","sources":["../../src/validators/gcr-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,qBAAa,YAAY;IACjB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQpD,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3E,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzE,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhG,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;CAa1F"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as yaml from 'js-yaml';
|
|
2
|
+
import { DATASET_ASSETS } from '../dataset-asset.js';
|
|
3
|
+
import { ValidationResult } from './validation-result.js';
|
|
4
|
+
export class GcrValidator {
|
|
5
|
+
async validate(pkg) {
|
|
6
|
+
const result = new ValidationResult();
|
|
7
|
+
await this._validateMetadata(pkg, result);
|
|
8
|
+
await this._validateConcepts(pkg, result);
|
|
9
|
+
await this._validateAssets(pkg, result);
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
async _validateMetadata(pkg, result) {
|
|
13
|
+
const raw = await pkg.readText('metadata.yaml');
|
|
14
|
+
if (!raw) {
|
|
15
|
+
result.addError('metadata.yaml is missing');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let meta;
|
|
19
|
+
try {
|
|
20
|
+
meta = yaml.load(raw);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
result.addError(`metadata.yaml: invalid YAML: ${e.message}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!meta.shortname)
|
|
27
|
+
result.addError('metadata.yaml missing shortname');
|
|
28
|
+
if (!meta.version)
|
|
29
|
+
result.addError('metadata.yaml missing version');
|
|
30
|
+
if (meta.concept_count == null)
|
|
31
|
+
result.addError('metadata.yaml missing concept_count');
|
|
32
|
+
}
|
|
33
|
+
async _validateConcepts(pkg, result) {
|
|
34
|
+
const ids = await pkg.conceptIds();
|
|
35
|
+
if (ids.length === 0) {
|
|
36
|
+
result.addError('No concept files found in concepts/');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async _validateAssets(pkg, result) {
|
|
40
|
+
for (const asset of DATASET_ASSETS) {
|
|
41
|
+
if (asset.type === 'file') {
|
|
42
|
+
await this._validateFileAsset(pkg, asset.path, result);
|
|
43
|
+
}
|
|
44
|
+
else if (asset.type === 'directory') {
|
|
45
|
+
this._validateDirectoryAsset(pkg, asset.path, result);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async _validateFileAsset(pkg, path, result) {
|
|
50
|
+
const raw = await pkg.readText(path);
|
|
51
|
+
if (!raw)
|
|
52
|
+
return;
|
|
53
|
+
try {
|
|
54
|
+
yaml.load(raw);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
const err = e;
|
|
58
|
+
result.addError(`${path}: invalid YAML at line ${err.mark?.line ?? '?'}: ${err.message}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
_validateDirectoryAsset(pkg, dirPath, result) {
|
|
62
|
+
let hasFiles = false;
|
|
63
|
+
let hasEntries = false;
|
|
64
|
+
for (const entry of pkg.entryPaths()) {
|
|
65
|
+
if (entry.path.startsWith(`${dirPath}/`)) {
|
|
66
|
+
hasEntries = true;
|
|
67
|
+
if (!entry.dir)
|
|
68
|
+
hasFiles = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (hasEntries && !hasFiles) {
|
|
72
|
+
result.addWarning(`${dirPath}/ directory exists but is empty`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=gcr-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcr-validator.js","sourceRoot":"","sources":["../../src/validators/gcr-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,QAAQ,CAAC,GAAe;QAC5B,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAe,EAAE,MAAwB;QAC/D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,IAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAA4B,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAK,CAAC,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;QACzE,IAAI,CAAC,IAAK,CAAC,OAAO;YAAE,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACrE,IAAI,IAAK,CAAC,aAAa,IAAI,IAAI;YAAE,MAAM,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAe,EAAE,MAAwB;QAC/D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAe,EAAE,MAAwB;QAC7D,KAAK,MAAM,KAAK,IAAI,cAAyC,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAe,EAAE,IAAY,EAAE,MAAwB;QAC9E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAyC,CAAC;YACtD,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,0BAA0B,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,uBAAuB,CAAC,GAAe,EAAE,OAAe,EAAE,MAAwB;QAChF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,GAAG;oBAAE,QAAQ,GAAG,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;QACD,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,iCAAiC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ValidationRule } from './validation-rule.js';
|
|
2
|
+
import type { Concept } from '../models/concept.js';
|
|
3
|
+
import type { ValidationResult } from './validation-result.js';
|
|
4
|
+
export declare class HyperedgeCoherenceRule extends ValidationRule {
|
|
5
|
+
constructor();
|
|
6
|
+
validate(concept: Concept, path: string, result: ValidationResult): void;
|
|
7
|
+
}
|
|
8
|
+
export declare const PartitiveRelationCoherenceRule: typeof HyperedgeCoherenceRule;
|
|
9
|
+
//# sourceMappingURL=hyperedge-coherence-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperedge-coherence-rule.d.ts","sourceRoot":"","sources":["../../src/validators/hyperedge-coherence-rule.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAW/D,qBAAa,sBAAuB,SAAQ,cAAc;;IAG/C,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;CAsD3E;AAED,eAAO,MAAM,8BAA8B,+BAAyB,CAAC"}
|