From 92af83084d82f0083714f4bfcf5f39f03e5b0077 Mon Sep 17 00:00:00 2001 From: Johannes Nussbaum <39048939+jnussbaum@users.noreply.github.com> Date: Fri, 11 Nov 2022 11:50:48 +0100 Subject: [PATCH] fix: bugs in json schema (DEV-1142) (#252) - resources-only.json: add "Region" and "Representation" as base resources - define super-resource in a non-recurring way - harmonization between all 4 schema files - improve: "format": "uri" has no effect --> needs a regex - expand test data: - URI as "super" of a resource - properties.xlsx: hasLinkTo: Resource, Region, StillImageRepresentation, AudioRepresentation, MovingImageRepresentation, ArchiveRepresentation - remove excelfileref - disallow nested excelfolderref: must be on top hierarchy level - remove redundancy of definitions/label, definitions/comment, definitions/description - langstring: make at least one language mandatory - take URI into account in the conditions for the super-properties --- knora/dsplib/schemas/lists-only.json | 66 +---- knora/dsplib/schemas/ontology.json | 274 +++++++++--------- knora/dsplib/schemas/properties-only.json | 161 +++++----- knora/dsplib/schemas/resources-only.json | 68 +++-- .../test_excel_to_json_properties.py | 26 +- testdata/excel2json-expected-output.json | 69 +++++ .../test-name (test_label)/properties.xlsx | Bin 13662 -> 13883 bytes testdata/test-project-systematic.json | 5 +- 8 files changed, 366 insertions(+), 303 deletions(-) diff --git a/knora/dsplib/schemas/lists-only.json b/knora/dsplib/schemas/lists-only.json index f0987f617..fad4b526a 100644 --- a/knora/dsplib/schemas/lists-only.json +++ b/knora/dsplib/schemas/lists-only.json @@ -11,18 +11,7 @@ "type": "string" } }, - "additionalProperties": false - }, - "label": { - "$ref": "#/definitions/langstring" - }, - "comment": { - "type": "object", - "patternProperties": { - "^(en|de|fr|it|rm)$": { - "type": "string" - } - }, + "minProperties": 1, "additionalProperties": false }, "node": { @@ -32,29 +21,17 @@ "type": "string" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "nodes": { + "type": "array", "minItems": 1, - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/node" - } - }, - { - "type": "object", - "$ref": "#/definitions/excelfileref" - }, - { - "type": "object", - "$ref": "#/definitions/excelfolderref" - } - ] + "items": { + "$ref": "#/definitions/node" + } } }, "required": [ @@ -63,27 +40,6 @@ ], "additionalProperties": false }, - "excelfileref": { - "type": "object", - "properties": { - "file": { - "type": "string" - }, - "worksheet": { - "type": "string" - }, - "startrow": { - "type": "integer" - }, - "startcol": { - "type": "integer" - } - }, - "required": [ - "file", - "worksheet" - ] - }, "excelfolderref": { "type": "object", "properties": { @@ -107,10 +63,10 @@ "type": "string" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "nodes": { "oneOf": [ @@ -120,10 +76,6 @@ "$ref": "#/definitions/node" } }, - { - "type": "object", - "$ref": "#/definitions/excelfileref" - }, { "type": "object", "$ref": "#/definitions/excelfolderref" diff --git a/knora/dsplib/schemas/ontology.json b/knora/dsplib/schemas/ontology.json index 71e3de06c..fd9a68aa5 100644 --- a/knora/dsplib/schemas/ontology.json +++ b/knora/dsplib/schemas/ontology.json @@ -11,6 +11,7 @@ "type": "string" } }, + "minProperties": 1, "additionalProperties": false }, "ncname": { @@ -20,7 +21,12 @@ }, "prefixedname": { "type": "string", - "pattern": "^([a-zA-Z_][\\w.-]*)?:([-\\w]+)$", + "pattern": "^([a-zA-Z_][\\w.-]*)?:([\\w.-]+)$", + "additionalProperties": false + }, + "prefixedname_or_uri": { + "type": "string", + "pattern": "^(([a-zA-Z_][\\w.-]*)?:([\\w.-]+))|(https?://.*)$", "additionalProperties": false }, "baseresource": { @@ -38,14 +44,78 @@ "ArchiveRepresentation" ] }, - "label": { - "$ref": "#/definitions/langstring" + "super_resource": { + "type": ["string"], + "oneOf": [ + { + "$ref": "#/definitions/baseresource" + }, + { + "$ref": "#/definitions/prefixedname_or_uri" + } + ] }, - "description": { - "$ref": "#/definitions/langstring" + "super_resource_as_string_or_array": { + "oneOf": [ + { + "$ref": "#/definitions/super_resource" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/super_resource" + } + } + ] }, - "comment": { - "$ref": "#/definitions/langstring" + "baseproperty": { + "type": "string", + "enum": [ + "hasValue", + "hasLinkTo", + "hasColor", + "hasComment", + "isPartOf", + "isSequenceOf", + "hasSequenceBounds", + "hasRepresentation", + "seqnum" + ] + }, + "basevalue": { + "type": "string", + "enum": [ + "BooleanValue", + "ColorValue", + "DateValue", + "DecimalValue", + "GeonameValue", + "IntValue", + "IntervalValue", + "ListValue", + "TextValue", + "TimeValue", + "UriValue" + ] + }, + "gui_element": { + "type": "string", + "enum": [ + "Checkbox", + "Colorpicker", + "Date", + "Geonames", + "Interval", + "List", + "Radio", + "Richtext", + "Searchbox", + "SimpleText", + "Slider", + "Spinbox", + "Textarea", + "TimeStamp" + ] }, "groupdef": { "type": "string", @@ -56,47 +126,6 @@ "type": "string", "pattern": "^([a-zA-Z_][\\w.-]*)?:(member|admin)$" }, - "resourcedef": { - "type": [ - "string", - "array" - ], - "oneOf": [ - { - "$ref": "#/definitions/baseresource" - }, - { - "$ref": "#/definitions/prefixedname" - }, - { - "pattern": "^(http)(s)?://.*" - } - ], - "items": { - "$ref": "#/definitions/resourcedef" - } - }, - "excelfileref": { - "type": "object", - "properties": { - "file": { - "type": "string" - }, - "worksheet": { - "type": "string" - }, - "startrow": { - "type": "integer" - }, - "startcol": { - "type": "integer" - } - }, - "required": [ - "file", - "worksheet" - ] - }, "excelfolderref": { "type": "object", "properties": { @@ -159,7 +188,7 @@ "type": "string" }, "descriptions": { - "$ref": "#/definitions/description" + "$ref": "#/definitions/langstring" }, "status": { "type": "boolean" @@ -180,29 +209,17 @@ "type": "string" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "nodes": { + "type": "array", "minItems": 1, - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/node" - } - }, - { - "type": "object", - "$ref": "#/definitions/excelfileref" - }, - { - "type": "object", - "$ref": "#/definitions/excelfolderref" - } - ] + "items": { + "$ref": "#/definitions/node" + } } }, "required": [ @@ -221,7 +238,7 @@ "type": "string" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "properties": { "type": "array", @@ -258,23 +275,10 @@ "type": "string", "oneOf": [ { - "enum": [ - "hasValue", - "hasLinkTo", - "hasColor", - "hasComment", - "isPartOf", - "isSequenceOf", - "hasSequenceBounds", - "hasRepresentation", - "seqnum" - ] - }, - { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/baseproperty" }, { - "pattern": "^(http)(s)?://.*" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -283,19 +287,7 @@ "type": "string", "oneOf": [ { - "enum": [ - "TextValue", - "ColorValue", - "DateValue", - "DecimalValue", - "GeonameValue", - "IntValue", - "BooleanValue", - "TimeValue", - "UriValue", - "IntervalValue", - "ListValue" - ] + "$ref": "#/definitions/basevalue" }, { "$ref": "#/definitions/baseresource" @@ -309,26 +301,10 @@ "$ref": "#/definitions/prefixedname" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "gui_element": { - "type": "string", - "enum": [ - "Colorpicker", - "Date", - "Geonames", - "Interval", - "TimeStamp", - "List", - "Radio", - "Richtext", - "Searchbox", - "SimpleText", - "Slider", - "Spinbox", - "Textarea", - "Checkbox" - ] + "$ref": "#/definitions/gui_element" }, "gui_attributes": { "type": "object", @@ -374,7 +350,7 @@ } }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" } }, "required": [ @@ -440,7 +416,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -473,7 +449,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -509,7 +485,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -541,7 +517,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -573,7 +549,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -605,7 +581,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -640,7 +616,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -673,7 +649,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -708,7 +684,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -740,7 +716,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -772,7 +748,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -808,7 +784,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -1092,13 +1068,13 @@ "$ref": "#/definitions/ncname" }, "super": { - "$ref": "#/definitions/resourcedef" + "$ref": "#/definitions/super_resource_as_string_or_array" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "cardinalities": { "type": "array", @@ -1123,7 +1099,7 @@ "type": "object", "patternProperties": { "^[-\\w]+$": { - "format": "uri" + "pattern": "^https?://.*" } }, "additionalProperties": false @@ -1145,7 +1121,7 @@ "type": "string" }, "descriptions": { - "$ref": "#/definitions/description" + "$ref": "#/definitions/langstring" }, "keywords": { "type": "array", @@ -1169,14 +1145,34 @@ "lists": { "type": "array", "items": { - "$ref": "#/definitions/node", - "comments": { - "$ref": "#/definitions/comment" + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "labels": { + "$ref": "#/definitions/langstring" + }, + "comments": { + "$ref": "#/definitions/langstring" + }, + "nodes": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/node" + } + }, + { + "type": "object", + "$ref": "#/definitions/excelfolderref" + } + ] + } }, - "required": [ - "comments", - "nodes" - ] + "required": ["name", "labels", "comments", "nodes"], + "additionalProperties": false } }, "ontologies": { diff --git a/knora/dsplib/schemas/properties-only.json b/knora/dsplib/schemas/properties-only.json index dc16fe9a0..67dc671e4 100644 --- a/knora/dsplib/schemas/properties-only.json +++ b/knora/dsplib/schemas/properties-only.json @@ -11,23 +11,87 @@ "type": "string" } }, + "minProperties": 1, "additionalProperties": false }, "ncname": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "pattern": "^[a-zA-Z_][\\w.-]*$", "additionalProperties": false }, "prefixedname": { "type": "string", - "pattern": "^([a-zA-Z_][\\w.-]*)?:([-\\w]+)$", + "pattern": "^([a-zA-Z_][\\w.-]*)?:([\\w.-]+)$", "additionalProperties": false }, - "label": { - "$ref": "#/definitions/langstring" + "prefixedname_or_uri": { + "type": "string", + "pattern": "^(([a-zA-Z_][\\w.-]*)?:([\\w.-]+))|(https?://.*)$", + "additionalProperties": false + }, + "baseresource": { + "type": "string", + "enum": [ + "Resource", + "Region", + "Representation", + "StillImageRepresentation", + "TextRepresentation", + "AudioRepresentation", + "DDDRepresentation", + "DocumentRepresentation", + "MovingImageRepresentation", + "ArchiveRepresentation" + ] + }, + "baseproperty": { + "type": "string", + "enum": [ + "hasValue", + "hasLinkTo", + "hasColor", + "hasComment", + "isPartOf", + "isSequenceOf", + "hasSequenceBounds", + "hasRepresentation", + "seqnum" + ] + }, + "basevalue": { + "type": "string", + "enum": [ + "BooleanValue", + "ColorValue", + "DateValue", + "DecimalValue", + "GeonameValue", + "IntValue", + "IntervalValue", + "ListValue", + "TextValue", + "TimeValue", + "UriValue" + ] }, - "comment": { - "$ref": "#/definitions/langstring" + "gui_element": { + "type": "string", + "enum": [ + "Checkbox", + "Colorpicker", + "Date", + "Geonames", + "Interval", + "List", + "Radio", + "Richtext", + "Searchbox", + "SimpleText", + "Slider", + "Spinbox", + "Textarea", + "TimeStamp" + ] }, "property": { "type": "object", @@ -41,23 +105,10 @@ "type": "string", "oneOf": [ { - "enum": [ - "hasValue", - "hasLinkTo", - "hasColor", - "hasComment", - "isPartOf", - "isSequenceOf", - "hasSequenceBounds", - "hasRepresentation", - "seqnum" - ] - }, - { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/baseproperty" }, { - "pattern": "^(http)(s)?://.*" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -66,21 +117,10 @@ "type": "string", "oneOf": [ { - "enum": [ - "BooleanValue", - "ColorValue", - "DateValue", - "DecimalValue", - "GeonameValue", - "IntValue", - "IntervalValue", - "ListValue", - "TextValue", - "TimeValue", - "UriValue", - "Resource", - "Representation" - ] + "$ref": "#/definitions/basevalue" + }, + { + "$ref": "#/definitions/baseresource" }, { "$ref": "#/definitions/prefixedname" @@ -91,26 +131,10 @@ "$ref": "#/definitions/prefixedname" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "gui_element": { - "type": "string", - "enum": [ - "Checkbox", - "Colorpicker", - "Date", - "Geonames", - "Interval", - "List", - "Radio", - "Richtext", - "Searchbox", - "SimpleText", - "Slider", - "Spinbox", - "Textarea", - "TimeStamp" - ] + "$ref": "#/definitions/gui_element" }, "gui_attributes": { "type": "object", @@ -156,7 +180,7 @@ } }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" } }, "required": [ @@ -217,11 +241,12 @@ "oneOf": [ { "enum": [ - "hasRepresentation" + "hasRepresentation", + "hasLinkTo" ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -254,7 +279,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -290,7 +315,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -322,7 +347,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -354,7 +379,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -386,7 +411,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -421,7 +446,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -454,7 +479,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -489,7 +514,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -521,7 +546,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -553,7 +578,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } @@ -589,7 +614,7 @@ ] }, { - "$ref": "#/definitions/prefixedname" + "$ref": "#/definitions/prefixedname_or_uri" } ] } diff --git a/knora/dsplib/schemas/resources-only.json b/knora/dsplib/schemas/resources-only.json index 5b2f0531d..60c7f1575 100644 --- a/knora/dsplib/schemas/resources-only.json +++ b/knora/dsplib/schemas/resources-only.json @@ -11,52 +11,60 @@ "type": "string" } }, + "minProperties": 1, "additionalProperties": false }, "ncname": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "pattern": "^[a-zA-Z_][\\w.-]*$", "additionalProperties": false }, "prefixedname": { "type": "string", - "pattern": "^([a-zA-Z_][\\w.-]*)?:([-\\w]+)$", + "pattern": "^([a-zA-Z_][\\w.-]*)?:([\\w.-]+)$", "additionalProperties": false }, - "label": { - "$ref": "#/definitions/langstring" - }, - "comment": { - "$ref": "#/definitions/langstring" + "baseresource": { + "type": "string", + "enum": [ + "Resource", + "Region", + "Representation", + "StillImageRepresentation", + "TextRepresentation", + "AudioRepresentation", + "DDDRepresentation", + "DocumentRepresentation", + "MovingImageRepresentation", + "ArchiveRepresentation" + ] }, - "resourcedef": { - "type": [ - "string", - "array" - ], + "super_resource": { + "type": ["string"], "oneOf": [ { - "enum": [ - "Resource", - "StillImageRepresentation", - "TextRepresentation", - "AudioRepresentation", - "DDDRepresentation", - "DocumentRepresentation", - "MovingImageRepresentation", - "ArchiveRepresentation" - ] + "$ref": "#/definitions/baseresource" }, { "$ref": "#/definitions/prefixedname" }, { - "pattern": "^(http)(s)?://.*" + "pattern": "^https?://.*" } - ], - "items": { - "$ref": "#/definitions/resourcedef" - } + ] + }, + "super_resource_as_string_or_array": { + "oneOf": [ + { + "$ref": "#/definitions/super_resource" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/super_resource" + } + } + ] }, "resource": { "type": "object", @@ -65,13 +73,13 @@ "$ref": "#/definitions/ncname" }, "super": { - "$ref": "#/definitions/resourcedef" + "$ref": "#/definitions/super_resource_as_string_or_array" }, "labels": { - "$ref": "#/definitions/label" + "$ref": "#/definitions/langstring" }, "comments": { - "$ref": "#/definitions/comment" + "$ref": "#/definitions/langstring" }, "cardinalities": { "type": "array", diff --git a/test/unittests/test_excel_to_json_properties.py b/test/unittests/test_excel_to_json_properties.py index 94722b4a8..5f057a26c 100644 --- a/test/unittests/test_excel_to_json_properties.py +++ b/test/unittests/test_excel_to_json_properties.py @@ -33,23 +33,31 @@ def test_excel2properties(self) -> None: excel_names = ["correspondsToGenericAnthroponym", "hasAnthroponym", "hasGender", "isDesignatedAs", "hasTitle", "hasStatus", "hasLifeYearAmount", "hasBirthDate", "hasRepresentation", "hasRemarks", "hasTerminusPostQuem", "hasGND", "hasColor", "hasDecimal", "hasTime", - "hasInterval", "hasBoolean", "hasGeoname", "partOfDocument"] + "hasInterval", "hasBoolean", "hasGeoname", "partOfDocument", "linkstoRegion", "hasLinkToImage", + "hasLinkToResource", "hasLinkToArchiveRepresentation", "hasLinkToMovingImageRepesentation", + "hasLinkToAudioRepesentation"] excel_supers = [["hasLinkTo"], ["hasValue", "dcterms:creator"], ["hasValue"], ["hasValue"], ["hasLinkTo"], ["hasValue"], ["hasValue"], ["hasValue"], ["hasRepresentation"], ["hasValue", "dcterms:description"], ["hasValue"], ["hasValue"], ["hasColor"], ["hasValue"], - ["hasValue"], ["hasSequenceBounds"], ["hasValue"], ["hasValue"], ["isPartOf"]] + ["hasValue"], ["hasSequenceBounds"], ["hasValue"], ["hasValue"], ["isPartOf"], ["hasLinkTo"], + ["hasLinkTo"], ["hasLinkTo"], ["hasLinkTo"], ["hasLinkTo"], ["hasLinkTo"]] excel_objects = [":GenericAnthroponym", "TextValue", "ListValue", "ListValue", ":Titles", "ListValue", "IntValue", "DateValue", "Representation", "TextValue", "DateValue", "UriValue", "ColorValue", "DecimalValue", "TimeValue", "IntervalValue", "BooleanValue", "GeonameValue", - ":Documents"] + ":Documents", "Region", "StillImageRepresentation", "Resource", "ArchiveRepresentation", + "MovingImageRepresentation", "AudioRepresentation"] excel_labels = dict() + # there are also labels in other languages, but they are not tested excel_labels["de"] = ["", "only German", "", "", "", "", "", "", "hat eine Multimediadatei", "", "", "GND", "Farbe", "Dezimalzahl", "Zeit", - "Zeitintervall", "Bool'sche Variable", "Link zu Geonames", "ist Teil eines Dokuments"] - excel_labels["it"] = ["", "", "", "only Italian", "", "", "", "", "", "", "", "GND", "", "", "", "", "", "", ""] + "Zeitintervall", "Bool'sche Variable", "Link zu Geonames", "ist Teil eines Dokuments", + "", "", "", "", "", ""] + excel_labels["it"] = ["", "", "", "only Italian", "", "", "", "", "", "", "", "GND", "", "", "", "", "", "", "", + "", "", "", "", "", ""] excel_comments = dict() + # there are also comments in other languages, but they are not tested excel_comments["comment_fr"] = ["J'avais déjà examiné plusieurs propriétés quand, un jour, le notaire, qui me " "donnait des indications nécessaires pour une de mes explorations, me dit :", "Un étrange hasard m'a mis en possession de ce journal.", @@ -59,18 +67,20 @@ def test_excel2properties(self) -> None: "Un étrange hasard m'a mis en possession de ce journal.", "", "", "only French", "", "", "J'avais déjà examiné plusieurs propriétés quand, un jour, le notaire, qui me " "donnait des indications nécessaires pour une de mes explorations, me dit :", - "Gemeinsame Normdatei", "", "Chiffre décimale", "Temps", "", "", "", ""] + "Gemeinsame Normdatei", "", "Chiffre décimale", "Temps", "", "", "", "", "", "", "", "", + "", ""] excel_comments["comment_it"] = ["Avevo già visto diverse proprietà quando un giorno il notaio,", "Uno strano caso mi mise in possesso di questo diario.", "Non ne so nulla; ma se volete vederla, signore, eccovi le indicazioni precise per trovarla.", "Dovrete organizzare l'affare con il curato del villaggio di --\".", "Uno strano caso mi mise in possesso di questo diario.", "", "", "", "", "", "Avevo già visto diverse proprietà quando un giorno il notaio,", - "Gemeinsame Normdatei", "", "", "", "", "", "", ""] + "Gemeinsame Normdatei", "", "", "", "", "", "", "", "", "", "", "", "", ""] excel_gui_elements = ["Searchbox", "Richtext", "List", "Radio", "Searchbox", "List", "Spinbox", "Date", "Searchbox", "Textarea", "Date", "SimpleText", "Colorpicker", "Slider", - "TimeStamp", "Interval", "Checkbox", "Geonames", "Searchbox"] + "TimeStamp", "Interval", "Checkbox", "Geonames", "Searchbox", "Searchbox", "Searchbox", + "Searchbox", "Searchbox", "Searchbox", "Searchbox"] excel_gui_attributes_hasGender = {"hlist": "gender"} excel_gui_attributes_hasGND = {"size": 100} diff --git a/testdata/excel2json-expected-output.json b/testdata/excel2json-expected-output.json index 77b1b0ffb..c8f3ecba1 100644 --- a/testdata/excel2json-expected-output.json +++ b/testdata/excel2json-expected-output.json @@ -464,6 +464,75 @@ "de": "ist Teil eines Dokuments" }, "gui_element": "Searchbox" + }, + { + "name": "linkstoRegion", + "super": [ + "hasLinkTo" + ], + "object": "Region", + "labels": { + "en": "Links to a region of an image" + }, + "gui_element": "Searchbox", + "gui_attributes": { + "numprops": 1 + } + }, + { + "name": "hasLinkToImage", + "super": [ + "hasLinkTo" + ], + "object": "StillImageRepresentation", + "labels": { + "en": "link to image" + }, + "gui_element": "Searchbox" + }, + { + "name": "hasLinkToResource", + "super": [ + "hasLinkTo" + ], + "object": "Resource", + "labels": { + "en": "hasLinkToResource" + }, + "gui_element": "Searchbox" + }, + { + "name": "hasLinkToArchiveRepresentation", + "super": [ + "hasLinkTo" + ], + "object": "ArchiveRepresentation", + "labels": { + "en": "hasLinkToArchiveRepresentation" + }, + "gui_element": "Searchbox" + }, + { + "name": "hasLinkToMovingImageRepesentation", + "super": [ + "hasLinkTo" + ], + "object": "MovingImageRepresentation", + "labels": { + "en": "hasLinkToMovingImageRepesentation" + }, + "gui_element": "Searchbox" + }, + { + "name": "hasLinkToAudioRepesentation", + "super": [ + "hasLinkTo" + ], + "object": "AudioRepresentation", + "labels": { + "en": "hasLinkToAudioRepesentation" + }, + "gui_element": "Searchbox" } ], "resources": [ diff --git a/testdata/excel2json_files/test-name (test_label)/properties.xlsx b/testdata/excel2json_files/test-name (test_label)/properties.xlsx index 3ca1d79f0b37b966f317c23ee946fd9dc2826fbb..3e9c61a4b5ce2638cec18f6dd066249dcec97e22 100644 GIT binary patch delta 6043 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 Q!Tbn%VKJ;Hf&VQ32X%&SBLDyZ delta 5818 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 diff --git a/testdata/test-project-systematic.json b/testdata/test-project-systematic.json index c8e0f659b..0267b14ba 100644 --- a/testdata/test-project-systematic.json +++ b/testdata/test-project-systematic.json @@ -898,7 +898,10 @@ "resources": [ { "name": "TestThingPermissions", - "super": "Resource", + "super": [ + "Resource", + "http://xmlns.com/foaf/0.1/#term_name" + ], "labels": { "en": "Test thing for permissions without object" },