From 0123a8f62b08c31e053c337d22c9d8dffaf321c5 Mon Sep 17 00:00:00 2001 From: Balduin Landolt <33053745+BalduinLandolt@users.noreply.github.com> Date: Thu, 25 Nov 2021 20:06:01 +0100 Subject: [PATCH] feat!: add archive representation to DSP-API (DEV-17) (#1926) * feat: add bundle representation to knora-base ontology and constants * fix: overlook in knora-base ontology * test: try to break stuff that should break * feat: un-break tests as good as possible * refactor: move some json-ld generation to model * refactor: tidy up a bit * refactor: add ChangeFileRequest to FileModels * chore: update test data according to new knora-base ontology * refactor: get rid of some code smells * refactor: remove code smell * refactor: move more json-ld generation into FileModels * temporarily disable all sipi integration tests * fix: error in books ontology * bring back sipi inntegration test * ignore failing tests * test: move more json-ld generation to FileModels * refactor: further simplify generating json-ld through FileModels * refactor: improve file model * feat: add bundle to lua scripts * test: temporarily ignore some tests * feat: forbid bundles in document file type * test: add test for uploading a BundleRepresentation * test: add test for changing BundleRepresentation * refactor: improve file models * docs: update documentation * docs: update documentation * docs: add documentation and auto-reformat some markdown * test: add unit test for creating a DocumentRepresentation * refactor: start using models for unit tests * refactor: generalize file message model * refactor: further generalize file message model * refactor: expand file message models * test: add unit test for creating a bundle representation * refactor: tidy up books ontology * docs: update documentation * refactor: move some string literals into constants * docs: add scaladoc comments to FileModels * refactor: final clean up * docs: update docs according to review * fix: remove wrong properties from ArchiveRepresentation * refactor: rename bundle to archive * test: update test data * refactor: change file models * refactor: change file models * refactor: rework file models * fix: oversight in json-ld generation in file models * fix: use wrong IRI in FileModels toMessage function * fix: expect correct permission for archive representation * test: add test for file models * test: add more file model tests * test: improve file model tests --- docs/02-knora-ontologies/knora-base.md | 1372 +++---- docs/03-apis/api-v2/editing-values.md | 5 + knora-ontologies/knora-base.ttl | 85 +- sipi/scripts/file_info.lua | 34 +- test_data/ontologies/books-onto.ttl | 4 +- .../anythingOntologyWithValueObjects.ttl | 904 ++--- .../anythingThingWithAllLanguages.ttl | 152 +- .../boxOntologyWithValueObjects.ttl | 60 +- test_data/ontologyR2RV2/imagesBild.ttl | 150 +- test_data/ontologyR2RV2/incunabulaBook.ttl | 128 +- .../incunabulaOntologySimple.ttl | 152 +- .../incunabulaOntologyWithValueObjects.ttl | 446 +- test_data/ontologyR2RV2/incunabulaPage.ttl | 146 +- .../incunabulaPageAndBookWithValueObjects.ttl | 284 +- test_data/ontologyR2RV2/knoraApiDateValue.ttl | 66 +- .../knoraApiOntologySimple.jsonld | 67 + .../ontologyR2RV2/knoraApiOntologySimple.rdf | 1739 ++++---- .../ontologyR2RV2/knoraApiOntologySimple.ttl | 225 +- .../knoraApiOntologyWithValueObjects.jsonld | 304 ++ .../knoraApiOntologyWithValueObjects.rdf | 3614 +++++++++-------- .../knoraApiOntologyWithValueObjects.ttl | 2380 ++++++----- test_data/ontologyR2RV2/salsahGuiOntology.rdf | 194 +- .../standoffOntologyWithValueObjects.ttl | 784 ++-- webapi/src/main/resources/application.conf | 7 +- .../webapi/messages/OntologyConstants.scala | 24 +- .../util/ConstructResponseUtilV2.scala | 10 + .../valuemessages/ValueMessagesV2.scala | 109 + .../knora/webapi/settings/KnoraSettings.scala | 9 + .../test/scala/org/knora/webapi/BUILD.bazel | 1 + .../scala/org/knora/webapi/e2e/v2/BUILD.bazel | 1 - .../webapi/e2e/v2/OntologyV2R2RSpec.scala | 1 + .../it/v2/KnoraSipiIntegrationV2ITSpec.scala | 489 +-- .../scala/org/knora/webapi/models/BUILD.bazel | 10 + .../{e2e/v2 => models}/OntologyModels.scala | 8 +- .../webapi/models/filemodels/BUILD.bazel | 26 + .../models/filemodels/FileModelUtil.scala | 103 + .../webapi/models/filemodels/FileModels.scala | 374 ++ .../models/filemodels/FileModelsSpec.scala | 171 + .../v2/ResourcesResponderV2Spec.scala | 103 +- 39 files changed, 8275 insertions(+), 6466 deletions(-) create mode 100644 webapi/src/test/scala/org/knora/webapi/models/BUILD.bazel rename webapi/src/test/scala/org/knora/webapi/{e2e/v2 => models}/OntologyModels.scala (96%) create mode 100644 webapi/src/test/scala/org/knora/webapi/models/filemodels/BUILD.bazel create mode 100644 webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelUtil.scala create mode 100644 webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModels.scala create mode 100644 webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelsSpec.scala diff --git a/docs/02-knora-ontologies/knora-base.md b/docs/02-knora-ontologies/knora-base.md index d21e653ee7..77ad403b8a 100644 --- a/docs/02-knora-ontologies/knora-base.md +++ b/docs/02-knora-ontologies/knora-base.md @@ -7,23 +7,19 @@ ## Overview -The Knora base ontology is the main built-in Knora ontology. Each -project that uses DSP-API must describe its data model by creating -ontologies that extend this ontology. +The Knora base ontology is the main built-in Knora ontology. Each project that uses DSP-API must describe its data model +by creating ontologies that extend this ontology. -The Knora base ontology is identified by the IRI -`http://www.knora.org/ontology/knora-base`. In the DSP-API documentation -in general, it is identified by the prefix `knora-base`, but for -brevity, in this document, we use `kb` or omit the prefix entirely. +The Knora base ontology is identified by the IRI `http://www.knora.org/ontology/knora-base`. In the DSP-API +documentation in general, it is identified by the prefix `knora-base`, but for brevity, in this document, we use `kb` or +omit the prefix entirely. ## The Knora Data Model -The Knora data model is based on the observation that, in the -humanities, a value or literal is often itself structured and can be -highly complex. Moreover, a value may have its own metadata, such as its -creation date, information about permissions, and so on. Therefore, the -Knora base ontology describes structured value types that can store this -type of metadata. In the diagram below, a book (`ex:book2`) has a title +The Knora data model is based on the observation that, in the humanities, a value or literal is often itself structured +and can be highly complex. Moreover, a value may have its own metadata, such as its creation date, information about +permissions, and so on. Therefore, the Knora base ontology describes structured value types that can store this type of +metadata. In the diagram below, a book (`ex:book2`) has a title (identified by the predicate `ex:title`) and a publication date (`ex:pubdate`), each of which has some metadata. @@ -31,581 +27,378 @@ type of metadata. In the diagram below, a book (`ex:book2`) has a title ### Projects -In Knora, each item of data belongs to some particular project. Each -project using Knora must define a `kb:knoraProject`, which has these -properties (cardinalities are indicated in parentheses after each -property name): +In Knora, each item of data belongs to some particular project. Each project using Knora must define a +`kb:knoraProject`, which has these properties (cardinalities are indicated in parentheses after each property name): -`projectShortname` (1) +- `projectShortname` (1): A short name that can be used to identify the project in configuration files and the like. -: A short name that can be used to identify the project in - configuration files and the like. +- `projectLongname` (1): The full name of the project. -`projectLongname` (1) +- `projectShortcode` (1): A hexadecimal code that uniquely identifies the project. These codes are assigned to projects + by the [DaSCH](http://dasch.swiss/). -: The full name of the project. +- `projectDescription` (1-n): A description of the project. -`projectShortcode` (1) - -: A hexadecimal code that uniquely identifies the project. These - codes are assigned to projects by the [DaSCH](http://dasch.swiss/). - -`projectDescription` (1-n) - -: A description of the project. - -`belongsToInstitution` (0-1) - -: The `kb:Institution` that the project belongs to. +- `belongsToInstitution` (0-1): The `kb:Institution` that the project belongs to. Ontologies and resources are associated with a project by means of the `kb:attachedToProject` property, as described in [Ontologies](#ontologies) -and [Properties of Resource](#properties-of-resource)). Users are associated with a project by -means of the `kb:isInProject` property, as described in +and [Properties of Resource](#properties-of-resource)). Users are associated with a project by means of +the `kb:isInProject` property, as described in [Users and Groups](#users-and-groups). ### Ontologies -Each user-created ontology must be defined as an `owl:Ontology` with the -properties `rdfs:label` and `kb:attachedToProject`. +Each user-created ontology must be defined as an `owl:Ontology` with the properties `rdfs:label` +and `kb:attachedToProject`. ### Resources -All the content produced by a project (e.g. digitised primary source -materials or research data) must be stored in objects that belong to -subclasses of `kb:Resource`, so that Knora can query and -update that content. Each project using the Knora base ontology must -define its own OWL classes, derived from `kb:Resource`, to represent the -types of data it deals with. A subclass of `kb:Resource` may -additionally be a subclass of any other class, e.g. an industry-standard -class such as `foaf:Person`; this can facilitate searches across -projects. - -Resources have properties that point to different parts of the content -they contain. For example, a resource representing a book could have a -property called `hasAuthor`, pointing to the author of the book. There -are two possible kinds of content in a Knora resource: Knora values (see -[Values](#values)) or links to other resources (see -[Links Between Resources](#links-between-resources)). Properties that point to Knora values -must be subproperties of `kb:hasValue`, and properties that point to -other resources must be subproperties of `kb:hasLinkTo`. Either of these -two types of properties may also be a subproperty of any other property, -e.g. an industry-standard property such as `foaf:name`; this can -facilitate searches across projects. Each property definition must -specify the types that its subjects and objects must belong to (see -[Constraints on the Types of Property Subjects and Objects](#constraints-on-the-types-of-property-subjects-and-objects) for details). - -Each user-created resource class definition must use OWL cardinality -restrictions to specify the properties that resources of that class can -have (see [OWL Cardinalities](#owl-cardinalities) for details). +All the content produced by a project (e.g. digitised primary source materials or research data) must be stored in +objects that belong to subclasses of `kb:Resource`, so that Knora can query and update that content. Each project using +the Knora base ontology must define its own OWL classes, derived from `kb:Resource`, to represent the types of data it +deals with. A subclass of `kb:Resource` may additionally be a subclass of any other class, e.g. an industry-standard +class such as `foaf:Person`; this can facilitate searches across projects. + +Resources have properties that point to different parts of the content they contain. For example, a resource +representing a book could have a property called `hasAuthor`, pointing to the author of the book. There are two possible +kinds of content in a Knora resource: Knora values (see [Values](#values)) or links to other resources (see +[Links Between Resources](#links-between-resources)). Properties that point to Knora values must be subproperties +of `kb:hasValue`, and properties that point to other resources must be subproperties of `kb:hasLinkTo`. Either of these +two types of properties may also be a subproperty of any other property, e.g. an industry-standard property such +as `foaf:name`; this can facilitate searches across projects. Each property definition must specify the types that its +subjects and objects must belong to (see +[Constraints on the Types of Property Subjects and Objects](#constraints-on-the-types-of-property-subjects-and-objects) +for details). + +Each user-created resource class definition must use OWL cardinality restrictions to specify the properties that +resources of that class can have (see [OWL Cardinalities](#owl-cardinalities) for details). Resources are not versioned; only their values are versioned (see [Values](#values)). -Every resource is required to have an `rdfs:label`. The object of this -property is an `xsd:string`, rather than a Knora value; hence it is not -versioned. A user who has modify permission on a resource (see +Every resource is required to have an `rdfs:label`. The object of this property is an `xsd:string`, rather than a Knora +value; hence it is not versioned. A user who has modify permission on a resource (see [Authorisation](#authorisation)) can change its label. -A resource can be marked as deleted; Knora does this by -adding the predicate `kb:isDeleted true` to the resource. An optional -`kb:deleteComment` may be added to explain why the resource has been -marked as deleted. Deleted resources are normally hidden. They cannot be -undeleted, because even though resources are not versioned, it is -necessary to be able to find out when a resource was deleted. If -desired, a new resource can be created by copying data from a deleted +A resource can be marked as deleted; Knora does this by adding the predicate `kb:isDeleted true` to the resource. An +optional `kb:deleteComment` may be added to explain why the resource has been marked as deleted. Deleted resources are +normally hidden. They cannot be undeleted, because even though resources are not versioned, it is necessary to be able +to find out when a resource was deleted. If desired, a new resource can be created by copying data from a deleted resource. #### Properties of Resource -`creationDate` (1) - -: The time when the resource was created. - -`attachedToUser` (1) - -: The user who owns the resource. - -`attachedToProject` (1) +- `creationDate` (1): The time when the resource was created. -: The project that the resource is part of. +- `attachedToUser` (1): The user who owns the resource. -`lastModificationDate` (0-1) +- `attachedToProject` (1): The project that the resource is part of. -: A timestamp indicating when the resource (or one of its values) was - last modified. +- `lastModificationDate` (0-1): A timestamp indicating when the resource (or one of its values) was last modified. -`seqnum` (0-1) +- `seqnum` (0-1): The sequence number of the resource, if it is part of an ordered group of resources, such as the pages + in a book. -: The sequence number of the resource, if it is part of an ordered - group of resources, such as the pages in a book. +- `isDeleted` (1): Indicates whether the resource has been deleted. -`isDeleted` (1) +- `deleteDate` (0-1): If the resource has been deleted, indicates when it was deleted. -: Indicates whether the resource has been deleted. - -`deleteDate` (0-1) - -: If the resource has been deleted, indicates when it was deleted. - -`deleteComment` (0-1) - -: If the resource has been deleted, indicates why it was deleted. +- `deleteComment` (0-1): If the resource has been deleted, indicates why it was deleted. Resources can have properties that point to other resources; see -[Links Between Resources](#links-between-resources). A resource grants permissions to groups -of users; see [Authorisation](#authorisation). +[Links Between Resources](#links-between-resources). A resource grants permissions to groups of users; +see [Authorisation](#authorisation). #### Representations -It is not practical to store all data in RDF. In particular, RDF is not -a good storage medium for binary data such as images. Therefore, Knora -stores such data outside the triplestore, in ordinary files. A resource -can have metadata about a file attached to it. The technical term for such a -resource in Knora is a **Representation**. For each file, there is a -`kb:FileValue` in the triplestore containing metadata about the file -(see [FileValue](#filevalue)). Knora uses [Sipi](https://github.com/dhlab-basel/Sipi) -to store files. The [Knora APIs](../03-apis/index.md) provide ways -to create file values using Knora and Sipi. +It is not practical to store all data in RDF. In particular, RDF is not a good storage medium for binary data such as +images. Therefore, Knora stores such data outside the triplestore, in ordinary files. A resource can have metadata about +a file attached to it. The technical term for such a resource in Knora is a **Representation**. For each file, there is +a `kb:FileValue` in the triplestore containing metadata about the file (see [FileValue](#filevalue)). Knora +uses [Sipi](https://github.com/dhlab-basel/Sipi) to store files. The [Knora APIs](../03-apis/index.md) provide ways to +create file values using Knora and Sipi. A resource that has a file value must belong to one of the subclasses of `kb:Representation`. Its subclasses include: -`StillImageRepresentation` - -: A representation containing a still image file. - -`MovingImageRepresentation` - -: A representation containing a video file. - -`AudioRepresentation` - -: A representation containing an audio file. +- `StillImageRepresentation`: A representation containing a still image file. -`DDDrepresentation` +- `MovingImageRepresentation`: A representation containing a video file. -: A representation containing a 3D image file. +- `AudioRepresentation`: A representation containing an audio file. -`TextRepresentation` +- `DDDrepresentation`: A representation containing a 3D image file. -: A representation containing a formatted text file, such as an XML file. +- `TextRepresentation`: A representation containing a formatted text file, such as an XML file. -`DocumentRepresentation` +- `DocumentRepresentation`: A representation containing a document (such as a PDF file) that is not a text file. -: A representation containing a document (such as a PDF file) that is - not a text file. +- `ArchiveRepresentation`: A representation containing an archive file (such as a zip archive). -These classes can be used directly in data, but it is often better to make -subclasses of them, to include metadata about the files being stored. +These classes can be used directly in data, but it is often better to make subclasses of them, to include metadata about +the files being stored. -The base class of all these classes is `Representation`, which is not intended to -be used directly. It has this property, which its subclasses override: +The base class of all these classes is `Representation`, which is not intended to be used directly. It has this +property, which its subclasses override: -`hasFileValue` (1) +- `hasFileValue` (1): Points to a file value. -: Points to a file value. - -There are two ways for a project to design classes for representations. -The simpler way is to create a resource class that represents a thing in -the world (such as `ex:Painting`) and also belongs to a subclass of -`Representation`. This is adequate if the class can have only one type -of file attached to it. For example, if paintings are represented only -by still images, `ex:Painting` could be a subclass of -`StillImageRepresentation`. This is the only approach supported in +There are two ways for a project to design classes for representations. The simpler way is to create a resource class +that represents a thing in the world (such as `ex:Painting`) and also belongs to a subclass of `Representation`. This is +adequate if the class can have only one type of file attached to it. For example, if paintings are represented only by +still images, `ex:Painting` could be a subclass of `StillImageRepresentation`. This is the only approach supported in [DSP-API v1](../03-apis/api-v1/index.md). -The more flexible approach, which is supported by [DSP-API -v2](../03-apis/api-v2/index.md), is for each `ex:Painting` to link (using -`kb:hasRepresentation` or a subproperty) to other resources containing files -that represent the painting. Each of these other resources can extend a -different subclass of `Representation`. For example, a painting could have a +The more flexible approach, which is supported by [DSP-API v2](../03-apis/api-v2/index.md), is for each `ex:Painting` to +link (using `kb:hasRepresentation` or a subproperty) to other resources containing files that represent the painting. +Each of these other resources can extend a different subclass of `Representation`. For example, a painting could have a `StillImageRepresentation` as well as a `DDDrepresentation`. #### Standard Resource Classes -In general, each project using Knora must define its own subclasses of -`kb:Resource`. However, the Knora base ontology provides some standard -subclasses of `kb:Resource`, which are intended to be used by any -project: - -`Region` - -: Represents a region of a `Representation` (see - [Representations](#representations)). +In general, each project using Knora must define its own subclasses of `kb:Resource`. However, the Knora base ontology +provides some standard subclasses of `kb:Resource`, which are intended to be used by any project: -`Annotation` +- `Region`: Represents a region of a `Representation` (see [Representations](#representations)). -: Represents an annotation of a resource. The `hasComment` property - points to the text of the annotation, represented as a - `kb:TextValue`. +- `Annotation`: Represents an annotation of a resource. + The `hasComment` property points to the text of the annotation, represented as a `kb:TextValue`. -`LinkObj` - -: Represents a link that connects two or more resources. A `LinkObj` - has a `hasLinkTo` property pointing to each resource that it - connects, as well as a `hasLinkToValue` property pointing to a - reification of each of these direct links (see - [Links Between Resources](#links-between-resources)). A `LinkObj` is more complex (and - hence less convenient and readable) than a simple direct link, but - it has the advantage that it can be annotated using an `Annotation`. - For improved readability, a project can make its own subclasses of - `LinkObj` with specific meanings. +- `LinkObj`: Represents a link that connects two or more resources. + A `LinkObj` has a `hasLinkTo` property pointing to each resource that it connects, as well as a `hasLinkToValue` + property pointing to a reification of each of these direct links ( + see [Links Between Resources](#links-between-resources)). + A `LinkObj` is more complex (and hence less convenient and readable) than a simple direct link, but it has the + advantage that it can be annotated using an `Annotation`. For improved readability, a project can make its own + subclasses of `LinkObj` with specific meanings. ### Values -The Knora base ontology defines a set of OWL classes that are derived -from `kb:Value` and represent different types of structured values found -in humanities data. This set of classes may not be extended by -user-created ontologies. - -A value is always part of one particular resource, which points to it -using some property derived from `hasValue`. For example, a -user-created ontology could specify a `Book` class with a property -`hasSummary` (derived from `hasValue`), and that property could have a -`knora-base:objectClassConstraint` of `TextValue`. This would mean that -the summary of each book is represented as a `TextValue`. - -Knora values are versioned. Existing values are not modified. Instead, a -new version of an existing value is created. The new version is linked -to the old version via the `previousValue` property. - -Since each value version has a different IRI, there is no IRI that can -be used to cite the value, such that it will always refer to the latest -version of the value. Therefore, the latest version of each value has -a separate UUID, as the object of the property `valueHasUUID`. When -a new version of the value is created, this UUID is moved to the new -version. This makes it possible to cite the latest version of a value -by searching for the UUID. - -"Deleting" a value means marking it with `kb:isDeleted`. An optional -`kb:deleteComment` may be added to explain why the value has been marked -as deleted. Deleted values are normally hidden. - -Most types of values are marked as deleted without creating a new -version of the value. However, link values must be treated as a special -case. Before a `LinkValue` can be marked as deleted, its reference count -must be decremented to 0. Therefore, a new version of the `LinkValue` is -made, with a reference count of 0, and it is this new version that is -marked as deleted. - -To simplify the enforcement of ontology constraints, and for consistency -with resource updates, no new versions of a deleted value can be made; -it is not possible to undelete. Instead, if desired, a new value can be -created by copying data from a deleted value. - -#### Properties of Value - -`valueCreationDate` (1) +The Knora base ontology defines a set of OWL classes that are derived from `kb:Value` and represent different types of +structured values found in humanities data. This set of classes may not be extended by user-created ontologies. -: The date and time when the value was created. +A value is always part of one particular resource, which points to it using some property derived from `hasValue`. For +example, a user-created ontology could specify a `Book` class with a property `hasSummary` (derived from `hasValue`), +and that property could have a `knora-base:objectClassConstraint` of `TextValue`. This would mean that the summary of +each book is represented as a `TextValue`. -`attachedToUser` (1) +Knora values are versioned. Existing values are not modified. Instead, a new version of an existing value is created. +The new version is linked to the old version via the `previousValue` property. -: The user who owns the value. +Since each value version has a different IRI, there is no IRI that can be used to cite the value, such that it will +always refer to the latest version of the value. Therefore, the latest version of each value has a separate UUID, as the +object of the property `valueHasUUID`. When a new version of the value is created, this UUID is moved to the new +version. This makes it possible to cite the latest version of a value by searching for the UUID. -`valueHasString` (1) +"Deleting" a value means marking it with `kb:isDeleted`. An optional `kb:deleteComment` may be added to explain why the +value has been marked as deleted. Deleted values are normally hidden. -: A human-readable string representation of the value's contents, - which is available to Knora's full-text search index. - -`valueHasOrder` (0-1) +Most types of values are marked as deleted without creating a new version of the value. However, link values must be +treated as a special case. Before a `LinkValue` can be marked as deleted, its reference count must be decremented to 0. +Therefore, a new version of the `LinkValue` is made, with a reference count of 0, and it is this new version that is +marked as deleted. -: A resource may have several properties of the same type with - different values (which will be of the same class), and it may be - necessary to indicate an order in which these values occur. For - example, a book may have several authors which should appear in a - defined order. Hence, `valueHasOrder`, when present, points to an - integer literal indicating the order of a given value relative to - the other values of the same property. These integers will not - necessarily start at any particular number, and will not necessarily - be consecutive. +To simplify the enforcement of ontology constraints, and for consistency with resource updates, no new versions of a +deleted value can be made; it is not possible to undelete. Instead, if desired, a new value can be created by copying +data from a deleted value. -`previousValue` (0-1) +#### Properties of Value -: The previous version of the value. +- `valueCreationDate` (1): The date and time when the value was created. -`valueHasUUID` (0-1) +- `attachedToUser` (1): The user who owns the value. -: The UUID that refers to all versions of the value. Only the latest - version of the value has this property. +- `valueHasString` (1): A human-readable string representation of the value's contents, which is available to Knora's + full-text search index. -`isDeleted` (1) +- `valueHasOrder` (0-1): A resource may have several properties of the same type with different values (which will be of + the same class), and it may be necessary to indicate an order in which these values occur. For example, a book may + have several authors which should appear in a defined order. Hence, `valueHasOrder`, when present, points to an + integer literal indicating the order of a given value relative to the other values of the same property. These + integers will not necessarily start at any particular number, and will not necessarily be consecutive. -: Indicates whether the value has been deleted. +- `previousValue` (0-1): The previous version of the value. -`deleteDate` (0-1) +- `valueHasUUID` (0-1): The UUID that refers to all versions of the value. Only the latest version of the value has this + property. -: If the value has been deleted, indicates when it was deleted. +- `isDeleted` (1): Indicates whether the value has been deleted. -`deleteComment` (0-1) +- `deleteDate` (0-1): If the value has been deleted, indicates when it was deleted. -: If the value has been deleted, indicates why it was deleted. +- `deleteComment` (0-1): If the value has been deleted, indicates why it was deleted. -Each Knora value can grant permissions (see -[Authorisation](#authorisation)). +Each Knora value can grant permissions (see [Authorisation](#authorisation)). #### Subclasses of Value ##### TextValue -Represents text, possibly including markup. The text is the object of -the `valueHasString` property. A line break is represented as a Unicode -line feed character (`U+000A`). The non-printing Unicode character -`INFORMATION SEPARATOR TWO (U+001E)` can be used to separate words that -are separated only by standoff markup (see below), so they are -recognised as separate in a full-text search index. +Represents text, possibly including markup. The text is the object of the `valueHasString` property. A line break is +represented as a Unicode line feed character (`U+000A`). The non-printing Unicode character +`INFORMATION SEPARATOR TWO (U+001E)` can be used to separate words that are separated only by standoff markup (see +below), so they are recognised as separate in a full-text search index. Markup is stored using this property: -`valueHasStandoff` (0-n) - -: Points to a standoff markup tag. See - [Text with Standoff Markup](#text-with-standoff-markup). - -`valueHasMapping` (0-1) +- `valueHasStandoff` (0-n): Points to a standoff markup tag. See + [Text with Standoff Markup](#text-with-standoff-markup). -: Points to the mapping used to create the standoff markup and to - convert it back to the original XML. See - [Mapping to Create Standoff From XML](#mapping-to-create-standoff-from-xml). +- `valueHasMapping` (0-1): Points to the mapping used to create the standoff markup and to convert it back to the + original XML. See [Mapping to Create Standoff From XML](#mapping-to-create-standoff-from-xml). A text value can have a specified language: -`valueHasLanguage` (0-1) -: is an ISO 639-1 code as string specifying the language of the text. +- `valueHasLanguage` (0-1): An ISO 639-1 code as string specifying the language of the text. ##### DateValue -Humanities data includes many different types of dates. In Knora, a date -has a specified calendar, and is always represented as a period with -start and end points (which may be equal), each of which has a precision -(`DAY`, `MONTH`, or `YEAR`). For `GREGORIAN` and `JULIAN` calendars, an -optional `ERA` indicator term (`BCE`, `CE`, or `BC`, `AD`) can be added -to the date, when no era is provided the default era `AD` will be considered. -Internally, the start and end points are stored as two Julian Day Numbers. -This calendar-independent representation makes it possible to compare -and search for dates regardless of the calendar in which they were entered. -Properties: - -`valueHasCalendar` (1) - -: The name of the calendar in which the date should be displayed. - Currently `GREGORIAN`, `JULIAN`, and `ISLAMIC` civil calendars are supported. - -`valueHasStartJDN` (1) - -: The Julian Day Number of the start of the period (an `xsd:integer`). +Humanities data includes many different types of dates. In Knora, a date has a specified calendar, and is always +represented as a period with start and end points (which may be equal), each of which has a precision (`DAY`, `MONTH`, +or `YEAR`). For `GREGORIAN` and `JULIAN` calendars, an optional `ERA` indicator term (`BCE`, `CE`, or `BC`, `AD`) can be +added to the date, when no era is provided the default era `AD` will be considered. Internally, the start and end points +are stored as two Julian Day Numbers. This calendar-independent representation makes it possible to compare and search +for dates regardless of the calendar in which they were entered. Properties: -`valueHasStartPrecision` (1) +- `valueHasCalendar` (1): The name of the calendar in which the date should be displayed. Currently `GREGORIAN`, + `JULIAN`, and `ISLAMIC` civil calendars are supported. -: The precision of the start of the period. +- `valueHasStartJDN` (1): The Julian Day Number of the start of the period (an `xsd:integer`). -`valueHasEndJDN` (1) +- `valueHasStartPrecision` (1): The precision of the start of the period. -: The Julian Day Number of the end of the period (an `xsd:integer`). +- `valueHasEndJDN` (1): The Julian Day Number of the end of the period (an `xsd:integer`). -`valueHasEndPrecision` (1) - -: The precision of the end of the period. +- `valueHasEndPrecision` (1): The precision of the end of the period. ##### TimeValue -A Knora time value represents a precise moment in time in the Gregorian -calendar. Since nanosecond precision can be included, it is suitable -for use as a timestamp. Properties: - -`valueHasTimeStamp` (1) +A Knora time value represents a precise moment in time in the Gregorian calendar. Since nanosecond precision can be +included, it is suitable for use as a timestamp. Properties: -: An `xsd:dateTimeStamp`, stored as an `xsd:dateTime` (because SPARQL - does not support `xsd:dateTimeStamp`). +- `valueHasTimeStamp` (1): An `xsd:dateTimeStamp`, stored as an `xsd:dateTime` (because SPARQL does not support + `xsd:dateTimeStamp`). ##### IntValue Represents an integer. Property: -`valueHasInteger` (1) - -: An `xsd:integer`. +- `valueHasInteger` (1): An `xsd:integer`. ##### ColorValue -`valueHasColor` (1) - -: A string representing a color. The string encodes a color as - hexadecimal RGB values, e.g. \"\#FF0000\". +- `valueHasColor` (1): A string representing a color. The string encodes a color as hexadecimal RGB values, e.g. + `\#FF0000`. ##### DecimalValue Represents an arbitrary-precision decimal number. Property: -`valueHasDecimal` (1) - -: An `xsd:decimal`. +- `valueHasDecimal` (1): An `xsd:decimal`. ##### UriValue Represents a non-Knora URI. Property: -`valueHasUri` (1) - -: An `xsd:anyURI`. +- `valueHasUri` (1): An `xsd:anyURI`. ##### BooleanValue Represents a boolean value. Property: -`valueHasBoolean` (1) - -: An `xsd:boolean`. +- `valueHasBoolean` (1): An `xsd:boolean`. ##### GeomValue -Represents a geometrical object as a JSON string, using normalized -coordinates. Property: +Represents a geometrical object as a JSON string, using normalized coordinates. Property: -`valueHasGeometry` (1) - -: A JSON string. +- `valueHasGeometry` (1): A JSON string. ##### GeonameValue -Represents a geolocation, using the identifiers found at -[GeoNames](http://geonames.org). Property: - -`valueHasGeonameCode` (1) +Represents a geolocation, using the identifiers found at [GeoNames](http://geonames.org). Property: -: the identifier of a geographical feature from - [GeoNames](http://geonames.org), represented as an `xsd:string`. +- `valueHasGeonameCode` (1): The identifier of a geographical feature from [GeoNames](http://geonames.org), represented + as an `xsd:string`. ##### IntervalValue -Represents a time interval, with precise start and end times on a -timeline, e.g. relative to the beginning of an audio or video file. -Properties: +Represents a time interval, with precise start and end times on a timeline, e.g. relative to the beginning of an audio +or video file. Properties: -`valueHasIntervalStart` (1) +- `valueHasIntervalStart` (1): An `xsd:decimal` representing the start of the interval in seconds. -: An `xsd:decimal` representing the start of the interval in seconds. - -`valueHasIntervalEnd` (1) - -: An `xsd:decimal` representing the end of the interval in seconds. +- `valueHasIntervalEnd` (1): An `xsd:decimal` representing the end of the interval in seconds. ##### ListValue -Projects often need to define lists or hierarchies of categories that -can be assigned to many different resources. Then, for example, a user -interface can provide a drop-down menu to allow the user to assign a -category to a resource. The `ListValue` class provides a way to -represent these sorts of data structures. It can represent either a flat -list or a tree. +Projects often need to define lists or hierarchies of categories that can be assigned to many different resources. Then, +for example, a user interface can provide a drop-down menu to allow the user to assign a category to a resource. +The `ListValue` class provides a way to represent these sorts of data structures. It can represent either a flat list or +a tree. A `ListValue` has this property: -`valueHasListNode` (1) - -: Points to a `ListNode`. +- `valueHasListNode` (1): Points to a `ListNode`. Each `ListNode` can have the following properties: -`isRootNode` (0-1) - -: Set to `true` if this is the root node. - -`hasSubListNode` (0-n) +- `isRootNode` (0-1): Set to `true` if this is the root node. -: Points to the node's child nodes, if any. +- `hasSubListNode` (0-n): Points to the node's child nodes, if any. -`hasRootNode` (0-1) +- `hasRootNode` (0-1): Points to the root node of the list (absent if `isRootNode` is `true`). -: Points to the root node of the list (absent if `isRootNode` is - `true`). +- `listNodePosition` (0-1): An integer indicating the node's position in the list of its siblings (absent + if `isRootNode` is `true`). -`listNodePosition` (0-1) - -: An integer indicating the node's position in the list of its - siblings (absent if `isRootNode` is `true`). - -`listNodeName` (0-1) - -: The node's human-readable name (absent if `isRootNode` is `true`). +- `listNodeName` (0-1): The node's human-readable name (absent if `isRootNode` is `true`). ##### FileValue -Knora stores certain kinds of data outside the triplestore, in files -(see [Representations](#representations)). Each digital object that -is stored outside the triplestore has associated metadata, which is -stored in the triplestore in a `kb:FileValue`. The base class -`FileValue`, which is not intended to be used directly, has these -properties: - -`internalFilename` (1) +Knora stores certain kinds of data outside the triplestore, in files (see [Representations](#representations)). Each +digital object that is stored outside the triplestore has associated metadata, which is stored in the triplestore in +a `kb:FileValue`. The base class `FileValue`, which is not intended to be used directly, has these properties: -: The name of the file as stored by Knora. +- `internalFilename` (1): The name of the file as stored by Knora. -`internalMimeType` (1) +- `internalMimeType` (1): The MIME type of the file as stored by Knora. -: The MIME type of the file as stored by Knora. +- `originalFilename` (0-1): The original name of the file when it was uploaded to the DSP-API server. -`originalFilename` (0-1) +- `originalMimeType` (0-1): The original MIME type of the file when it was uploaded to the Knora API server. -: The original name of the file when it was uploaded to the DSP-API - server. +- `isPreview` (0-1): A boolean indicating whether the file is a preview, i.e. a small image representing the contents of + the file. A preview is always a `StillImageFileValue`, regardless of the type of the enclosing `Representation`. -`originalMimeType` (0-1) +The subclasses of `FileValue`, which are intended to be used directly in data, include: -: The original MIME type of the file when it was uploaded to the Knora - API server. +- `StillImageFileValue`: Contains metadata about a still image file. -`isPreview` (0-1) +- `MovingImageFileValue`: Contains metadata about a video file. -: A boolean indicating whether the file is a preview, i.e. a small - image representing the contents of the file. A preview is always a - `StillImageFileValue`, regardless of the type of the enclosing - `Representation`. +- `AudioFileValue`: Contains metadata about an audio file. -The subclasses of `FileValue`, which are intended to be used directly in -data, include: +- `DDDFileValue`: Contains metadata about a 3D image file. -`StillImageFileValue` +- `TextFileValue`: Contains metadata about a text file. -: Contains metadata about a still image file. +- `DocumentFileValue`: Contains metadata about a document (such as PDF) that is not a text file. -`MovingImageFileValue` +- `ArchiveFileValue`: Contains metadata about an archive (such as zio archive). -: Contains metadata about a video file. +Each of these classes contains properties that are specific to the type of file it describes. For example, still image +files have dimensions, video files have frame rates, and so on. -`AudioFileValue` - -: Contains metadata about an audio file. - -`DDDFileValue` - -: Contains metadata about a 3D image file. - -`TextFileValue` - -: Contains metadata about a text file. - -`DocumentFileValue` - -: Contains metadata about a document (such as PDF) that is not a text - file. - -Each of these classes contains properties that are specific to the type -of file it describes. For example, still image files have dimensions, -video files have frame rates, and so on. - -`FileValue` objects are versioned like other values, and the actual -files stored by Knora are also versioned. Version 1 of the DSP-API -does not provide a way to retrieve a previous version of a file, but -this feature will be added in a subsequent version of the API. +`FileValue` objects are versioned like other values, and the actual files stored by Knora are also versioned. Version 1 +of the DSP-API does not provide a way to retrieve a previous version of a file, but this feature will be added in a +subsequent version of the API. ##### LinkValue -A `LinkValue` is an RDF "reification" containing metadata about a link -between two resources. It is therefore a subclass of `rdf:Statement` as -well as of `Value`. It has these properties: +A `LinkValue` is an RDF "reification" containing metadata about a link between two resources. It is therefore a subclass +of `rdf:Statement` as well as of `Value`. It has these properties: `rdf:subject` (1) @@ -622,26 +415,23 @@ well as of `Value`. It has these properties: `valueHasRefCount` (1) : The reference count of the link. This is meaningful when the - `LinkValue` describes resource references in Standoff text markup - (see [StandoffLinkTag](#standofflinktag)). Otherwise, the - reference count will always be 1 (if the link exists) or 0 (if it - has been deleted). +`LinkValue` describes resource references in Standoff text markup +(see [StandoffLinkTag](#standofflinktag)). Otherwise, the reference count will always be 1 (if the link exists) or 0 (if +it has been deleted). For details about how links are created in Knora, see [Links Between Resources](#links-between-resources). ##### ExternalResValue -Represents a resource that is not stored in the RDF triplestore managed -by Knora, but instead resides in an external repository -managed by some other software. The `ExternalResValue` contains the -information that Knora needs in order to access the -resource, assuming that a suitable gateway plugin is installed. +Represents a resource that is not stored in the RDF triplestore managed by Knora, but instead resides in an external +repository managed by some other software. The `ExternalResValue` contains the information that Knora needs in order to +access the resource, assuming that a suitable gateway plugin is installed. `extResAccessInfo` (1) : The location of the repository containing the external resource - (e.g. its URL). +(e.g. its URL). `extResId` (1) @@ -653,27 +443,21 @@ resource, assuming that a suitable gateway plugin is installed. ### Links Between Resources -A link between two resources is expressed, first of all, as a triple, in -which the subject is the resource that is the source of the link, the -predicate is a "link property" (a subproperty of `kb:hasLinkTo`), and -the object is the resource that is the target of the link. - -It is also useful to store metadata about links. For example, Knora -needs to know who owns the link, who has permission to modify it, when -it was created, and so on. Such metadata cannot simply describe the link -property, because then it would refer to that property in general, not -to any particular instance in which that property is used to connect two -particular resources. To attach metadata to a specific link in RDF, it -is necessary to create an RDF "reification". A reification makes -statements about a particular triple (subject, predicate, object), in -this case the triple that expresses the link between the resources. -Knora uses reifications of type `kb:LinkValue` (described in +A link between two resources is expressed, first of all, as a triple, in which the subject is the resource that is the +source of the link, the predicate is a "link property" (a subproperty of `kb:hasLinkTo`), and the object is the resource +that is the target of the link. + +It is also useful to store metadata about links. For example, Knora needs to know who owns the link, who has permission +to modify it, when it was created, and so on. Such metadata cannot simply describe the link property, because then it +would refer to that property in general, not to any particular instance in which that property is used to connect two +particular resources. To attach metadata to a specific link in RDF, it is necessary to create an RDF "reification". A +reification makes statements about a particular triple (subject, predicate, object), in this case the triple that +expresses the link between the resources. Knora uses reifications of type `kb:LinkValue` (described in [LinkValue](#linkvalue) to store metadata about links. -For example, suppose a project describes paintings that belong to -collections. The project can define an ontology as follows (expressed -here in [Turtle](http://www.w3.org/TR/turtle/) format, and simplified for -the purposes of illustration): +For example, suppose a project describes paintings that belong to collections. The project can define an ontology as +follows (expressed here in [Turtle](http://www.w3.org/TR/turtle/) format, and simplified for the purposes of +illustration): ``` @prefix kb . @@ -717,9 +501,8 @@ the purposes of illustration): ``` To link the paintings to the collection, we must add a "link property" -to the ontology. In this case, the link property will point from a -painting to the collection it belongs to. Every link property must be a -subproperty of `kb:hasLinkTo`. +to the ontology. In this case, the link property will point from a painting to the collection it belongs to. Every link +property must be a subproperty of `kb:hasLinkTo`. ``` :isInCollection rdf:type owl:ObjectProperty ; @@ -728,18 +511,14 @@ subproperty of `kb:hasLinkTo`. kb:objectClassConstraint :Collection . ``` -We must then add a "link value property", which will point from a -painting to a `kb:LinkValue` (described in -[LinkValue](#linkvalue)), which will contain metadata about -the link between the property and the collection. In particular, the -link value specifies the creator of the link, the date when it was -created, and the permissions that determine who can view or modify it. -The name of the link value property is constructed using a simple naming -convention: the word `Value` is appended to the name of the link -property. In this case, since our link property is called +We must then add a "link value property", which will point from a painting to a `kb:LinkValue` (described in +[LinkValue](#linkvalue)), which will contain metadata about the link between the property and the collection. In +particular, the link value specifies the creator of the link, the date when it was created, and the permissions that +determine who can view or modify it. The name of the link value property is constructed using a simple naming +convention: the word `Value` is appended to the name of the link property. In this case, since our link property is +called `:isInCollection`, the link value property must be called -`:isInCollectionValue`. Every link value property must be a subproperty -of `kb:hasLinkToValue`. +`:isInCollectionValue`. Every link value property must be a subproperty of `kb:hasLinkToValue`. ``` :isInCollectionValue rdf:type owl:ObjectProperty ; @@ -748,8 +527,7 @@ of `kb:hasLinkToValue`. kb:objectClassConstraint kb:LinkValue . ``` -Given this ontology, we can create some RDF data describing a painting -and a collection: +Given this ontology, we can create some RDF data describing a painting and a collection: ``` @prefix paintings . @@ -785,35 +563,31 @@ data:value_D rdf:type kb:LinkValue ; kb:valueHasRefCount 1 . ``` -This creates a link (`paintings:isInCollection`) between the painting -and the collection, along with a reification containing metadata about -the link. We can visualise the result as the following graph: +This creates a link (`paintings:isInCollection`) between the painting and the collection, along with a reification +containing metadata about the link. We can visualise the result as the following graph: ![Figure 2](knora-base-fig2.dot.png "Figure 2") -Knora allows a user to see a link if the requesting user -has permission to see the source and target resources as well as the +Knora allows a user to see a link if the requesting user has permission to see the source and target resources as well +as the `kb:LinkValue`. ### Text with Standoff Markup -Knora is designed to be able to store text with markup, which can -indicate formatting and structure, as well as the complex observations -involved in transcribing handwritten manuscripts. One popular way of -representing text in the humanities is to encode it in XML using the -Text Encoding Initiative +Knora is designed to be able to store text with markup, which can indicate formatting and structure, as well as the +complex observations involved in transcribing handwritten manuscripts. One popular way of representing text in the +humanities is to encode it in XML using the Text Encoding Initiative ([TEI](http://www.tei-c.org/release/doc/tei-p5-doc/en/html/index.html)) -guidelines. In Knora, a TEI/XML document can be stored as a file -with attached metadata, but this is not recommended, because it does not -allow Knora to perform searches across multiple documents. - -The recommended way to store text with markup in Knora is to use -Knora's built-in support for "standoff" markup, which is stored -separately from the text. This has some advantages over embedded markup -such as XML. While XML requires markup to have a hierarchical -structure, and does not allow overlapping tags, standoff nodes do not -have these limitations (see [Using Standoff Properties for Marking-up Historical Documents in the Humanities](http://ecdosis.net/papers/schmidt.d.2016.pdf)). A standoff tag can be attached to any substring in the text by giving its start and end positions. Unlike in corpus linguistics, we -do not use any tokenisation resulting in a form of predefined segmentation, which would limit the user's ability to freely annotate any ranges in the text. +guidelines. In Knora, a TEI/XML document can be stored as a file with attached metadata, but this is not recommended, +because it does not allow Knora to perform searches across multiple documents. + +The recommended way to store text with markup in Knora is to use Knora's built-in support for "standoff" markup, which +is stored separately from the text. This has some advantages over embedded markup such as XML. While XML requires markup +to have a hierarchical structure, and does not allow overlapping tags, standoff nodes do not have these limitations ( +see [Using Standoff Properties for Marking-up Historical Documents in the Humanities](http://ecdosis.net/papers/schmidt.d.2016.pdf)) +. A standoff tag can be attached to any substring in the text by giving its start and end positions. Unlike in corpus +linguistics, we do not use any tokenisation resulting in a form of predefined segmentation, which would limit the user's +ability to freely annotate any ranges in the text. For example, suppose we have the following text: @@ -821,26 +595,19 @@ For example, suppose we have the following text: This would require just two standoff tags: `(italic, start=5, end=29)` and `(bold, start=14, end=36)`. -Moreover, standoff makes it possible to mark up the same text in -different, possibly incompatible ways, allowing for different -interpretations without making redundant copies of the text. In the -Knora base ontology, any text value can have standoff tags. - -By representing standoff as RDF triples, Knora makes markup searchable -across multiple text documents in a repository. For example, if a -repository contains documents in which references to persons are -indicated in standoff, it is straightforward to find all the documents -mentioning a particular person. Knora's standoff support is intended to -make it possible to convert documents with embedded, hierarchical -markup, such as TEI/XML, into RDF standoff and back again, with no data -loss, thus bringing the benefits of RDF to existing TEI-encoded -documents. - -In the Knora base ontology, a `TextValue` can have one or more standoff -tags. Each standoff tag indicates the start and end positions of a -substring in the text that has a particular attribute. The OWL class -`kb:StandoffTag`, which is the base class of all standoff node classes, -has these properties: +Moreover, standoff makes it possible to mark up the same text in different, possibly incompatible ways, allowing for +different interpretations without making redundant copies of the text. In the Knora base ontology, any text value can +have standoff tags. + +By representing standoff as RDF triples, Knora makes markup searchable across multiple text documents in a repository. +For example, if a repository contains documents in which references to persons are indicated in standoff, it is +straightforward to find all the documents mentioning a particular person. Knora's standoff support is intended to make +it possible to convert documents with embedded, hierarchical markup, such as TEI/XML, into RDF standoff and back again, +with no data loss, thus bringing the benefits of RDF to existing TEI-encoded documents. + +In the Knora base ontology, a `TextValue` can have one or more standoff tags. Each standoff tag indicates the start and +end positions of a substring in the text that has a particular attribute. The OWL class +`kb:StandoffTag`, which is the base class of all standoff node classes, has these properties: `standoffTagHasStart` (1) @@ -848,123 +615,105 @@ has these properties: `standoffTagHasEnd` (1) -: The index of the last character in the text that has the attribute, - plus 1. +: The index of the last character in the text that has the attribute, plus 1. `standoffTagHasUUID` (1) -: A UUID identifying this instance and those corresponding to it in - later versions of the `TextValue` it belongs to. The UUID is a means - to maintain a reference to a particular range of a text also when - new versions are made and standoff tag IRIs change. +: A UUID identifying this instance and those corresponding to it in later versions of the `TextValue` it belongs to. +The UUID is a means to maintain a reference to a particular range of a text also when new versions are made and standoff +tag IRIs change. `standoffTagHasOriginalXMLID` (0-1) -: The original id of the XML element that the standoff tag represents, - if any. +: The original id of the XML element that the standoff tag represents, if any. `standoffTagHasStartIndex` (1) -: The start index of the standoff tag. Start indexes are numbered from - 0 within the context of a particular text. When several standoff - tags share the same start position, they can be nested correctly - with this information when transforming them to XML. +: The start index of the standoff tag. Start indexes are numbered from 0 within the context of a particular text. When +several standoff tags share the same start position, they can be nested correctly with this information when +transforming them to XML. `standoffTagHasEndIndex` (1) -: The end index of the standoff tag. Start indexes are numbered from 0 - within the context of a particular text. When several standoff tags - share the same end position, they can be nested correctly with this - information when transforming them to XML. +: The end index of the standoff tag. Start indexes are numbered from 0 within the context of a particular text. When +several standoff tags share the same end position, they can be nested correctly with this information when transforming +them to XML. `standoffTagHasStartParent` (0-1) -: Points to the parent standoff tag. This corresponds to the original - nesting of tags in XML. If a standoff tag has no parent, it - represents the XML root element. If the original XML element is a - CLIX tag, it represents the start of a virtual (non syntactical) - hierarchy. +: Points to the parent standoff tag. This corresponds to the original nesting of tags in XML. If a standoff tag has no +parent, it represents the XML root element. If the original XML element is a CLIX tag, it represents the start of a +virtual (non syntactical) +hierarchy. `standoffTagHasEndParent` (0-1) -: Points to the parent standoff tag if the original XML element is a - CLIX tag and represents the end of a virtual (non syntactical) - hierarchy. +: Points to the parent standoff tag if the original XML element is a CLIX tag and represents the end of a virtual (non +syntactical) +hierarchy. -The `StandoffTag` class is not used directly in RDF data; instead, its -subclasses are used. A few subclasses are currently provided in -`standoff-onto.ttl`, and more will be added to support TEI semantics. -Projects are able to define their own custom standoff tag classes -(direct subclasses of `StandoffTag` or one of the standoff data type -classes or subclasses of one of the standoff classes defined in +The `StandoffTag` class is not used directly in RDF data; instead, its subclasses are used. A few subclasses are +currently provided in +`standoff-onto.ttl`, and more will be added to support TEI semantics. Projects are able to define their own custom +standoff tag classes +(direct subclasses of `StandoffTag` or one of the standoff data type classes or subclasses of one of the standoff +classes defined in `standoff-onto.ttl`). #### Subclasses of StandoffTag ##### Standoff Data Type Tags -Associates data in some Knora value type with a substring in a text. -Standoff data type tags are subclasses of `ValueBase` classes. - -* `StandoffLinkTag` Indicates that a substring refers to another `kb:Resource`. - See [StandoffLinkTag](#standofflinktag). -* `StandoffInternalReferenceTag` Indicates that a substring refers to another - standoff tag in the same text value. See [Internal Links in a TextValue](#internal-links-in-a-textvalue). -* `StandoffUriTag` Indicates that a substring is associated with a URI, which - is stored in the same form that is used for `kb:UriValue`. See [UriValue](#urivalue). -* `StandoffDateTag` Indicates that a substring represents a date, which is stored - in the same form that is used for `kb:DateValue`. See [DateValue](#datevalue). -* `StandoffColorTag` Indicates that a substring represents a color, which is stored - in the same form that is used for `kb:ColorValue`. See [ColorValue](#colorvalue). -* `StandoffIntegerTag` Indicates that a substring represents an integer, which is - stored in the same form that is used for `kb:IntegerValue`. See [IntValue](#intvalue). -* `StandoffDecimalTag` Indicates that a substring represents a number with fractions, - which is stored in the same form that is used for `kb:DecimalValue`. See [DecimalValue](#decimalvalue). -* `StandoffIntervalTag` Indicates that a substring represents an interval, which - is stored in the same form that is used for `kb:IntervalValue`. See [IntervalValue](#intervalvalue). -* `StandoffBooleanTag` Indicates that a substring represents a Boolean, which is stored - in the same form that is used for `kb:BooleanValue`. See [BooleanValue](#booleanvalue). -* `StandoffTimeTag` Indicates that a substring represents a timestamp, which is stored - in the same form that is used for `kb:TimeValue`. See [TimeValue](#timevalue). +Associates data in some Knora value type with a substring in a text. Standoff data type tags are subclasses +of `ValueBase` classes. + +* `StandoffLinkTag` Indicates that a substring refers to another `kb:Resource`. See [StandoffLinkTag](#standofflinktag). +* `StandoffInternalReferenceTag` Indicates that a substring refers to another standoff tag in the same text value. + See [Internal Links in a TextValue](#internal-links-in-a-textvalue). +* `StandoffUriTag` Indicates that a substring is associated with a URI, which is stored in the same form that is used + for `kb:UriValue`. See [UriValue](#urivalue). +* `StandoffDateTag` Indicates that a substring represents a date, which is stored in the same form that is used + for `kb:DateValue`. See [DateValue](#datevalue). +* `StandoffColorTag` Indicates that a substring represents a color, which is stored in the same form that is used + for `kb:ColorValue`. See [ColorValue](#colorvalue). +* `StandoffIntegerTag` Indicates that a substring represents an integer, which is stored in the same form that is used + for `kb:IntegerValue`. See [IntValue](#intvalue). +* `StandoffDecimalTag` Indicates that a substring represents a number with fractions, which is stored in the same form + that is used for `kb:DecimalValue`. See [DecimalValue](#decimalvalue). +* `StandoffIntervalTag` Indicates that a substring represents an interval, which is stored in the same form that is used + for `kb:IntervalValue`. See [IntervalValue](#intervalvalue). +* `StandoffBooleanTag` Indicates that a substring represents a Boolean, which is stored in the same form that is used + for `kb:BooleanValue`. See [BooleanValue](#booleanvalue). +* `StandoffTimeTag` Indicates that a substring represents a timestamp, which is stored in the same form that is used + for `kb:TimeValue`. See [TimeValue](#timevalue). ##### StandoffLinkTag -A `StandoffLinkTag` Indicates that a substring is associated with a -Knora resource. For example, if a repository contains resources -representing persons, a text could be marked up so that each time a -person's name is mentioned, a `StandoffLinkTag` connects the name to the -Knora resource describing that person. Property: +A `StandoffLinkTag` Indicates that a substring is associated with a Knora resource. For example, if a repository +contains resources representing persons, a text could be marked up so that each time a person's name is mentioned, +a `StandoffLinkTag` connects the name to the Knora resource describing that person. Property: `standoffTagHasLink` (1) : The IRI of the resource that is referred to. -One of the design goals of the Knora ontology is to make it easy and -efficient to find out which resources contain references to a given -resource. Direct links are easier and more efficient to query than -indirect links. Therefore, when a text value contains a resource -reference in its standoff nodes, Knora automatically -creates a direct link between the containing resource and the target -resource, along with an RDF reification (a `kb:LinkValue`) describing -the link, as discussed in [Links Between Resources](#links-between-resources). In this case, -the link property is always `kb:hasStandoffLinkTo`, and the link value -property (which points to the `LinkValue`) is always +One of the design goals of the Knora ontology is to make it easy and efficient to find out which resources contain +references to a given resource. Direct links are easier and more efficient to query than indirect links. Therefore, when +a text value contains a resource reference in its standoff nodes, Knora automatically creates a direct link between the +containing resource and the target resource, along with an RDF reification (a `kb:LinkValue`) describing the link, as +discussed in [Links Between Resources](#links-between-resources). In this case, the link property is +always `kb:hasStandoffLinkTo`, and the link value property (which points to the `LinkValue`) is always `kb:hasStandoffLinkToValue`. -Knora automatically updates direct links and reifications -for standoff resource references when text values are updated. To do -this, it keeps track of the number of text values in each resource that -contain at least one standoff reference to a given target resource. It -stores this number as the reference count of the `LinkValue` (see -[LinkValue](#linkvalue)) describing the direct link. Each -time this number changes, it makes a new version of the `LinkValue`, -with an updated reference count. When the reference count reaches zero, -it removes the direct link and makes a new version of the `LinkValue`, -marked with `kb:isDeleted`. - -For example, if `data:R1` is a resource with a text value in which the -resource `data:R2` is referenced, the repository could contain the -following triples: +Knora automatically updates direct links and reifications for standoff resource references when text values are updated. +To do this, it keeps track of the number of text values in each resource that contain at least one standoff reference to +a given target resource. It stores this number as the reference count of the `LinkValue` (see +[LinkValue](#linkvalue)) describing the direct link. Each time this number changes, it makes a new version of +the `LinkValue`, with an updated reference count. When the reference count reaches zero, it removes the direct link and +makes a new version of the `LinkValue`, marked with `kb:isDeleted`. + +For example, if `data:R1` is a resource with a text value in which the resource `data:R2` is referenced, the repository +could contain the following triples: ``` data:R1 ex:hasComment data:V1 . @@ -992,36 +741,32 @@ The result can be visualized like this: ![Figure 3](knora-base-fig3.dot.png "Figure 3") -Link values created automatically for resource references in standoff -are visible to all users, and the creator of these link values is always -`kb:SystemUser` (see [Users and Groups](#users-and-groups)). The -DSP-API server allows a user to see a standoff link if the user has -permission to see the source and target resources. +Link values created automatically for resource references in standoff are visible to all users, and the creator of these +link values is always +`kb:SystemUser` (see [Users and Groups](#users-and-groups)). The DSP-API server allows a user to see a standoff link if +the user has permission to see the source and target resources. #### Internal Links in a TextValue -Internal links in a `TextValue` can be represented using the data type -standoff class `StandoffInternalReferenceTag` or a subclass of it. It -has the following property: +Internal links in a `TextValue` can be represented using the data type standoff class `StandoffInternalReferenceTag` or +a subclass of it. It has the following property: `standoffTagHasInternalReference` (1) -: Points to a `StandoffTag` that belongs to the same `TextValue`. It - has an `objectClassConstraint` of `StandoffTag`. +: Points to a `StandoffTag` that belongs to the same `TextValue`. It has an `objectClassConstraint` of `StandoffTag`. For links to a `kb:Resource`, see [StandoffLinkTag](#standofflinktag). #### Mapping to Create Standoff From XML -A mapping allows for the conversion of an XML document to RDF-standoff -and back. A mapping defines one-to-one relations between XML elements -(with or without a class) and attributes and standoff classes and -properties (see [XML to Standoff Mapping](../03-apis/api-v2/xml-to-standoff-mapping.md)). +A mapping allows for the conversion of an XML document to RDF-standoff and back. A mapping defines one-to-one relations +between XML elements +(with or without a class) and attributes and standoff classes and properties ( +see [XML to Standoff Mapping](../03-apis/api-v2/xml-to-standoff-mapping.md)). -A mapping is represented by a `kb:XMLToStandoffMapping` which contains -one or more `kb:MappingElement`. A `kb:MappingElement` maps an XML -element (including attributes) to a standoff class and standoff -properties. It has the following properties: +A mapping is represented by a `kb:XMLToStandoffMapping` which contains one or more `kb:MappingElement`. +A `kb:MappingElement` maps an XML element (including attributes) to a standoff class and standoff properties. It has the +following properties: `mappingHasXMLTagname` (1) @@ -1029,13 +774,13 @@ properties. It has the following properties: `mappingHasXMLNamespace` (1) -: The XML namespace of the XML element that is mapped to a standoff - class. If no namespace is given, `noNamespace` is used. +: The XML namespace of the XML element that is mapped to a standoff class. If no namespace is given, `noNamespace` is +used. `mappingHasXMLClass` (1) : The name of the class of the XML element. If it has no class, - `noClass` is used. +`noClass` is used. `mappingHasStandoffClass` (1) @@ -1044,19 +789,16 @@ properties. It has the following properties: `mappingHasXMLAttribute` (0-n) : Maps XML attributes to standoff properties using - `MappingXMLAttribute`. See below. +`MappingXMLAttribute`. See below. `mappingHasStandoffDataTypeClass` (0-1) -: Indicates the standoff data type class of the standoff class the XML - element is mapped to. +: Indicates the standoff data type class of the standoff class the XML element is mapped to. `mappingElementRequiresSeparator` (1) -: Indicates if there should be an invisible word separator inserted - after the XML element in the RDF-standoff representation. Once the - markup is stripped, text segments that belonged to different - elements may be concatenated. +: Indicates if there should be an invisible word separator inserted after the XML element in the RDF-standoff +representation. Once the markup is stripped, text segments that belonged to different elements may be concatenated. A `MappingXMLAttribute` has the following properties: @@ -1066,51 +808,39 @@ A `MappingXMLAttribute` has the following properties: `mappingHasXMLNamespace` -: The namespace of the XML attribute that is mapped to a standoff - property. If no namespace is given, `noNamespace` is used. +: The namespace of the XML attribute that is mapped to a standoff property. If no namespace is given, `noNamespace` is +used. `mappingHasStandoffProperty` : The standoff property the XML attribute is mapped to. Knora includes a standard mapping used by the SALSAH GUI. It has the IRI -`http://rdfh.ch/standoff/mappings/StandardMapping` and defines mappings -for a few elements used to write texts with simple markup. +`http://rdfh.ch/standoff/mappings/StandardMapping` and defines mappings for a few elements used to write texts with +simple markup. #### Standoff in Digital Editions -Knora's standoff is designed to make it possible to convert XML -documents to standoff and back. One application for this feature is an -editing workflow in which an editor works in an XML editor, and the -resulting XML documents are converted to standoff and stored in Knora, -where they can be searched and annotated. - -If an editor wants to correct text that has been imported from XML into -standoff, the text can be exported as XML, edited, and imported again. -To preserve annotations on standoff tags across edits, each tag can -automatically be given a UUID. In a future version of the Knora base -ontology, it will be possible to create annotations that point to UUIDs -rather than to IRIs. When a text is exported to XML, the UUIDs can be -included in the XML. When the edited XML is imported again, it can be -converted to new standoff tags with the same UUIDs. Annotations that -applied to standoff tags in the previous version of the text will -therefore also apply to equivalent tags in the new version. - -When text is converted from XML into standoff, tags are also given -indexes, which are numbered from 0 within the context of a particular -text. This makes it possible to order tags that share the same position, -and to preserve the hierarchy of the original XML document. An ordinary, -hierarchical XML tag is converted to a standoff tag that has one index, -as well as the index of its parent tag, if any. The Knora base ontology -also supports non-hierarchical markup such as -[CLIX](http://conferences.idealliance.org/extreme/html/2004/DeRose01/EML2004DeRose01.html#t6), -which enables overlapping markup to be represented in XML. When -non-hierarchical markup is converted to standoff, both the start -position and the end position of the standoff tag have indexes and -parent indexes. - -To support these features, a standoff tag can have these additional -properties: +Knora's standoff is designed to make it possible to convert XML documents to standoff and back. One application for this +feature is an editing workflow in which an editor works in an XML editor, and the resulting XML documents are converted +to standoff and stored in Knora, where they can be searched and annotated. + +If an editor wants to correct text that has been imported from XML into standoff, the text can be exported as XML, +edited, and imported again. To preserve annotations on standoff tags across edits, each tag can automatically be given a +UUID. In a future version of the Knora base ontology, it will be possible to create annotations that point to UUIDs +rather than to IRIs. When a text is exported to XML, the UUIDs can be included in the XML. When the edited XML is +imported again, it can be converted to new standoff tags with the same UUIDs. Annotations that applied to standoff tags +in the previous version of the text will therefore also apply to equivalent tags in the new version. + +When text is converted from XML into standoff, tags are also given indexes, which are numbered from 0 within the context +of a particular text. This makes it possible to order tags that share the same position, and to preserve the hierarchy +of the original XML document. An ordinary, hierarchical XML tag is converted to a standoff tag that has one index, as +well as the index of its parent tag, if any. The Knora base ontology also supports non-hierarchical markup such as +[CLIX](http://conferences.idealliance.org/extreme/html/2004/DeRose01/EML2004DeRose01.html#t6), which enables overlapping +markup to be represented in XML. When non-hierarchical markup is converted to standoff, both the start position and the +end position of the standoff tag have indexes and parent indexes. + +To support these features, a standoff tag can have these additional properties: `standoffTagHasStartIndex` (0-1) @@ -1126,23 +856,18 @@ properties: `standoffTagHasEndParent` (0-1) -: The IRI of the tag, if any, that contains the end position, if this - is a non-hierarchical tag. +: The IRI of the tag, if any, that contains the end position, if this is a non-hierarchical tag. `standoffTagHasUUID` (0-1) -: A UUID that can be used to annotate a standoff tag that may be - present in different versions of a text, or in different layers of a - text (such as a diplomatic transcription and an edited critical - text). +: A UUID that can be used to annotate a standoff tag that may be present in different versions of a text, or in +different layers of a text (such as a diplomatic transcription and an edited critical text). #### Querying Standoff in SPARQL -A future version of Knora will provide an API for -querying standoff markup. In the meantime, it is possible to query it -directly in SPARQL. For example, here is a SPARQL query (using RDFS -inference) that finds all the text values texts that have a standoff -date tag referring to Christmas Eve 2016, contained in a +A future version of Knora will provide an API for querying standoff markup. In the meantime, it is possible to query it +directly in SPARQL. For example, here is a SPARQL query (using RDFS inference) that finds all the text values texts that +have a standoff date tag referring to Christmas Eve 2016, contained in a `StandoffItalicTag`: ```sparql @@ -1173,8 +898,7 @@ select * where { ### Users and Groups Each Knora user is represented by an object belonging to the class -`kb:User`, which is a subclass of `foaf:Person`, and has the following -properties: +`kb:User`, which is a subclass of `foaf:Person`, and has the following properties: `userid` (1) @@ -1204,112 +928,90 @@ properties: : The user's given name. -Knora's concept of access control is that an object (a resource or -value) can grant permissions to groups of users (but not to individual -users). There are several built-in groups: +Knora's concept of access control is that an object (a resource or value) can grant permissions to groups of users (but +not to individual users). There are several built-in groups: `knora-admin:UnknownUser` -: Any user who has not logged into Knora is - automatically assigned to this group. +: Any user who has not logged into Knora is automatically assigned to this group. `knora-admin:KnownUser` -: Any user who has logged into Knora is automatically - assigned to this group. +: Any user who has logged into Knora is automatically assigned to this group. `knora-admin:ProjectMember` -: When checking a user's permissions on an object, the user is - automatically assigned to this group if she is a member of the - project that the object belongs to. +: When checking a user's permissions on an object, the user is automatically assigned to this group if she is a member +of the project that the object belongs to. `knora-admin:Creator` -: When checking a user's permissions on an object, the user is - automatically assigned to this group if he is the creator of the - object. +: When checking a user's permissions on an object, the user is automatically assigned to this group if he is the +creator of the object. `knora-admin:ProjectAdmin` -: When checking a user's permissions on an object, the user is - automatically assigned to this group if she is an administrator of the - project that the object belongs to. +: When checking a user's permissions on an object, the user is automatically assigned to this group if she is an +administrator of the project that the object belongs to. `knora-admin:SystemAdmin` : The group of Knora system administrators. -A user-created ontology can define additional groups, which must -belong to the OWL class `knora-admin:UserGroup`. +A user-created ontology can define additional groups, which must belong to the OWL class `knora-admin:UserGroup`. -There is one built-in `knora-admin:SystemUser`, which is the creator of link values -created automatically for resource references in standoff markup (see +There is one built-in `knora-admin:SystemUser`, which is the creator of link values created automatically for resource +references in standoff markup (see [StandoffLinkTag](#standofflinktag)). ### Permissions -Each resource or value can grant certain permissions to specified -user groups. These permissions are represented as the object of the -predicate `kb:hasPermissions`, which is required on every `kb:Resource` -and on the current version of every `kb:Value`. The permissions -attached to the current version of a value also apply to previous -versions of the value. Value versions other than the current one -do not have this predicate. +Each resource or value can grant certain permissions to specified user groups. These permissions are represented as the +object of the predicate `kb:hasPermissions`, which is required on every `kb:Resource` +and on the current version of every `kb:Value`. The permissions attached to the current version of a value also apply to +previous versions of the value. Value versions other than the current one do not have this predicate. The following permissions can be granted: -1. **Restricted view permission (RV)** Allows a restricted view of the - object, e.g. a view of an image with a watermark. -2. **View permission (V)** Allows an unrestricted view of the object. - Having view permission on a resource only affects the user's ability - to view information about the resource other than its values. To - view a value, she must have view permission on the value itself. -3. **Modify permission (M)** For values, this permission allows a new - version of a value to be created. For resources, this allows the - user to create a new value (as opposed to a new version of an - existing value), or to change information about the resource other - than its values. When he wants to make a new version of a value, his - permissions on the containing resource are not relevant. However, - when he wants to change the target of a link, the old link must be - deleted and a new one created, so he needs modify permission on the - resource. -4. **Delete permission (D)** Allows the item to be marked as deleted. -5. **Change rights permission (CR)** Allows the permissions granted by - the object to be changed. - -Each permission in the above list implies all lower-numbered -permissions. A user's permission level on a particular object is -calculated in the following way: - -1. Make a list of the groups that the user belongs to, including - `Creator` and/or `ProjectMember` if applicable. -2. Make a list of the permissions that she can obtain on the object, by - iterating over the permissions that the object grants. For each - permission, if she is in the specified group, add the specified - permission to the list of permissions she can obtain. -3. From the resulting list, select the highest-level permission. -4. If the result is that she would have no permissions, give her - whatever permission `UnknownUser` would have. - -To view a link between resources, a user needs permission to view the -source and target resources. He also needs permission to view the +1. **Restricted view permission (RV)** Allows a restricted view of the object, e.g. a view of an image with a watermark. +2. **View permission (V)** Allows an unrestricted view of the object. Having view permission on a resource only affects + the user's ability to view information about the resource other than its values. To view a value, she must have view + permission on the value itself. +3. **Modify permission (M)** For values, this permission allows a new version of a value to be created. For resources, + this allows the user to create a new value (as opposed to a new version of an existing value), or to change + information about the resource other than its values. When he wants to make a new version of a value, his permissions + on the containing resource are not relevant. However, when he wants to change the target of a link, the old link must + be deleted and a new one created, so he needs modify permission on the resource. +4. **Delete permission (D)** Allows the item to be marked as deleted. +5. **Change rights permission (CR)** Allows the permissions granted by the object to be changed. + +Each permission in the above list implies all lower-numbered permissions. A user's permission level on a particular +object is calculated in the following way: + +1. Make a list of the groups that the user belongs to, including + `Creator` and/or `ProjectMember` if applicable. +2. Make a list of the permissions that she can obtain on the object, by iterating over the permissions that the object + grants. For each permission, if she is in the specified group, add the specified permission to the list of + permissions she can obtain. +3. From the resulting list, select the highest-level permission. +4. If the result is that she would have no permissions, give her whatever permission `UnknownUser` would have. + +To view a link between resources, a user needs permission to view the source and target resources. He also needs +permission to view the `LinkValue` representing the link, unless the link property is `hasStandoffLinkTo` (see [StandoffLinkTag](#standofflinktag)). The format of the object of `kb:hasPermissions` is as follows: -- Each permission is represented by the one-letter or two-letter - abbreviation given above. -- Each permission abbreviation is followed by a space, then a - comma-separated list of groups that the permission is granted to. -- The IRIs of built-in groups are shortened using the `knora-admin` - prefix. -- Multiple permissions are separated by a vertical bar (`|`). +- Each permission is represented by the one-letter or two-letter abbreviation given above. +- Each permission abbreviation is followed by a space, then a comma-separated list of groups that the permission is + granted to. +- The IRIs of built-in groups are shortened using the `knora-admin` + prefix. +- Multiple permissions are separated by a vertical bar (`|`). -For example, if an object grants view permission to unknown and known -users, and modify permission to project members, the resulting -permission literal would be: +For example, if an object grants view permission to unknown and known users, and modify permission to project members, +the resulting permission literal would be: ``` V knora-admin:UnknownUser,knora-admin:KnownUser|M knora-admin:ProjectMember @@ -1317,54 +1019,43 @@ V knora-admin:UnknownUser,knora-admin:KnownUser|M knora-admin:ProjectMember ### Consistency Checking -Knora tries to enforce repository consistency by checking constraints -that are specified in the Knora base ontology and in user-created -ontologies. Three types of consistency rules are enforced: +Knora tries to enforce repository consistency by checking constraints that are specified in the Knora base ontology and +in user-created ontologies. Three types of consistency rules are enforced: -- Cardinalities in OWL class definitions must be satisfied. -- Constraints on the types of the subjects and objects of OWL object - properties must be satisfied. -- A datatype property may not have an empty string as an object. +- Cardinalities in OWL class definitions must be satisfied. +- Constraints on the types of the subjects and objects of OWL object properties must be satisfied. +- A datatype property may not have an empty string as an object. -The implementation of consistency checking is partly -triplestore-dependent; Knora may be able to provide stricter checks with -some triplestores than with others. +The implementation of consistency checking is partly triplestore-dependent; Knora may be able to provide stricter checks +with some triplestores than with others. ### OWL Cardinalities As noted in [Resources](#resources), each subclass of -`Resource` must use OWL cardinality restrictions to specify the -properties it can have. More specifically, a resource is allowed to have -a property that is a subproperty of `kb:hasValue` or `kb:hasLinkTo` only -if the resource's class has some cardinality for that property. -Similarly, a value is allowed to have a subproperty of `kb:valueHas` +`Resource` must use OWL cardinality restrictions to specify the properties it can have. More specifically, a resource is +allowed to have a property that is a subproperty of `kb:hasValue` or `kb:hasLinkTo` only if the resource's class has +some cardinality for that property. Similarly, a value is allowed to have a subproperty of `kb:valueHas` only if the value's class has some cardinality for that property. -Knora supports, and attempts to enforce, the following cardinality -constraints: +Knora supports, and attempts to enforce, the following cardinality constraints: `owl:cardinality 1` -: A resource of this class must have exactly one instance of the - specified property. +: A resource of this class must have exactly one instance of the specified property. `owl:minCardinality 1` -: A resource of this class must have at least one instance of the - specified property. +: A resource of this class must have at least one instance of the specified property. `owl:maxCardinality 1` -: A resource of this class may have zero or one instance of the - specified property. +: A resource of this class may have zero or one instance of the specified property. `owl:minCardinality 0` -: A resource of this class may have zero or more instances of the - specified property. +: A resource of this class may have zero or more instances of the specified property. -Knora requires cardinalities to be defined using blank nodes, as in the -following example from `knora-base`: +Knora requires cardinalities to be defined using blank nodes, as in the following example from `knora-base`: ``` :Representation rdf:type owl:Class ; @@ -1380,78 +1071,63 @@ following example from `knora-base`: owl:minCardinality "1"^^xsd:nonNegativeInteger ] . ``` -The cardinality of a link property must be the same as the cardinality -of the corresponding link value property. +The cardinality of a link property must be the same as the cardinality of the corresponding link value property. -Each `owl:Restriction` may have the predicate `salsah-gui:guiOrder` to -indicate the order in which properties should be displayed in a GUI +Each `owl:Restriction` may have the predicate `salsah-gui:guiOrder` to indicate the order in which properties should be +displayed in a GUI (see [The SALSAH GUI Ontology](salsah-gui.md)). -A resource class inherits cardinalities from its superclasses. This -follows from the rules of -[RDFS](http://www.w3.org/TR/2014/REC-rdf-schema-20140225/) inference. -Also, in Knora, cardinalities in the subclass can override cardinalities -that would otherwise be inherited from the superclass. Specifically, if -a superclass has a cardinality on a property P, and a subclass has a -cardinality on a subproperty of P, the subclass's cardinality overrides -the superclass's cardinality. In the example above, -`hasStillImageFileValue` is a subproperty of `hasFileValue`. Therefore, -the cardinality on `hasStillImageFileValue` overrides (i.e. replaces) +A resource class inherits cardinalities from its superclasses. This follows from the rules of +[RDFS](http://www.w3.org/TR/2014/REC-rdf-schema-20140225/) inference. Also, in Knora, cardinalities in the subclass can +override cardinalities that would otherwise be inherited from the superclass. Specifically, if a superclass has a +cardinality on a property P, and a subclass has a cardinality on a subproperty of P, the subclass's cardinality +overrides the superclass's cardinality. In the example above, +`hasStillImageFileValue` is a subproperty of `hasFileValue`. Therefore, the cardinality on `hasStillImageFileValue` +overrides (i.e. replaces) the one on `hasFileValue`. -Note that, unlike cardinalities, predicates of properties are not -inherited. If `:foo rdfs:subPropertyOf :bar`, this does not mean that -`:foo` inherits anything from `:bar`. Any predicates of `:foo` that are -also needed by `:bar` must be defined explicitly on `:bar`. This design -decision was made because property predicate inheritance is not provided -by RDFS inference, and would make it more difficult to check the -correctness of ontologies, while providing little practical benefit. +Note that, unlike cardinalities, predicates of properties are not inherited. If `:foo rdfs:subPropertyOf :bar`, this +does not mean that +`:foo` inherits anything from `:bar`. Any predicates of `:foo` that are also needed by `:bar` must be defined explicitly +on `:bar`. This design decision was made because property predicate inheritance is not provided by RDFS inference, and +would make it more difficult to check the correctness of ontologies, while providing little practical benefit. -For more information about OWL cardinalities, see the [OWL 2 -Primer](http://www.w3.org/TR/2012/REC-owl2-primer-20121211/). +For more information about OWL cardinalities, see +the [OWL 2 Primer](http://www.w3.org/TR/2012/REC-owl2-primer-20121211/). ### Constraints on the Types of Property Subjects and Objects -When a user-created ontology defines a property, it must indicate -the types that are allowed as objects (and, if possible, as subjects) of -the property. This is done using the following Knora-specific -properties: +When a user-created ontology defines a property, it must indicate the types that are allowed as objects (and, if +possible, as subjects) of the property. This is done using the following Knora-specific properties: `subjectClassConstraint` -: Specifies the class that subjects of the property must belong to. - This constraint is recommended but not required. Knora will attempt - to enforce this constraint. +: Specifies the class that subjects of the property must belong to. This constraint is recommended but not required. +Knora will attempt to enforce this constraint. `objectClassConstraint` -: If the property is an object property, specifies the class that - objects of the property must belong to. Every subproperty of - `kb:hasValue` or a `kb:hasLinkTo` (i.e. every property of a resource - that points to a `kb:Value` or to another resource) is required to - have this constraint, because Knora relies on it to - know what type of object to expect for the property. Knora will - attempt to enforce this constraint. +: If the property is an object property, specifies the class that objects of the property must belong to. Every +subproperty of +`kb:hasValue` or a `kb:hasLinkTo` (i.e. every property of a resource that points to a `kb:Value` or to another resource) +is required to have this constraint, because Knora relies on it to know what type of object to expect for the property. +Knora will attempt to enforce this constraint. `objectDatatypeConstraint` -: If the property is a datatype property, specifies the type of - literals that can be objects of the property. Knora will not attempt - to enforce this constraint, but it is useful for documentation - purposes. +: If the property is a datatype property, specifies the type of literals that can be objects of the property. Knora +will not attempt to enforce this constraint, but it is useful for documentation purposes. -Note that it is possible for a subproperty to have a more restrictive -contraint than its base property, by specifing a subject or object class -that is a subclass of the one specified in the base property. However, -it is not possible for the subproperty to make the base property's -constraint less restrictive. +Note that it is possible for a subproperty to have a more restrictive contraint than its base property, by specifing a +subject or object class that is a subclass of the one specified in the base property. However, it is not possible for +the subproperty to make the base property's constraint less restrictive. -See also [Why doesn’t Knora use rdfs:domain and rdfs:range for consistency checking?](../faq/index.md#why-doesnt-knora-use-rdfs-domain-and-rdfs-range-for-consistency-checking-) +See +also [Why doesn’t Knora use rdfs:domain and rdfs:range for consistency checking?](../faq/index.md#why-doesnt-knora-use-rdfs-domain-and-rdfs-range-for-consistency-checking-) ### Consistency Constraint Example -A user-created ontology could define consistency constraints as in -this simplified example: +A user-created ontology could define consistency constraints as in this simplified example: ``` :book rdf:type owl:Class ; @@ -1474,66 +1150,52 @@ this simplified example: ## Summary of Restrictions on User-Created Ontologies -An ontology can refer to a Knora ontology in another project only if the other -ontology is built-in or shared +An ontology can refer to a Knora ontology in another project only if the other ontology is built-in or shared (see [Shared Ontologies](../03-apis/api-v2/knora-iris.md#shared-ontologies)). ### Restrictions on Classes -- Each class must be a subclass of either `kb:Resource` or - `kb:StandoffTag`, but not both (note that this forbids - user-created subclasses of `kb:Value`). -- All the cardinalities that a class defines directly (i.e. does not - inherit from `kb:Resource`) must be on properties that are defined - in the triplestore. -- Within the cardinalities of a class, there must be a link value - property for each link property and vice versa. -- The cardinality of a link property must be the same as the cardinality - of the corresponding link value property. -- A cardinality on a property with a boolean value must be - `owl:cardinality 1` or `owl:maxCardinality 1`. -- Each class must be a subclass of all the classes that are subject - class constraints of the properties in its cardinalities. -- If it's a resource class, all its directly defined cardinalities - must be on Knora resource properties (subproperties of `kb:hasValue` - or `kb:hasLinkTo`), and all its base classes with Knora IRIs must - also be resource classes. A cardinality on `kb:resourceProperty` or - `kb:hasValue` is forbidden. It must also have an `rdfs:label`. -- If it's a standoff class, none of its cardinalities may be on Knora - resource properties, and all its base classes with Knora IRIs must - also be standoff classes. -- A class cannot have a cardinality on property P as well as a cardinality - on a subproperty of P. +- Each class must be a subclass of either `kb:Resource` or + `kb:StandoffTag`, but not both (note that this forbids user-created subclasses of `kb:Value`). +- All the cardinalities that a class defines directly (i.e. does not inherit from `kb:Resource`) must be on properties + that are defined in the triplestore. +- Within the cardinalities of a class, there must be a link value property for each link property and vice versa. +- The cardinality of a link property must be the same as the cardinality of the corresponding link value property. +- A cardinality on a property with a boolean value must be + `owl:cardinality 1` or `owl:maxCardinality 1`. +- Each class must be a subclass of all the classes that are subject class constraints of the properties in its + cardinalities. +- If it's a resource class, all its directly defined cardinalities must be on Knora resource properties (subproperties + of `kb:hasValue` + or `kb:hasLinkTo`), and all its base classes with Knora IRIs must also be resource classes. A cardinality + on `kb:resourceProperty` or + `kb:hasValue` is forbidden. It must also have an `rdfs:label`. +- If it's a standoff class, none of its cardinalities may be on Knora resource properties, and all its base classes with + Knora IRIs must also be standoff classes. +- A class cannot have a cardinality on property P as well as a cardinality on a subproperty of P. ### Restrictions on properties -- The property's subject class constraint, if provided, must be a - subclass of `kb:Resource` or `kb:StandoffTag`, and must be a - subclass of the subject class constraints of all its base - properties. -- Its object class constraint, if provided, must be a subclass of the - object class constraints of all its base properties. -- If the property is a Knora resource property, it must have an object - class constraint and an `rdfs:label`. -- It can't be a subproperty of both `kb:hasValue` and `kb:hasLinkTo`. -- It can't be a subproperty of `kb:hasFileValue`. -- Each of its base properties that has a Knora IRI must also be a - Knora resource property. +- The property's subject class constraint, if provided, must be a subclass of `kb:Resource` or `kb:StandoffTag`, and + must be a subclass of the subject class constraints of all its base properties. +- Its object class constraint, if provided, must be a subclass of the object class constraints of all its base + properties. +- If the property is a Knora resource property, it must have an object class constraint and an `rdfs:label`. +- It can't be a subproperty of both `kb:hasValue` and `kb:hasLinkTo`. +- It can't be a subproperty of `kb:hasFileValue`. +- Each of its base properties that has a Knora IRI must also be a Knora resource property. ## Standardisation -The [DaSCH](http://dasch.swiss/) intends to coordinate the -standardisation of generally useful entities proposed in -user-created ontologies. We envisage a process in which two or more -projects would initiate the process by starting a public discussion on -proposed entities to be shared. Once a consensus was reached, the +The [DaSCH](http://dasch.swiss/) intends to coordinate the standardisation of generally useful entities proposed in +user-created ontologies. We envisage a process in which two or more projects would initiate the process by starting a +public discussion on proposed entities to be shared. Once a consensus was reached, the [DaSCH](http://dasch.swiss/) would publish these entities in a [shared ontology](../03-apis/api-v2/knora-iris.md#shared-ontologies)). ## Knora Ontology Versions -The Knora base ontology has the property `kb:ontologyVersion`, whose -object is a string that indicates the deployed version of all the Knora -built-in ontologies. This allows the -[repository update program](../04-publishing-deployment/updates.md) to determine -which repository updates are needed when Knora is upgraded. +The Knora base ontology has the property `kb:ontologyVersion`, whose object is a string that indicates the deployed +version of all the Knora built-in ontologies. This allows the +[repository update program](../04-publishing-deployment/updates.md) to determine which repository updates are needed +when Knora is upgraded. diff --git a/docs/03-apis/api-v2/editing-values.md b/docs/03-apis/api-v2/editing-values.md index ca401a369a..989d129824 100644 --- a/docs/03-apis/api-v2/editing-values.md +++ b/docs/03-apis/api-v2/editing-values.md @@ -222,6 +222,7 @@ DSP-API v2 currently supports using Sipi to store the following types of files: * Audio: MPEG, MP4, or Waveform audio file format (.wav, .x-wav, .vnd.wave) * Text files: TXT, XML, or CSV * Video files: MP4 +* Archive files: ZIP, TAR, GZIP Support for other types of files will be added in the future. @@ -328,6 +329,10 @@ For a text file, use `knora-api:TextRepresentation`, which has the property `knora-api:hasTextFileValue`, pointing to a `knora-api:TextFileValue`. +For an archive like zip, use `knora-api:ArchiveRepresentation`, which has the property +`knora-api:hasArchiveFileValue`, pointing to a +`knora-api:ArchiveFileValue`. + ## Updating a Value To update a value, use this route: diff --git a/knora-ontologies/knora-base.ttl b/knora-ontologies/knora-base.ttl index ae78bfce85..58e37723b2 100644 --- a/knora-ontologies/knora-base.ttl +++ b/knora-ontologies/knora-base.ttl @@ -371,22 +371,45 @@ :hasDocumentFileValue rdf:type owl:ObjectProperty ; - rdfs:label "hat Dokument"@de , - "has document"@en , - "a document"@fr , - "ha documento"@it ; + rdfs:label "hat Dokument"@de , + "has document"@en , + "a document"@fr , + "ha documento"@it ; - rdfs:comment "Connects a Representation to a document"@en ; + rdfs:comment "Connects a Representation to a document"@en ; - :objectClassConstraint :DocumentFileValue ; + :objectClassConstraint :DocumentFileValue ; - :subjectClassConstraint :DocumentRepresentation ; + :subjectClassConstraint :DocumentRepresentation ; - :isEditable true ; + :isEditable true ; - salsah-gui:guiElement salsah-gui:Fileupload ; + salsah-gui:guiElement salsah-gui:Fileupload ; - rdfs:subPropertyOf :hasFileValue . + rdfs:subPropertyOf :hasFileValue . + + + +### http://www.knora.org/ontology/knora-base#hasArchiveFileValue + +:hasArchiveFileValue rdf:type owl:ObjectProperty ; + + rdfs:label "hat Zip"@de , + "has zip"@en , + "a zip"@fr , + "ha zip"@it ; + + rdfs:comment "Connects a Representation to a zip archive"@en ; + + :objectClassConstraint :ArchiveFileValue ; + + :subjectClassConstraint :ArchiveRepresentation ; + + :isEditable true ; + + salsah-gui:guiElement salsah-gui:Fileupload ; + + rdfs:subPropertyOf :hasFileValue . @@ -1041,8 +1064,8 @@ # No :subjectClassConstraint, because this can be used with :Resource or :Value. :objectClassConstraint knora-admin:User . - - + + ################################################################# # # Datatype properties @@ -1797,15 +1820,39 @@ :DocumentRepresentation rdf:type owl:Class ; rdfs:label "Repräsentation (Dokument)"@de , - "Representation (Document)"@en , - "Répresentation (Document)"@fr , - "Rappresentazione (Documento)"@it ; + "Representation (Document)"@en , + "Répresentation (Document)"@fr , + "Rappresentazione (Documento)"@it ; rdfs:subClassOf :Representation , - [ rdf:type owl:Restriction ; - owl:onProperty :hasDocumentFileValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger - ] . + [ rdf:type owl:Restriction ; + owl:onProperty :hasDocumentFileValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger + ] . + + + +### http://www.knora.org/ontology/knora-base#ArchiveFileValue + +:ArchiveFileValue rdf:type owl:Class ; + + rdfs:subClassOf :FileValue . + + +### http://www.knora.org/ontology/knora-base#ArchiveRepresentation + +:ArchiveRepresentation rdf:type owl:Class ; + + rdfs:label "Repräsentation (Zip)"@de , + "Representation (Zip)"@en , + "Répresentation (Zip)"@fr , + "Rappresentazione (Zip)"@it ; + + rdfs:subClassOf :Representation , + [ rdf:type owl:Restriction ; + owl:onProperty :hasArchiveFileValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger + ] . diff --git a/sipi/scripts/file_info.lua b/sipi/scripts/file_info.lua index 122567a1f8..32ef100e79 100644 --- a/sipi/scripts/file_info.lua +++ b/sipi/scripts/file_info.lua @@ -11,6 +11,7 @@ IMAGE = "image" DOCUMENT = "document" AUDIO = "audio" VIDEO = "video" +ARCHIVE = "archive" ------------------------------------------------------------------------------- -- Mimetype constants @@ -67,10 +68,7 @@ local text_mime_types = { local document_mime_types = { APPLICATION_PDF, - APPLICATION_TAR, - APPLICATION_ZIP, APPLICATION_ISO, - APPLICATION_GZIP, APPLICATION_DOC, APPLICATION_DOCX, APPLICATION_XLS, @@ -79,6 +77,12 @@ local document_mime_types = { APPLICATION_PPTX } +local archive_mime_types = { + APPLICATION_TAR, + APPLICATION_ZIP, + APPLICATION_GZIP +} + local video_mime_types = { VIDEO_MP4 } @@ -99,10 +103,7 @@ local text_extensions = { local document_extensions = { "pdf", - "zip", - "tar", "iso", - "gz", "doc", "docx", "xls", @@ -111,6 +112,12 @@ local document_extensions = { "pptx" } +local archive_extensions = { + "zip", + "tar", + "gz" +} + local video_extensions = { "mp4" } @@ -162,6 +169,17 @@ function make_document_file_info(extension) end end +function make_archive_file_info(extension) + if not table.contains(archive_extensions, extension) then + return nil + else + return { + media_type = ARCHIVE, + extension = extension + } + end +end + ------------------------------------------------------------------------------- -- Determines the media type and file extension of a file. -- Parameters: @@ -174,7 +192,7 @@ end function get_file_info(filename, mimetype) local extension = filename:match("^.+%.([^.]+)$") - + if extension == nil then return nil elseif table.contains(image_mime_types, mimetype) then @@ -187,6 +205,8 @@ function get_file_info(filename, mimetype) return make_text_file_info(extension) elseif table.contains(document_mime_types, mimetype) then return make_document_file_info(extension) + elseif table.contains(archive_mime_types, mimetype) then + return make_archive_file_info(extension) else -- no supported mediatype could be determined return nil diff --git a/test_data/ontologies/books-onto.ttl b/test_data/ontologies/books-onto.ttl index 1761cf0b03..9ae5f99156 100644 --- a/test_data/ontologies/books-onto.ttl +++ b/test_data/ontologies/books-onto.ttl @@ -41,7 +41,7 @@ :Book rdf:type owl:Class ; - rdfs:subClassOf knora-base:Resource; + rdfs:subClassOf knora-base:Resource ; knora-base:resourceIcon "book.png" ; rdfs:label "Buch"@de, "Book"@en ; rdfs:comment """A resource describing a book."""@en . @@ -58,7 +58,7 @@ :Page rdf:type owl:Class ; - rdfs:subClassOf knora-base:Resource; + rdfs:subClassOf knora-base:Resource ; knora-base:resourceIcon "page.png" ; rdfs:label "Seite"@de, "Page"@en ; rdfs:comment """A resource describing a page in a book."""@en . diff --git a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl index b9b2dff386..64633f1e72 100644 --- a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl @@ -37,156 +37,157 @@ anything:hasOtherListItem salsah-gui:guiAttribute "hlist=" ; salsah-gui:guiElement salsah-gui:List . -anything:hasPictureTitle - a owl:ObjectProperty ; - rdfs:label "Title" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:TextValue ; - knora-api:subjectType anything:ThingPicture ; - salsah-gui:guiAttribute "size=80" , "maxlength=255" ; - salsah-gui:guiElement salsah-gui:SimpleText . - anything:BlueThing a owl:Class ; rdfs:comment "Diese Resource-Klasse beschreibt ein blaues Ding" ; rdfs:label "Blue thing" ; rdfs:subClassOf anything:Thing ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + salsah-gui:guiOrder 4 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasInteger ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasText + owl:onProperty anything:hasRichtext ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 63 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasBlueThingValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasListItem ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:onProperty anything:hasInterval ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasThingDocument ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 63 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasBlueThingValue + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 7 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:onProperty anything:hasUri + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty anything:hasRichtext + owl:onProperty anything:hasDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 63 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasBlueThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -196,80 +197,79 @@ anything:BlueThing a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 9 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + owl:onProperty anything:hasThingPicture ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingPictureValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasColor + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty anything:hasThingPictureValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 11 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 63 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasBlueThing + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . +anything:hasPictureTitle + a owl:ObjectProperty ; + rdfs:label "Title" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:TextValue ; + knora-api:subjectType anything:ThingPicture ; + salsah-gui:guiAttribute "size=80" , "maxlength=255" ; + salsah-gui:guiElement salsah-gui:SimpleText . + anything:thingHasRegion a owl:ObjectProperty ; rdfs:label "has region" ; @@ -289,51 +289,42 @@ anything:ThingPicture rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty anything:hasPictureTitle + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -342,43 +333,52 @@ anything:ThingPicture ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty anything:hasPictureTitle ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -412,68 +412,57 @@ anything:ThingWithSeqnum rdfs:subClassOf anything:Thing ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 6 ; owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty anything:hasListItem ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 100 ; + owl:minCardinality 0 ; + owl:onProperty knora-api:seqnum ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPictureValue + owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 10 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + owl:onProperty anything:hasColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -483,50 +472,41 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; - owl:onProperty anything:hasColor + owl:onProperty anything:hasInteger ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 100 ; - owl:minCardinality 0 ; - owl:onProperty knora-api:seqnum + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -536,62 +516,77 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 6 ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty anything:hasBoolean ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + salsah-gui:guiOrder 1 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + owl:onProperty anything:hasThingPictureValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasUri ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:onProperty anything:hasInterval ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -601,36 +596,41 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 1 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherThingValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasText + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThing ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -694,62 +694,62 @@ anything:TrivialThing rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -758,8 +758,8 @@ anything:TrivialThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -768,13 +768,13 @@ anything:TrivialThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -822,85 +822,80 @@ anything:ThingDocument rdfs:comment "A document about a thing" ; rdfs:label "Document" ; rdfs:subClassOf knora-api:DocumentRepresentation ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:hasDocumentFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasDocumentFileValue + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -911,10 +906,15 @@ anything:ThingDocument owl:minCardinality 0 ; owl:onProperty anything:hasDocumentTitle ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToProject ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -956,28 +956,28 @@ anything:ThingWithRegion rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; @@ -985,28 +985,23 @@ anything:ThingWithRegion ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; @@ -1014,38 +1009,43 @@ anything:ThingWithRegion ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -1075,120 +1075,125 @@ anything:Thing a owl:Class ; rdfs:comment "'The whole world is full of things, which means there's a real need for someone to go searching for them. And that's exactly what a thing-searcher does.' --Pippi Longstocking" ; rdfs:label "Thing" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasRichtext + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:lastModificationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; owl:onProperty anything:hasThingPictureValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasColor + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 7 ; owl:minCardinality 0 ; owl:onProperty anything:hasUri ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThingValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; owl:onProperty anything:hasInteger ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasListItem - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + owl:onProperty anything:hasOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + owl:onProperty anything:hasDecimal ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasInterval ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1200,30 +1205,30 @@ anything:Thing a owl:Class ; owl:minCardinality 0 ; owl:onProperty anything:hasDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp + owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:onProperty anything:hasOtherThingValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasListItem + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; @@ -1233,42 +1238,37 @@ anything:Thing a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasBoolean ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingPicture ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 10 ; owl:minCardinality 0 ; - owl:onProperty anything:hasRichtext + owl:onProperty anything:hasColor ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -1282,26 +1282,17 @@ anything:StandoffEventTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty anything:standoffEventTagHasDescription + owl:onProperty knora-api:dateValueHasEndMonth ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1311,32 +1302,31 @@ anything:StandoffEventTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStart ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty anything:standoffEventTagHasDescription ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:dateValueHasStartYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1345,38 +1335,48 @@ anything:StandoffEventTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:dateValueHasCalendar ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:onProperty knora-api:standoffTagHasStartParent + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -1411,6 +1411,15 @@ anything:hasOtherThing knora-api:subjectType anything:Thing ; salsah-gui:guiElement salsah-gui:Searchbox . +anything:hasDate a owl:ObjectProperty ; + rdfs:label "Date" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:DateValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Date . + a owl:Ontology ; rdfs:label "The anything ontology" ; @@ -1426,15 +1435,6 @@ anything:hasColor a owl:ObjectProperty ; knora-api:subjectType anything:Thing ; salsah-gui:guiElement salsah-gui:Colorpicker . -anything:hasDate a owl:ObjectProperty ; - rdfs:label "Date" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:DateValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Date . - anything:hasTimeStamp a owl:ObjectProperty ; rdfs:label "Timestamp" ; @@ -1462,37 +1462,27 @@ anything:ThingWithRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; @@ -1510,47 +1500,57 @@ anything:ThingWithRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasRepresentationValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasRepresentationValue + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . diff --git a/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl b/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl index efc93e363c..e00e876c45 100644 --- a/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl +++ b/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl @@ -17,9 +17,19 @@ anything:Thing a owl:Class ; rdfs:label "Chose"@fr , "Ding"@de , "Cosa"@it , "Thing"@en ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:onProperty anything:hasOtherListItem + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasUri + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 10 ; @@ -32,14 +42,9 @@ anything:Thing a owl:Class ; owl:onProperty anything:hasBoolean ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasRichtext - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -47,49 +52,49 @@ anything:Thing a owl:Class ; owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasListItem ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty anything:hasThingPictureValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPictureValue + owl:onProperty anything:hasRichtext ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 13 ; @@ -97,59 +102,44 @@ anything:Thing a owl:Class ; owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasOtherThingValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasText - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:creationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 4 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 9 ; @@ -157,59 +147,69 @@ anything:Thing a owl:Class ; owl:onProperty anything:hasInterval ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + owl:onProperty anything:hasThingPicture ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:onProperty anything:hasInteger ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:onProperty anything:hasOtherThing ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl index 9130bb5220..8dd4050740 100644 --- a/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl @@ -10,11 +10,6 @@ example-box:Box a owl:Class ; rdfs:comment "A shared thing." ; rdfs:label "shared thing" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:maxCardinality 1 ; - owl:onProperty example-box:hasName - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -22,63 +17,58 @@ example-box:Box a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -87,18 +77,28 @@ example-box:Box a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:maxCardinality 1 ; + owl:onProperty example-box:hasName ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/imagesBild.ttl b/test_data/ontologyR2RV2/imagesBild.ttl index c2c41f2e58..80f352497c 100644 --- a/test_data/ontologyR2RV2/imagesBild.ttl +++ b/test_data/ontologyR2RV2/imagesBild.ttl @@ -16,29 +16,34 @@ images:bild a owl:Class ; rdfs:label "Image" ; rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 1 ; owl:cardinality 1 ; - owl:onProperty images:jahrzehnt + owl:onProperty images:signatur ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:cardinality 1 ; + owl:onProperty images:jahrzehnt ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 12 ; owl:maxCardinality 1 ; - owl:onProperty images:copyright + owl:onProperty images:urheberValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 9 ; @@ -46,14 +51,14 @@ images:bild a owl:Class ; owl:onProperty images:mutationsdatum ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty images:urheber + owl:onProperty images:negativnummer ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:cardinality 1 ; + owl:onProperty images:jahr_exakt ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -61,9 +66,14 @@ images:bild a owl:Class ; owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 1 ; - owl:onProperty images:jahreszeit + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty images:titel + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 10 ; @@ -73,92 +83,77 @@ images:bild a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:maxCardinality 1 ; - owl:onProperty images:copyrightValue + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty images:hatBildformat + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:cardinality 1 ; - owl:onProperty images:description + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 8 ; owl:cardinality 1 ; owl:onProperty images:erfassungsdatum ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty images:negativnummer - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 3 ; owl:cardinality 1 ; - owl:onProperty images:bildnr - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:maxCardinality 1 ; - owl:onProperty images:urheberValue + owl:onProperty images:description ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:cardinality 1 ; - owl:onProperty images:jahr_exakt + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 2 ; owl:cardinality 1 ; - owl:onProperty images:signatur + owl:onProperty images:bildnr ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:maxCardinality 1 ; + owl:onProperty images:copyrightValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:maxCardinality 1 ; + owl:onProperty images:urheber + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty images:hatBildformatValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -168,27 +163,32 @@ images:bild a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 7 ; owl:minCardinality 0 ; - owl:onProperty images:hatBildformatValue + owl:onProperty images:hatBildformat ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:maxCardinality 1 ; + owl:onProperty images:copyright ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:cardinality 1 ; - owl:onProperty images:titel + salsah-gui:guiOrder 4 ; + owl:minCardinality 1 ; + owl:onProperty images:jahreszeit ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaBook.ttl b/test_data/ontologyR2RV2/incunabulaBook.ttl index 67105943cf..42d9837dd2 100644 --- a/test_data/ontologyR2RV2/incunabulaBook.ttl +++ b/test_data/ontologyR2RV2/incunabulaBook.ttl @@ -15,15 +15,25 @@ incunabula:book a owl:Class ; rdfs:comment "Diese Resource-Klasse beschreibt ein Buch" ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:hasAuthor + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:location + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 4 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -31,19 +41,19 @@ incunabula:book a owl:Class ; owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 10 ; owl:minCardinality 0 ; - owl:onProperty incunabula:citation + owl:onProperty incunabula:note ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:note + salsah-gui:guiOrder 5 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:pubdate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -53,112 +63,102 @@ incunabula:book a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:book_comment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; + salsah-gui:guiOrder 7 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:location - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment + owl:onProperty incunabula:url ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 4 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + salsah-gui:guiOrder 1 ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty incunabula:hasAuthor + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; owl:onProperty incunabula:description ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 9 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:url + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl b/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl index 3a898bd261..11ffa7a707 100644 --- a/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl +++ b/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl @@ -25,59 +25,51 @@ incunabula:book a owl:Class ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty incunabula:citation + owl:onProperty incunabula:note ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:hasAuthor + owl:maxCardinality 1 ; + owl:onProperty incunabula:pubdate ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment + owl:minCardinality 1 ; + owl:onProperty incunabula:title ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:note + owl:maxCardinality 1 ; + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty incunabula:location ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + owl:minCardinality 0 ; + owl:onProperty incunabula:book_comment ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -85,12 +77,20 @@ incunabula:book a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc + owl:onProperty incunabula:url ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty incunabula:publisher ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty incunabula:hasAuthor + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation + ] ; knora-api:resourceIcon "book.gif" . incunabula:url a owl:DatatypeProperty ; @@ -104,37 +104,37 @@ incunabula:Sideband a owl:Class ; rdfs:comment "Randleistentyp" ; rdfs:label "Randleiste" ; rdfs:subClassOf knora-api:StillImageRepresentation ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty incunabula:sideband_comment + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty incunabula:description ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty incunabula:sideband_comment ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFile + owl:onProperty incunabula:sbTitle ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasStillImageFile ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty incunabula:sbTitle + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; @@ -296,6 +296,10 @@ incunabula:misc a owl:Class ; rdfs:comment "A fake resource class that only has optional properties" ; rdfs:label "Sonstiges" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasBook + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty incunabula:miscHasGeometry @@ -305,8 +309,12 @@ incunabula:misc a owl:Class ; owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasColor + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -314,19 +322,11 @@ incunabula:misc a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasColor + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBook - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] . incunabula:page a owl:Class ; @@ -334,68 +334,68 @@ incunabula:page a owl:Class ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + owl:minCardinality 0 ; + owl:onProperty incunabula:page_comment ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty incunabula:partOf + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasStillImageFile ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:onProperty incunabula:hasRightSideband + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty incunabula:origname ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:pagenum ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty incunabula:transcription ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty incunabula:origname + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasLeftSideband ] ; knora-api:resourceIcon "page.gif" . diff --git a/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl index 2dac16d8df..b2dc74c3b9 100644 --- a/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl @@ -110,30 +110,35 @@ incunabula:Sideband a owl:Class ; rdfs:comment "Randleistentyp" ; rdfs:label "Randleiste" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:cardinality 1 ; - owl:onProperty incunabula:sbTitle - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 1 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty incunabula:sbTitle ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -143,17 +148,7 @@ incunabula:Sideband a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -168,37 +163,37 @@ incunabula:Sideband a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasStillImageFileValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:sideband_comment + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:description + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:sideband_comment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -208,12 +203,17 @@ incunabula:Sideband a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:onProperty knora-api:attachedToUser ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -360,67 +360,77 @@ incunabula:misc a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:isDeleted ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasBookValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 1 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasGeometry + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBookValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBook + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -430,37 +440,27 @@ incunabula:misc a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasColor - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasGeometry + owl:onProperty incunabula:miscHasBook ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -471,158 +471,158 @@ incunabula:page a owl:Class ; rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment + owl:onProperty incunabula:transcription ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSidebandValue + salsah-gui:guiOrder 2 ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOfValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 1 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:pagenum + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:page_comment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:cardinality 1 ; - owl:onProperty incunabula:origname + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSidebandValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband + owl:onProperty incunabula:hasLeftSidebandValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 7 ; owl:cardinality 1 ; - owl:onProperty incunabula:partOfValue + owl:onProperty incunabula:origname ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOf + salsah-gui:guiOrder 3 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:lastModificationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -668,45 +668,30 @@ incunabula:book a owl:Class ; rdfs:comment "Diese Resource-Klasse beschreibt ein Buch" ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 4 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkToValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:book_comment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; @@ -716,103 +701,118 @@ incunabula:book a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:location + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + salsah-gui:guiOrder 1 ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:note + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 4 ; + salsah-gui:guiOrder 5 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + owl:onProperty incunabula:pubdate ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; owl:onProperty incunabula:description ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 9 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:physical_desc + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:location ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:publisher + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:note + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:url + ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; knora-api:resourceIcon "book.gif" . diff --git a/test_data/ontologyR2RV2/incunabulaPage.ttl b/test_data/ontologyR2RV2/incunabulaPage.ttl index 733d04ffed..e904395c23 100644 --- a/test_data/ontologyR2RV2/incunabulaPage.ttl +++ b/test_data/ontologyR2RV2/incunabulaPage.ttl @@ -15,65 +15,40 @@ incunabula:page a owl:Class ; rdfs:comment "A page is a part of a book" ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 6 ; owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty incunabula:page_comment ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 3 ; owl:maxCardinality 1 ; owl:onProperty incunabula:seqnum ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:description - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOf + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:onProperty incunabula:hasLeftSidebandValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; @@ -81,39 +56,49 @@ incunabula:page a owl:Class ; owl:onProperty incunabula:partOfValue ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband + owl:onProperty incunabula:hasLeftSideband + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSidebandValue + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:cardinality 1 ; - owl:onProperty incunabula:origname + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 1 ; @@ -122,43 +107,48 @@ incunabula:page a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSidebandValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment + salsah-gui:guiOrder 2 ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -168,7 +158,17 @@ incunabula:page a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:cardinality 1 ; + owl:onProperty incunabula:origname + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl b/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl index 94d2fef2e3..d6bad7581f 100644 --- a/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl @@ -10,35 +10,45 @@ incunabula:page a owl:Class ; rdfs:comment "A page is a part of a book" ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:hasLeftSidebandValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 1 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:pagenum ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSidebandValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:page_comment ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 7 ; @@ -47,73 +57,83 @@ incunabula:page a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; owl:cardinality 1 ; owl:onProperty incunabula:partOfValue ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + salsah-gui:guiOrder 2 ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 3 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; owl:onProperty incunabula:citation ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -125,45 +145,25 @@ incunabula:page a owl:Class ; owl:cardinality 1 ; owl:onProperty knora-api:hasPermissions ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSidebandValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOf - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:onProperty knora-api:userHasPermission ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -173,80 +173,95 @@ incunabula:book a owl:Class ; rdfs:comment "Diese Resource-Klasse beschreibt ein Buch" ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 4 ; + salsah-gui:guiOrder 6 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + owl:onProperty incunabula:location ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 9 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkToValue ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; owl:onProperty incunabula:hasAuthor ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 6 ; + salsah-gui:guiOrder 4 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:location + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:note + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:note + salsah-gui:guiOrder 7 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:url ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -256,42 +271,27 @@ incunabula:book a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:pubdate ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:book_comment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -300,23 +300,23 @@ incunabula:book a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ a owl:Restriction ; + salsah-gui:guiOrder 1 ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/knoraApiDateValue.ttl b/test_data/ontologyR2RV2/knoraApiDateValue.ttl index e0132a26e8..72ca3603e3 100644 --- a/test_data/ontologyR2RV2/knoraApiDateValue.ttl +++ b/test_data/ontologyR2RV2/knoraApiDateValue.ttl @@ -16,63 +16,53 @@ knora-api:DateValue a owl:Class ; rdfs:subClassOf knora-api:DateBase , knora-api:Value ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:dateValueHasStartEra ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasCalendar ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -82,46 +72,56 @@ knora-api:DateValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra + owl:onProperty knora-api:dateValueHasStartYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:onProperty knora-api:dateValueHasEndMonth + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; knora-api:isValueClass true . diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld b/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld index cd45192aee..ba2535ebf2 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld @@ -64,6 +64,58 @@ "@type": "owl:Class", "@id": "knora-api:Annotation" }, + { + "@id": "knora-api:ArchiveRepresentation", + "@type": "owl:Class", + "rdfs:subClassOf": [ + { + "@id": "knora-api:Representation" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:arkUrl" + }, + "owl:cardinality": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasArchiveFile" + }, + "owl:cardinality": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasIncomingLink" + }, + "owl:minCardinality": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasStandoffLinkTo" + }, + "owl:minCardinality": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:versionArkUrl" + }, + "owl:cardinality": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "rdfs:label" + }, + "owl:cardinality": 1 + } + ], + "rdfs:label": "Representation (Zip)" + }, { "rdfs:label": "Representation (Audio)", "rdfs:subClassOf": [ @@ -759,6 +811,21 @@ }, "@id": "knora-api:error" }, + { + "rdfs:label": "has zip", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasFile" + }, + "rdfs:comment": "Connects a Representation to a zip archive", + "@type": "owl:DatatypeProperty", + "knora-api:subjectType": { + "@id": "knora-api:ArchiveRepresentation" + }, + "knora-api:objectType": { + "@id": "knora-api:File" + }, + "@id": "knora-api:hasArchiveFile" + }, { "rdfs:label": "has audio file", "rdfs:subPropertyOf": { diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf b/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf index f5a4e6763f..5bb4d3d524 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf @@ -1,705 +1,1036 @@ - - - The knora-api ontology in the simple schema - - - A generic class for representing annotations - Annotation - - - - - - - - - - - Represents something in the world, or an abstract thing - Resource - - - - - - - - 1 - - - - Provides the ARK URL of a resource. - ARK URL - - - - - 1 - - - - - Represents a comment on a resource as a knora-base:TextValue - Comment - - - - - - 0 - - - - - Indicates that this resource referred to by another resource - has incoming link - - - - - - 0 - - - - - Represents a link in standoff markup from one resource to another. - has Standoff Link to - - - - - - 1 - - - - - is Annotation of - - - - - - 1 - - - - Provides the ARK URL of a particular version of a resource. - version ARK URL - - - - - 1 - - - - - - Represents a file containing audio data - Representation (Audio) - - - - - - - - - - A resource that can store a file - Representation - - - - - - - - - - 1 - - - - 1 - - - - - Connects a Representation to an audio file - has audio file - - - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - Represents a color. - Color literal - - - - #([0-9a-fA-F]{3}){1,2} - - - - - Represents a file containg 3D data - Representation (3D) - - - - - - - - - - 1 - - - - 1 - - - - - Connects a Representation to a 3D-file - has 3D-file - - - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - Represents a date as a period with different possible precisions. - Date literal - - - - (GREGORIAN|JULIAN|ISLAMIC):\d{1,4}(-\d{1,2}(-\d{1,2})?)?( BC| AD| BCE| CE)?(:\d{1,4}(-\d{1,2}(-\d{1,2})?)?( BC| AD| BCE| CE)?)? - - - - - Representation (Document) - - - - - - - - - - 1 - - - - 1 - - - - - Connects a Representation to a document - has document - - - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - Represents a file URI. - File URI - - - - Represents a geometry specification in JSON. - Geometry specification - - - - Represents a Geoname code. - Geoname code - - - - \d{1,8} - - - - - Represents an interval. - Interval literal - - - - \d+(\.\d+)?,\d+(\.\d+)? - - - - - link.gif - Represents a generic link object - Link Object - - - - - - - - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - - Represents a direct connection between two resources - has Link to - - - - - - 0 - - - - 1 - - - - 1 - - - - Represents a list node. - List Node - - - - A resource containing moving image data - Representation (Movie) - - - - - - - - - - 1 - - - - 0 - - - - 1 - - - - - Connects a Representation to a movie file - has movie file - - - - - - 0 - - - - 1 - - - - 1 - - - - region.gif - Represents a geometric region of a resource. The geometry is represented currently as JSON string. - Region - - - - - - - - - - - - - 1 - - - - 1 - - - - - Specifies the color of a region. - Color - - - - - - 1 - - - - 1 - - - - - Represents a geometrical shape. - Geometry - - - - - - 0 - - - - 0 - - - - 1 - - - - - Region of interest within a digital object (e.g. an image) - is region of - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - Connects a Representation to a file - has file - - - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - A resource that can contain a two-dimensional still image file - Representation (Image) - - - - - - - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - - Connects a Representation to an image file - has image file - - - - - - 1 - - - - 1 - - - - A resource containing a text file - Representation (Text) - - - - - - - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - - Connects a Representation to a text file - has text file - - - - - - 1 - - - - 1 - - - - a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. - a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. - - - - - - - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - 1 - - - - 1 - - - - - Provides a message indicating that an operation was unsuccessful - error - - - - The base property of properties that point from Knora resources to Knora values. - has value - - - - The base property of properties that point from Knora resources to Knora resources or values. These properties are required to have cardinalities in the resource classes in which they are used. - Resource property - - - - - - - - References an instance of a Representation. A Representation contains the metadata of a digital object (= file) which represents some physical entity such as an image, a sound, an encoded text etc. - has Representation - - - - - - Indicates if the given resource is the main resource of a request or a resource referred to by a link property. - - - - - Indicates that this resource is part of another resource - is part of - - - - - Indicates whether more results may be available for a search query - May have more results - - - Specifies the required type of the objects of a property - Object type - - - - - - - - Provides a message indicating that an operation was successful - result - - - - Indicates the position of a resource within a sequence - Sequence number - - - - Specifies the required type of the subjects of a property - Subject type - - - \ No newline at end of file + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:knora-api="http://api.knora.org/ontology/knora-api/simple/v2#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> + + The knora-api ontology in the simple schema + + + + Represents a file URI. + File URI + + + + + (GREGORIAN|JULIAN|ISLAMIC):\d{1,4}(-\d{1,2}(-\d{1,2})?)?( BC| AD| BCE| CE)?(:\d{1,4}(-\d{1,2}(-\d{1,2})?)?( BC| AD| BCE| CE)?)? + + Represents a date as a period with different possible precisions. + Date literal + + + + Represents a geometry specification in JSON. + Geometry specification + + + + + \d{1,8} + + Represents a Geoname code. + Geoname code + + + + + #([0-9a-fA-F]{3}){1,2} + + Represents a color. + Color literal + + + + + \d+(\.\d+)?,\d+(\.\d+)? + + Represents an interval. + Interval literal + + + + Represents a list node. + List Node + + + Representation (Document) + + + 1 + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + + + + + + + + + 0 + + + + + + A resource that can contain a two-dimensional still image file + + + 1 + + + + + + + + 1 + + + + Representation (Image) + + + + + + 1 + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + A resource that can store a file + + + 1 + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + + + + 1 + + + + + + Representation + + + 1 + + + + + + 0 + + + + + + + + Represents something in the world, or an abstract thing + + + 1 + + + + + + 1 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 1 + + + + + + Resource + + + + + 1 + + + + + + + + 1 + + + + + + + + 1 + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 1 + + + + + + Region + Represents a geometric region of a resource. The geometry is represented currently as JSON string. + + + 1 + + + + + + + + + 1 + + + + region.gif + + + + + 1 + + + + + + + + 1 + + + + + + + + 0 + + + + + + Annotation + + + 1 + + + + + + A generic class for representing annotations + + + 1 + + + + + + 1 + + + + + + + + 0 + + + + + + + + + Representation (Zip) + + + 1 + + + + + + 1 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + + + + + + Represents a file containg 3D data + + + 1 + + + + + + + + 0 + + + + + + + + 1 + + + + + + 1 + + + + + + + + 0 + + + + + + Representation (3D) + + + 1 + + + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + 1 + + + + a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. + a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. + + + 1 + + + + + + + + + + 1 + + + + + + A resource containing a text file + + + 1 + + + + + + 0 + + + + + + + + 1 + + + + + + Representation (Text) + + + + 1 + + + + + + + + 0 + + + + + + + + + + 1 + + + + + + + + 0 + + + + + + + + 1 + + + + + + 1 + + + + + + + + 1 + + + + + + Represents a file containing audio data + Representation (Audio) + + + 0 + + + + + + + + + A resource containing moving image data + Representation (Movie) + + + 1 + + + + + + 1 + + + + + + + + 1 + + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + Represents a generic link object + + + 0 + + + + + + + + 1 + + + + + + + Link Object + + + 1 + + + + + + + + 1 + + + + + + 1 + + + + + + + + 0 + + + + + + link.gif + + + 0 + + + + + + + + + + Indicates that this resource referred to by another resource + + + + has incoming link + + + + + Represents a direct connection between two resources + + + + has Link to + + + + + References an instance of a Representation. A Representation contains the metadata of a digital object (= file) which represents some physical entity such as an image, a sound, an encoded text etc. + + has Representation + + + + + Represents a link in standoff markup from one resource to another. + + has Standoff Link to + + + + + Region of interest within a digital object (e.g. an image) + + is region of + + + + + Indicates that this resource is part of another resource + + is part of + + + + + + is Annotation of + + + Specifies the required type of the objects of a property + Object type + + + Specifies the required type of the subjects of a property + Subject type + + + + The base property of properties that point from Knora resources to Knora resources or values. These properties are required to have cardinalities in the resource classes in which they are used. + + Resource property + + + + Provides the ARK URL of a particular version of a resource. + version ARK URL + + + + The base property of properties that point from Knora resources to Knora values. + + has value + + + + + Connects a Representation to an audio file + + + + has audio file + + + + Indicates whether more results may be available for a search query + May have more results + + + + + Represents a comment on a resource as a knora-base:TextValue + + Comment + + + + Provides the ARK URL of a resource. + ARK URL + + + + + Connects a Representation to a text file + + + + has text file + + + + + Connects a Representation to a file + + has file + + + + + Connects a Representation to a 3D-file + + has 3D-file + + + + + Indicates if the given resource is the main resource of a request or a resource referred to by a link property. + + + + Provides a message indicating that an operation was unsuccessful + error + + + + + Connects a Representation to an image file + + has image file + + + + + Connects a Representation to a movie file + + has movie file + + + + + Specifies the color of a region. + + Color + + + + Provides a message indicating that an operation was successful + result + + + + + + + + + Represents a geometrical shape. + + Geometry + + + + + Connects a Representation to a document + + has document + + + + + Connects a Representation to a zip archive + + has zip + + + + Indicates the position of a resource within a sequence + + Sequence number + + diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl b/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl index 8a4c9ded09..01069d7803 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl @@ -17,13 +17,9 @@ knora-api:TextRepresentation rdfs:comment "A resource containing a text file" ; rdfs:label "Representation (Text)" ; rdfs:subClassOf knora-api:Representation ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFile - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -31,15 +27,19 @@ knora-api:TextRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasTextFile + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] . knora-api:hasStandoffLinkTo @@ -63,13 +63,9 @@ knora-api:StillImageRepresentation rdfs:comment "A resource that can contain a two-dimensional still image file" ; rdfs:label "Representation (Image)" ; rdfs:subClassOf knora-api:Representation ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -81,11 +77,15 @@ knora-api:StillImageRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] . knora-api:ListNode a rdfs:Datatype ; @@ -107,25 +107,25 @@ knora-api:DDDRepresentation owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasDDDFile ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] . knora-api:AudioRepresentation @@ -133,29 +133,29 @@ knora-api:AudioRepresentation rdfs:comment "Represents a file containing audio data" ; rdfs:label "Representation (Audio)" ; rdfs:subClassOf knora-api:Representation ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasAudioFile + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasAudioFile ] . knora-api:seqnum a owl:DatatypeProperty ; @@ -191,11 +191,15 @@ knora-api:Representation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasFile + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -203,11 +207,7 @@ knora-api:Representation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasFile ] . knora-api:Geom a rdfs:Datatype ; @@ -219,6 +219,10 @@ knora-api:Region a owl:Class ; rdfs:comment "Represents a geometric region of a resource. The geometry is represented currently as JSON string." ; rdfs:label "Region" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl @@ -227,18 +231,10 @@ knora-api:Region a owl:Class ; owl:minCardinality 1 ; owl:onProperty knora-api:hasComment ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:isRegionOf ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasGeometry - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasColor @@ -247,9 +243,13 @@ knora-api:Region a owl:Class ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasGeometry + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -283,6 +283,14 @@ knora-api:mayHaveMoreResults rdfs:label "May have more results" ; knora-api:objectType xsd:boolean . +knora-api:hasArchiveFile + a owl:DatatypeProperty ; + rdfs:comment "Connects a Representation to a zip archive" ; + rdfs:label "has zip" ; + rdfs:subPropertyOf knora-api:hasFile ; + knora-api:objectType knora-api:File ; + knora-api:subjectType knora-api:ArchiveRepresentation . + knora-api:isAnnotationOf a owl:ObjectProperty ; rdfs:label "is Annotation of" ; @@ -354,10 +362,6 @@ knora-api:LinkObj a owl:Class ; rdfs:comment "Represents a generic link object" ; rdfs:label "Link Object" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl @@ -366,14 +370,6 @@ knora-api:LinkObj a owl:Class ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty knora-api:hasLinkTo @@ -382,6 +378,18 @@ knora-api:LinkObj a owl:Class ; owl:minCardinality 0 ; owl:onProperty knora-api:hasComment ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; knora-api:resourceIcon "link.gif" . knora-api:XSLTransformation @@ -395,19 +403,19 @@ knora-api:XSLTransformation ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; @@ -426,13 +434,6 @@ knora-api:Interval a rdfs:Datatype ; owl:onDatatype xsd:string ; owl:withRestrictions [ xsd:pattern "\\d+(\\.\\d+)?,\\d+(\\.\\d+)?" ] . -knora-api:hasLinkTo a owl:ObjectProperty ; - rdfs:comment "Represents a direct connection between two resources" ; - rdfs:label "has Link to" ; - rdfs:subPropertyOf knora-api:resourceProperty ; - knora-api:objectType knora-api:Resource ; - knora-api:subjectType knora-api:Resource . - knora-api:hasAudioFile a owl:DatatypeProperty ; rdfs:comment "Connects a Representation to an audio file" ; @@ -441,6 +442,13 @@ knora-api:hasAudioFile knora-api:objectType knora-api:File ; knora-api:subjectType knora-api:AudioRepresentation . +knora-api:hasLinkTo a owl:ObjectProperty ; + rdfs:comment "Represents a direct connection between two resources" ; + rdfs:label "has Link to" ; + rdfs:subPropertyOf knora-api:resourceProperty ; + knora-api:objectType knora-api:Resource ; + knora-api:subjectType knora-api:Resource . + knora-api:hasValue a owl:DatatypeProperty ; rdfs:comment "The base property of properties that point from Knora resources to Knora values." ; rdfs:label "has value" ; @@ -455,6 +463,35 @@ knora-api:hasDocumentFile knora-api:objectType knora-api:File ; knora-api:subjectType knora-api:DocumentRepresentation . +knora-api:ArchiveRepresentation + a owl:Class ; + rdfs:label "Representation (Zip)" ; + rdfs:subClassOf knora-api:Representation ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasArchiveFile + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] . + knora-api:Resource a owl:Class ; rdfs:comment "Represents something in the world, or an abstract thing" ; rdfs:label "Resource" ; @@ -500,31 +537,31 @@ knora-api:Annotation a owl:Class ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOf + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:isAnnotationOf + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:arkUrl ] . knora-api:versionArkUrl @@ -548,41 +585,41 @@ knora-api:hasIncomingLink knora-api:objectType knora-api:Resource ; knora-api:subjectType knora-api:Resource . +knora-api:arkUrl a owl:DatatypeProperty ; + rdfs:comment "Provides the ARK URL of a resource." ; + rdfs:label "ARK URL" ; + knora-api:objectType xsd:anyURI . + knora-api:MovingImageRepresentation a owl:Class ; rdfs:comment "A resource containing moving image data" ; rdfs:label "Representation (Movie)" ; rdfs:subClassOf knora-api:Representation ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasMovingImageFile ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasMovingImageFile + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label ] . -knora-api:arkUrl a owl:DatatypeProperty ; - rdfs:comment "Provides the ARK URL of a resource." ; - rdfs:label "ARK URL" ; - knora-api:objectType xsd:anyURI . - knora-api:hasStillImageFile a owl:DatatypeProperty ; rdfs:comment "Connects a Representation to an image file" ; diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld index 0572ddc442..9d17689e75 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld @@ -172,6 +172,290 @@ "@type": "owl:Class", "@id": "knora-api:Annotation" }, + { + "@id": "knora-api:ArchiveFileValue", + "@type": "owl:Class", + "rdfs:subClassOf": [ + { + "@id": "knora-api:FileValue" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:arkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:attachedToUser" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deleteComment" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deleteDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deletedBy" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:fileValueAsUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:fileValueHasFilename" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasPermissions" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:isDeleted" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:userHasPermission" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:valueAsString" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:valueCreationDate" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:valueHasComment" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:valueHasUUID" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:versionArkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + } + ], + "knora-api:isValueClass": true + }, + { + "knora-api:isResourceClass": true, + "rdfs:label": "Representation (Zip)", + "rdfs:subClassOf": [ + { + "@id": "knora-api:Representation" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:arkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:attachedToProject" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:attachedToUser" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:creationDate" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deleteComment" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deleteDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:deletedBy" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasArchiveFileValue" + }, + "owl:cardinality": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasIncomingLinkValue" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasPermissions" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasStandoffLinkTo" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasStandoffLinkToValue" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:isDeleted" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:lastModificationDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:userHasPermission" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:versionArkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:versionDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "rdfs:label" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + } + ], + "@type": "owl:Class", + "@id": "knora-api:ArchiveRepresentation" + }, { "knora-api:isValueClass": true, "rdfs:subClassOf": [ @@ -6613,6 +6897,26 @@ }, "rdfs:comment": "Represents the literal Geoname code of a GeonameValue." }, + { + "rdfs:label": "has zip", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasFileValue" + }, + "knora-api:isEditable": true, + "knora-api:isResourceProperty": true, + "@type": "owl:ObjectProperty", + "knora-api:objectType": { + "@id": "knora-api:ArchiveFileValue" + }, + "salsah-gui:guiElement": { + "@id": "salsah-gui:Fileupload" + }, + "@id": "knora-api:hasArchiveFileValue", + "knora-api:subjectType": { + "@id": "knora-api:ArchiveRepresentation" + }, + "rdfs:comment": "Connects a Representation to a zip archive" + }, { "rdfs:label": "has audio file", "rdfs:subPropertyOf": { diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf index 2ce6f0dfa8..4c6d18fd9b 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf @@ -16,10 +16,10 @@ true - 1 + 1 - + @@ -30,7 +30,7 @@ 1 - + @@ -42,7 +42,7 @@ 1 - + @@ -52,10 +52,10 @@ true - 1 + 1 - + @@ -63,10 +63,10 @@ true - 1 + 1 - + @@ -77,7 +77,7 @@ 1 - + @@ -88,7 +88,7 @@ 1 - + @@ -96,10 +96,10 @@ true - 1 + 1 - + @@ -107,35 +107,35 @@ true - 1 + 1 - + + + + true - 1 + 1 - + - - - true - 1 + 1 - + @@ -143,10 +143,10 @@ true - 1 + 1 - + @@ -157,7 +157,7 @@ 1 - + @@ -179,7 +179,7 @@ 1 - + @@ -187,12 +187,10 @@ - true 1 - + @@ -200,10 +198,10 @@ true - 1 + 1 - + @@ -214,16 +212,18 @@ 1 - + + true 1 - + @@ -245,7 +245,7 @@ 1 - + @@ -253,10 +253,10 @@ true - 1 + 1 - + @@ -264,15 +264,13 @@ true - 1 + 1 - + - true 1 - + + true Represents a reference to a Knora resource in a TextValue true - 1 + 1 - + @@ -306,27 +306,38 @@ 1 - + + true + + + true - 1 + 1 - + - true - + + true + 1 + + + + @@ -335,7 +346,7 @@ 1 - + @@ -357,7 +368,7 @@ 1 - + @@ -365,10 +376,10 @@ true - 1 + 1 - + @@ -387,10 +398,10 @@ true - 1 + 1 - + @@ -401,7 +412,7 @@ 1 - + @@ -412,7 +423,7 @@ 1 - + @@ -420,10 +431,10 @@ true - 1 + 1 - + @@ -443,7 +454,7 @@ 1 - + @@ -454,31 +465,31 @@ 1 - + + + true - 1 + 1 - + - - true - 1 + 0 - + @@ -489,7 +500,7 @@ 1 - + @@ -497,10 +508,10 @@ true - 0 + 1 - + @@ -511,7 +522,7 @@ 1 - + @@ -519,10 +530,10 @@ true - 1 + 1 - + @@ -530,10 +541,10 @@ true - 0 + 1 - + @@ -541,10 +552,10 @@ true - 1 + 0 - + @@ -552,13 +563,14 @@ true - 1 + 1 - + + A resource containing moving image data 1 - + + + + 1 - + + Representation (Movie) - A resource containing moving image data 1 - + - - - 1 - + + true 1 - + + + + + + + true + 1 + + - Representation (Movie) - true 0 - + + + true - 1 + 1 - + + + + + + + true + 1 + + @@ -670,12 +705,10 @@ 1 - + - - @@ -689,7 +722,7 @@ 1 - + @@ -697,10 +730,10 @@ true - 1 + 1 - + @@ -708,10 +741,10 @@ true - 1 + 1 - + @@ -719,10 +752,10 @@ true - 1 + 1 - + @@ -733,10 +766,10 @@ true - 1 + 1 - + @@ -747,7 +780,7 @@ 1 - + @@ -758,7 +791,7 @@ 1 - + @@ -769,7 +802,7 @@ 1 - + @@ -777,10 +810,10 @@ true - 1 + 1 - + @@ -791,7 +824,7 @@ 1 - + @@ -799,10 +832,10 @@ true - 1 + 1 - + @@ -824,29 +857,7 @@ 1 - - - - - - - true - 1 - - - - - - - - true - 1 - - + @@ -857,18 +868,7 @@ 1 - - - - - - - true - 1 - - + @@ -879,7 +879,7 @@ 1 - + @@ -890,7 +890,7 @@ 1 - + @@ -902,10 +902,10 @@ true - 1 + 1 - + @@ -916,10 +916,14 @@ 1 - + + Represents an arbitrary URI in a TextValue + + + 1 - + - Represents an arbitrary URI in a TextValue true - 1 + 1 - + + + + 1 - + - - - 1 - + - - - true - 1 + 1 - + @@ -1011,7 +1011,7 @@ 1 - + @@ -1019,10 +1019,10 @@ true - 1 + 1 - + @@ -1037,7 +1037,7 @@ 1 - + @@ -1048,7 +1048,7 @@ 1 - + @@ -1067,10 +1067,10 @@ true - 1 + 1 - + @@ -1078,10 +1078,10 @@ true - 1 + 1 - + @@ -1092,7 +1092,7 @@ 1 - + @@ -1103,7 +1103,7 @@ 1 - + @@ -1114,7 +1114,7 @@ 1 - + @@ -1125,7 +1125,7 @@ 1 - + @@ -1133,10 +1133,10 @@ true - 1 + 1 - + @@ -1147,7 +1147,7 @@ 1 - + @@ -1158,7 +1158,7 @@ 1 - + @@ -1169,7 +1169,7 @@ 1 - + @@ -1180,20 +1180,12 @@ 1 - + - - true - 1 - - - - + @@ -1202,7 +1194,7 @@ 1 - + @@ -1210,10 +1202,10 @@ true - 1 + 1 - + @@ -1224,21 +1216,18 @@ 1 - + - - - true - 1 + 1 - + @@ -1249,7 +1238,7 @@ 1 - + @@ -1260,10 +1249,14 @@ 1 - + + Represents a Knora date value + + + 1 - + - Represents a Knora date value - + + true + 1 + + + + @@ -1286,15 +1286,13 @@ true - 1 + 0 - + - Representation (3D) - Represents a file containg 3D data + Representation (3D) + Represents a file containg 3D data true - 1 + 1 - + @@ -1321,12 +1321,10 @@ >true - true 1 - + @@ -1337,19 +1335,10 @@ 0 - + - - - true - 1 - - - 1 - + @@ -1365,10 +1354,10 @@ true - 0 + 1 - + @@ -1376,10 +1365,10 @@ true - 1 + 1 - + @@ -1390,7 +1379,7 @@ 1 - + @@ -1400,9 +1389,7 @@ >true 1 - - - + @@ -1412,16 +1399,7 @@ 1 - - - - - - - 1 - - + @@ -1429,10 +1407,10 @@ true - 1 + 1 - + @@ -1443,7 +1421,7 @@ 1 - + @@ -1451,10 +1429,10 @@ true - 1 + 0 - + @@ -1476,26 +1454,37 @@ true - 0 + 1 - + - - true - 0 + 1 - + + + + + + + true + 1 + + + + true @@ -1505,7 +1494,7 @@ 1 - + @@ -1527,7 +1516,7 @@ 1 - + @@ -1535,10 +1524,10 @@ true - 0 + 1 - + @@ -1547,10 +1536,21 @@ true - 1 + 1 - + + + + + + + true + 0 + + @@ -1572,7 +1572,7 @@ 1 - + @@ -1608,39 +1608,36 @@ 1 - + + true 1 - + - Represents a file containing audio data true - 0 - - - + 1 + - true 1 - + @@ -1651,18 +1648,19 @@ 1 - + + Represents a file containing audio data true - 1 + 0 - + @@ -1672,17 +1670,19 @@ >true 1 - + + + true - 1 + 0 - + @@ -1692,10 +1692,10 @@ true - 1 + 1 - + @@ -1703,10 +1703,10 @@ true - 1 + 1 - + @@ -1714,10 +1714,10 @@ true - 1 + 1 - + @@ -1725,10 +1725,10 @@ true - 1 + 1 - + @@ -1736,10 +1736,10 @@ true - 1 + 1 - + @@ -1761,10 +1761,17 @@ 1 - + + + + + + + + Represents a color in a TextValue 1 - + @@ -1791,20 +1798,15 @@ true - 1 + 1 - + - - - - - - - Represents a color in a TextValue + true 1 - + - true - - - 1 - - - - - - - - 1 - - - - - 1 - + @@ -1872,7 +1854,7 @@ 1 - + @@ -1881,26 +1863,25 @@ 1 - + - 1 + 1 - + - Represents a standoff markup tag 1 - + @@ -1909,34 +1890,46 @@ 1 - + - - + Represents a standoff markup tag - true - 1 + 1 + + + + + + + + 1 + + true - 1 + 0 - + + + + + Representation (Zip) 1 - + - Represents an interval in a TextValue - + + true + 1 + + + + @@ -1959,7 +1959,7 @@ 1 - + @@ -1970,12 +1970,10 @@ 1 - + - true 1 - + @@ -1994,7 +1992,7 @@ 1 - + @@ -2005,7 +2003,7 @@ 1 - + @@ -2013,24 +2011,21 @@ true - 1 + 0 - + - - - true - 1 + 1 - + @@ -2040,9 +2035,7 @@ >true 1 - - - + @@ -2052,23 +2045,20 @@ 1 - + - - - - - + true true - 1 + 1 - + @@ -2076,10 +2066,10 @@ true - 1 + 1 - + @@ -2090,30 +2080,27 @@ 1 - + - true 1 - + - Represents a time interval, e.g. in an audio recording true - 1 + 0 - + @@ -2124,21 +2111,20 @@ 1 - + - - - + + true - 1 + 1 - + @@ -2146,13 +2132,14 @@ true - 1 + 1 - + + Represents an interval in a TextValue 1 - + + + + 1 - + - true + true 1 - + @@ -2195,7 +2185,7 @@ 1 - + @@ -2217,7 +2207,7 @@ 1 - + @@ -2228,34 +2218,32 @@ 1 - + - - - - - true - 1 + 1 - + + + + true - 1 + 1 - + @@ -2266,18 +2254,23 @@ 1 - + + + + + + true - 1 + 1 - + @@ -2288,7 +2281,7 @@ 1 - + @@ -2299,7 +2292,7 @@ 1 - + @@ -2310,7 +2303,7 @@ 1 - + @@ -2321,7 +2314,7 @@ 1 - + @@ -2336,17 +2329,7 @@ - - - true - 1 - - - - - + Represents a time interval, e.g. in an audio recording + + + true - 1 + 1 - + - - - 1 - + - Represents a color in HTML format, e.g. "#33eeff" true - 1 + 1 - + true - - true - 1 + 1 - + @@ -2417,7 +2397,7 @@ 1 - + @@ -2428,7 +2408,7 @@ 1 - + @@ -2439,20 +2419,31 @@ 1 - + - true true - 1 + 1 - + + + + + + + + + true + 1 + + @@ -2463,12 +2454,12 @@ 1 - + - + @@ -2477,11 +2468,10 @@ 1 - + - Represents a timestamp in a TextValue 1 - + @@ -2497,24 +2487,21 @@ true - 1 + 1 - + - - - true - 1 + 1 - + @@ -2522,15 +2509,13 @@ true - 1 + 1 - + - - 1 - + @@ -2549,7 +2534,7 @@ 1 - + @@ -2560,7 +2545,7 @@ 1 - + @@ -2571,18 +2556,22 @@ 1 - + + + + + Represents a color in HTML format, e.g. "#33eeff" true - 1 + 1 - + @@ -2593,10 +2582,12 @@ 1 - + + true 1 - + - - - + + 1 - + - + + true + 1 + + + + + true 1 - + @@ -2640,16 +2640,13 @@ true - 1 + 1 - + - Represents a decimal (floating point) value in a TextValue - true 1 - + - - + + + + Represents a timestamp in a TextValue 1 - + @@ -2681,7 +2680,7 @@ 1 - + @@ -2689,10 +2688,10 @@ true - 1 + 1 - + @@ -2703,10 +2702,24 @@ 1 - + + + + true + 1 + + + + + + + + 1 - + - true + + - + + true + 1 + + + + @@ -2730,7 +2751,7 @@ 1 - + @@ -2741,7 +2762,7 @@ 1 - + @@ -2752,7 +2773,7 @@ 1 - + @@ -2763,7 +2784,7 @@ 1 - + @@ -2774,11 +2795,13 @@ 1 - + - Represents a URI + + + 1 - + @@ -2797,10 +2820,13 @@ 1 - + + + + 1 - + @@ -2816,30 +2842,29 @@ true - 1 + 1 - + - - - - - - 1 + true + 1 - + - + Represents a decimal (floating point) value in a TextValue + true - + 1 - + @@ -2858,7 +2883,7 @@ 1 - + @@ -2866,15 +2891,13 @@ true - 0 + 1 - + - true 1 - + + true + + + true - 1 + 1 - + @@ -2901,10 +2929,10 @@ true - 0 + 1 - + @@ -2915,7 +2943,7 @@ 1 - + @@ -2926,10 +2954,11 @@ 1 - + + Represents a URI 1 - + @@ -2948,16 +2977,7 @@ 1 - - - - - - - 1 - - + @@ -2968,14 +2988,10 @@ 1 - + - A resource that can contain a two-dimensional still image file - - - 1 - + @@ -2991,14 +3007,13 @@ true - 1 + 1 - + - Representation (Image) + + + + + - true 1 - + + + + + + true - 1 + 1 - + + + + + + + true + 1 + + - - + true + + + true + 1 + + + + + 1 - + @@ -3069,10 +3114,10 @@ true - 0 + 1 - + @@ -3083,7 +3128,18 @@ 1 - + + + + + + + true + 1 + + @@ -3094,7 +3150,7 @@ 1 - + @@ -3109,18 +3165,41 @@ + A resource that can contain a two-dimensional still image file true - 1 + 1 + + + + + + true + 0 - + + + + + + + + + + true + 1 + + - Representation (Document) + Representation (Image) + true 1 - + + + + + + + 1 + + @@ -3148,13 +3239,44 @@ 1 - + + + - + + true + 1 + + + + + + + + true + 1 + + + + + + + + 1 + + + + + Representation (Document) 1 - + + + + + + + true + 1 + + - true 1 - + @@ -3186,7 +3317,7 @@ 1 - + @@ -3197,7 +3328,40 @@ 1 - + + + + + + + true + 1 + + + + + + + + true + 1 + + + + + + + + true + 1 + + @@ -3207,7 +3371,23 @@ >true 1 - + + + + + + + + + + + true + 1 + + + @@ -3221,6 +3401,17 @@ + + + true + 1 + + + + true 1 - + @@ -3236,10 +3427,21 @@ true - 1 + 0 - + + + + + + + true + 0 + + @@ -3250,25 +3452,25 @@ 1 - + - 1 + 1 - + - 1 + 1 - + @@ -3277,7 +3479,7 @@ 1 - + @@ -3286,7 +3488,7 @@ 1 - + @@ -3295,7 +3497,7 @@ 1 - + @@ -3304,7 +3506,7 @@ 1 - + @@ -3313,21 +3515,30 @@ 1 - + + true 1 - + + + + + + + 1 + + - true - The base class of classes representing Knora values - 1 - + + The base class of classes representing Knora values + 1 - + + + + true 1 - + - - + Represents a knora-base value type in a TextValue 1 - + - Represents a knora-base value type in a TextValue 1 - + @@ -3395,10 +3608,10 @@ true - 1 + 1 - + @@ -3409,7 +3622,7 @@ 1 - + @@ -3417,10 +3630,10 @@ true - 1 + 1 - + @@ -3431,21 +3644,12 @@ 1 - - - - - - - true - 1 - - + + true 1 - + + 1 - + @@ -3479,9 +3684,6 @@ - true - @@ -3510,6 +3712,15 @@ true + + + 1 + + + + + 1 - + @@ -3528,7 +3739,7 @@ 1 - + @@ -3545,10 +3756,12 @@ - 0 + true + 1 - + @@ -3581,29 +3794,18 @@ 1 - - - - - - - true - 1 - - + + true - true - 1 + 1 - + @@ -3611,10 +3813,10 @@ true - 0 + 1 - + @@ -3624,11 +3826,12 @@ >true 1 - - - + + + + 1 - + @@ -3647,46 +3850,46 @@ 1 - + + true 1 + >0 - + - true true - 1 + 1 - + + Represents a generic link object true - 0 + 1 - + - - - + link.gif + Link Object 1 - + - Represents a generic link object - link.gif 1 + >0 - + - Link Object true - 1 + 0 - + @@ -3727,7 +3927,9 @@ >true 1 - + + + @@ -3739,7 +3941,7 @@ 1 - + @@ -3750,10 +3952,10 @@ true - 1 + 1 - + @@ -3764,7 +3966,7 @@ 1 - + @@ -3772,10 +3974,10 @@ true - 1 + 1 - + @@ -3786,7 +3988,7 @@ 1 - + @@ -3819,7 +4021,7 @@ 1 - + @@ -3827,16 +4029,13 @@ true - 1 + 1 - + - - true 1 - + + 1 - + + true 1 - + @@ -3877,33 +4079,60 @@ 1 - + + Represents an arbitrary-precision decimal value true - 1 + 1 - + - Represents an arbitrary-precision decimal value + + + 1 + + + + + true + + + 1 + + + + + Represents something in the world, or an abstract thing + + + 1 + + + + + 1 - + @@ -3912,7 +4141,7 @@ 1 - + @@ -3921,7 +4150,7 @@ 1 - + @@ -3930,7 +4159,16 @@ 0 - + + + + + + + 1 + + @@ -3948,7 +4186,7 @@ 1 - + @@ -3957,24 +4195,27 @@ 1 - + - 1 + 0 - + + Resource 1 - + + + @@ -3982,17 +4223,15 @@ 1 - + - 0 - - - + 1 + @@ -4000,7 +4239,7 @@ 1 - + @@ -4013,18 +4252,24 @@ + + 1 - + - Resource + + + + true 1 @@ -4034,43 +4279,47 @@ + true 1 - + - 1 + true + 0 - + - - + A resource that can store a file + true 1 - + - - - true 1 - + + + @@ -4090,9 +4339,7 @@ >true 1 - - - + @@ -4102,22 +4349,23 @@ 1 - + - A resource that can store a file + Representation true - 1 + 0 - + + 1 - + @@ -4133,22 +4381,21 @@ true - 1 + 0 - + - Representation true - 1 + 1 - + @@ -4163,7 +4410,6 @@ - 1 - + @@ -4179,10 +4425,10 @@ true - 0 + 1 - + @@ -4193,7 +4439,16 @@ 1 - + + + + + + + 1 + + @@ -4204,10 +4459,15 @@ 1 - + + true + + + 1 - + + Region 1 - + @@ -4234,10 +4495,10 @@ true - 0 + 1 - + @@ -4245,27 +4506,25 @@ true - 0 + 1 - + - true + region.gif + true 1 - + - - - - - - true - 1 - - - - - - Region - region.gif true @@ -4297,7 +4543,7 @@ 0 - + @@ -4305,41 +4551,39 @@ true - 1 + 1 - + + true 1 - + - true - 1 + 1 - + - true 0 + >1 - + @@ -4347,10 +4591,10 @@ true - 0 + 1 - + @@ -4358,10 +4602,10 @@ true - 1 + 0 - + @@ -4376,12 +4620,16 @@ + true + true 1 - + @@ -4394,19 +4642,16 @@ + Represents a geometric region of a resource. The geometry is represented currently as JSON string. - true 1 - + - true - Represents a geometric region of a resource. The geometry is represented currently as JSON string. - true - 1 + 1 - + + true 1 + >0 - + @@ -4461,12 +4705,17 @@ + + + - 1 + true + 1 - + @@ -4474,10 +4723,10 @@ true - 1 + 1 - + @@ -4488,7 +4737,7 @@ 1 - + @@ -4499,12 +4748,21 @@ 1 - + + + + + + + true + 1 + + - - - true 1 - + - 1 - - - - - - - 1 - - + @@ -4552,10 +4798,10 @@ true - 1 + 1 - + @@ -4563,21 +4809,22 @@ true - 1 + 1 - + + Represents a geometrical objects as JSON string true - 1 + 1 - + @@ -4585,13 +4832,15 @@ true - 1 + 1 - + + true 1 - + @@ -4610,10 +4859,13 @@ 1 - + + + + Represents a timestamp 1 - + @@ -4632,7 +4884,7 @@ 1 - + @@ -4643,11 +4895,10 @@ 1 - + - Represents a geometrical objects as JSON string 1 - + - true - - - Represents a timestamp 1 - + @@ -4682,10 +4928,11 @@ 1 - + + 1 - + @@ -4704,11 +4951,10 @@ 1 - + - 1 - + @@ -4737,10 +4983,10 @@ true - 1 + 1 - + @@ -4755,6 +5001,7 @@ + 1 - + - true - 1 + 1 - + + + + Represents an integer value 1 - + @@ -4796,7 +5045,7 @@ 1 - + @@ -4807,23 +5056,22 @@ 1 - + + true - 1 + 1 - + - - 1 - + - Represents an integer value 1 - + - + + true 1 - + @@ -4863,10 +5112,10 @@ true - 1 + 1 - + @@ -4877,7 +5126,7 @@ 1 - + @@ -4885,14 +5134,13 @@ true - 1 + 1 - + - 1 - + @@ -4922,7 +5170,7 @@ 1 - + @@ -4933,10 +5181,12 @@ 1 - + + + 1 - + - true - - true - 1 + 1 - + + true 1 - + - 1 + true + 1 - + - true 1 - + + + + 1 - + @@ -5043,18 +5294,16 @@ 1 - + - true - 1 + 1 - + @@ -5065,10 +5314,12 @@ 1 - + + true 1 - + @@ -5087,7 +5338,7 @@ 1 - + @@ -5098,13 +5349,10 @@ 1 - + - - - 1 - + - true true + 1 + + + + + + + 1 - + + + 1 - + + + + true - 1 + 1 - + @@ -5156,7 +5416,7 @@ 1 - + @@ -5167,7 +5427,7 @@ 1 - + @@ -5178,32 +5438,50 @@ 1 - + + + + + + + true + 1 + + + + + + + + 1 + + - - + true 1 - + - - - + true - 1 + 1 - + @@ -5214,7 +5492,7 @@ 1 - + @@ -5236,37 +5514,37 @@ 1 - + - true 1 - + + A reification node that describes direct links between resources - 1 + true + 1 - + - 1 - + @@ -5277,18 +5555,16 @@ 1 - + - true 1 - + @@ -5299,33 +5575,35 @@ 1 - + + true + + + true - 1 + 1 - + - true 1 - + - A reification node that describes direct links between resources 1 - + + A file containing a two-dimensional still image + true 1 - + - 1 + 1 - + @@ -5362,7 +5643,7 @@ 1 - + @@ -5370,18 +5651,13 @@ true - 1 + 1 - + - true - - - 1 - + @@ -5400,10 +5676,12 @@ 1 - + + true 1 - + @@ -5422,7 +5700,7 @@ 1 - + @@ -5430,10 +5708,10 @@ true - 1 + 1 - + @@ -5444,17 +5722,18 @@ 1 - + - A file containing a two-dimensional still image + true 1 - + @@ -5462,10 +5741,10 @@ true - 1 + 1 - + @@ -5473,22 +5752,16 @@ true - 1 - - - - - - - 1 - + + + + - true 1 - + + + + true 1 - + @@ -5527,12 +5802,10 @@ 1 - + - true 1 - + @@ -5551,13 +5824,10 @@ 1 - + - - - 1 - + @@ -5576,12 +5846,11 @@ 1 - + - - + This represents some 3D-object with mesh data, point cloud, etc. 1 - + @@ -5600,10 +5869,12 @@ 1 - + + true 1 - + - This represents some 3D-object with mesh data, point cloud, etc. - true true - 1 + 1 - + @@ -5658,7 +5926,7 @@ 1 - + @@ -5669,10 +5937,26 @@ 1 - + + + + + + + true + 1 + + + + + + + 1 - + @@ -5691,7 +5975,7 @@ 1 - + @@ -5702,7 +5986,18 @@ 1 - + + + + + + + true + 1 + + @@ -5713,7 +6008,7 @@ 1 - + @@ -5721,13 +6016,15 @@ true - 1 + 1 - + + true 1 - + @@ -5746,15 +6043,23 @@ 1 - + - + + true + 1 + + + + - - + + - true + true + 1 + + + + + + Represents an integer value in a TextValue + + + Represents a flat or hierarchical list + + + 1 + + + + + 1 - + + + 1 - - - - - - - true - 1 - - + @@ -5806,7 +6122,7 @@ 1 - + @@ -5814,10 +6130,10 @@ true - 1 + 1 - + @@ -5825,10 +6141,10 @@ true - 1 + 1 - + @@ -5839,14 +6155,10 @@ 1 - + - true - - 1 - + @@ -5865,11 +6177,10 @@ 1 - + - Represents an integer value in a TextValue 1 - + - - - Represents a flat or hierarchical list - - - 1 - - - + Represents an audio file - 1 + true + 1 - + - - 1 - + @@ -5917,13 +6219,15 @@ true - 1 + 1 - + + true 1 - + @@ -5942,11 +6246,13 @@ 1 - + - Represents an audio file + + + 1 - + @@ -5971,13 +6277,15 @@ true - 1 + 1 - + + + 1 - + @@ -5996,18 +6304,20 @@ 1 - + + true true - 1 + 1 - + @@ -6015,21 +6325,22 @@ true - 1 + 1 - + + Representation (Text) true - 1 + 0 - + @@ -6040,26 +6351,22 @@ 1 - + - true - - - true - 1 + 1 - + + A resource containing a text file 1 - + + 1 - + - - true - 1 + 0 - + - 1 + true + 1 - + @@ -6122,12 +6430,10 @@ 1 - + - true true - 1 + 1 - + + + + + + + 1 + + - Representation (Text) true - 0 + 1 - + - A resource containing a text file true - 0 + 1 - + - + + true - 1 + 1 - + @@ -6188,13 +6502,14 @@ true - 1 + 1 - + + 1 - + @@ -6213,7 +6528,7 @@ 1 - + @@ -6221,10 +6536,10 @@ true - 1 + 1 - + @@ -6235,7 +6550,18 @@ 1 - + + + + + + + true + 1 + + @@ -6254,10 +6580,10 @@ true - 1 + 1 - + @@ -6268,7 +6594,7 @@ 1 - + @@ -6279,33 +6605,32 @@ 1 - + - - - Represents a boolean value - true - 1 + 1 - + + + + true - 1 + 1 - + @@ -6316,10 +6641,15 @@ 1 - + + true + Represents a boolean value + + 1 - + @@ -6338,7 +6668,7 @@ 1 - + @@ -6346,10 +6676,10 @@ true - 1 + 1 - + @@ -6360,7 +6690,7 @@ 1 - + @@ -6368,10 +6698,10 @@ true - 1 + 1 - + @@ -6379,27 +6709,25 @@ true - 1 + 1 - + - - - true - 1 + 1 - + + Represents an internal reference in a TextValue 1 - + + + + true 1 - + @@ -6426,28 +6758,24 @@ true - 1 + 1 - + - true - true 1 - + - + 1 - + - Represents an internal reference in a TextValue 1 - + @@ -6478,34 +6805,22 @@ 1 - - - - - - - - true - 1 - - + + Represents a boolean in a TextValue true - 1 + 1 - + - 1 - + + + + + true 1 - + - true + + true 1 - + @@ -6554,10 +6875,10 @@ true - 1 + 1 - + @@ -6568,23 +6889,23 @@ 1 - + - - true - 1 + 1 - + + + 1 - + + Represents a moving image file 1 - + - Represents a boolean in a TextValue - true 1 - + @@ -6623,29 +6942,26 @@ true - 1 + 1 - + - - - + true true - 1 + 1 - + - true 1 - + - - true - 1 + 1 - + @@ -6676,7 +6989,7 @@ 1 - + @@ -6687,7 +7000,7 @@ 1 - + @@ -6698,32 +7011,21 @@ 1 - + - - - Represents a moving image file - - true - 1 - - - - + true - 1 + 1 - + @@ -6732,7 +7034,7 @@ 1 - + @@ -6743,7 +7045,7 @@ 1 - + @@ -6765,18 +7067,16 @@ 1 - + - true 1 - + @@ -6787,18 +7087,7 @@ 1 - - - - - true - - - 1 - - + @@ -6809,7 +7098,7 @@ 1 - + @@ -6820,25 +7109,33 @@ 1 - + + + + true - 1 + true + 1 - + + true 1 - + @@ -6849,21 +7146,18 @@ 1 - + - - - true - 1 + 1 - + @@ -6871,10 +7165,10 @@ true - 1 + 1 - + @@ -6882,10 +7176,10 @@ true - 1 + 1 - + @@ -6896,7 +7190,7 @@ 1 - + @@ -6911,72 +7205,88 @@ - - + true 1 - + + true 1 - + + true 1 - + + true 1 - + + + + - 1 + true + 1 - + + true 1 - + - + true 1 - + + + + + + 1 + + + + + - - - true + 1 + + + + + + + 1 - + - true 1 - + - - true 1 - + + + - true + 1 + + + + + + + + 1 - + + + 1 - + + true - 0 + 1 - + @@ -7077,10 +7409,10 @@ true - 1 + 0 - + @@ -7090,23 +7422,20 @@ >true 1 - - - + true - 1 + 0 - + - a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. 1 - + @@ -7125,7 +7454,7 @@ 1 - + @@ -7147,10 +7476,11 @@ 1 - + + a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. 1 - + + true 1 - + + a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. - true - a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML. - - - true - 0 - - - - - - - 1 - + @@ -7216,12 +7533,10 @@ 1 - + - true 1 - + @@ -7240,7 +7555,7 @@ 1 - + @@ -7251,10 +7566,12 @@ 1 - + + + 1 - + @@ -7273,16 +7590,7 @@ 1 - - - - - - - 1 - - + @@ -7293,11 +7601,10 @@ 1 - + - 1 - + + true true - 1 + 1 - + @@ -7338,23 +7647,19 @@ 1 - + - true - 1 + 1 - + - - 1 - + + + + + + + true + 1 + + + + true 1 - + + true 1 - + @@ -7391,7 +7712,7 @@ 1 - + @@ -7399,13 +7720,15 @@ true - 1 + 1 - + + + 1 - + @@ -7424,7 +7747,16 @@ 1 - + + + + + + + 1 + + @@ -7435,7 +7767,7 @@ 1 - + @@ -7446,7 +7778,7 @@ 1 - + @@ -7457,7 +7789,7 @@ 1 - + @@ -7465,15 +7797,13 @@ true - 1 + 1 - + - true 1 - + @@ -7492,7 +7822,7 @@ 1 - + @@ -7503,7 +7833,7 @@ 1 - + @@ -7511,39 +7841,36 @@ true - 1 + 1 - + - - - - A generic class for representing annotations - 1 + 1 - + - true + true true - 1 + 1 - + + true - 0 + 1 - + - Annotation + + true - 1 + 1 - + + A generic class for representing annotations + true 0 - + + Annotation true - 1 - + 1 + + + @@ -7613,10 +7947,10 @@ true - 1 + 1 - + @@ -7624,10 +7958,10 @@ true - 1 + 1 - + @@ -7638,11 +7972,10 @@ 1 - + - true - 1 + 0 - + @@ -7672,7 +8005,7 @@ 1 - + @@ -7680,19 +8013,22 @@ true - 0 + 1 - + + - 1 + true + 1 - + @@ -7705,7 +8041,16 @@ 1 - + + + + + + + 1 + + @@ -7720,23 +8065,52 @@ + + + 1 + + + + + true - 1 + 0 - + + + + true + 1 + + + 1 - + + + + + + + true + 1 + + @@ -7775,6 +8149,8 @@ + true - true 1 - + + - true 1 - + - 1 - - - - - - - 1 - - + @@ -7835,10 +8198,10 @@ true - 1 + 1 - + @@ -7847,16 +8210,18 @@ 1 - + - 1 + true + 1 - + @@ -7864,10 +8229,10 @@ true - 1 + 1 - + @@ -7895,10 +8260,10 @@ true - 1 + 1 - + @@ -7906,10 +8271,10 @@ true - 1 + 1 - + @@ -7917,21 +8282,19 @@ true - 1 + 1 - + - true 1 - + @@ -7940,7 +8303,7 @@ 1 - + @@ -7951,7 +8314,7 @@ 1 - + @@ -7960,16 +8323,18 @@ 1 - + - 0 + true + 1 - + @@ -7977,10 +8342,19 @@ true - 1 + 1 - + + + + + + + 0 + + @@ -8268,6 +8642,18 @@ true + + Connects a Representation to a zip archive + + + + true + true + + has zip + Connects a Representation to a 3D-file diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl index be646c6149..0a31c25025 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl @@ -17,42 +17,42 @@ knora-api:DDDFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -62,32 +62,32 @@ knora-api:DDDFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:userHasPermission ] ; knora-api:isValueClass true . @@ -100,17 +100,17 @@ knora-api:versionDate knora-api:StandoffTag a owl:Class ; rdfs:comment "Represents a standoff markup tag" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -118,27 +118,27 @@ knora-api:StandoffTag ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; knora-api:isStandoffClass true . @@ -147,11 +147,6 @@ knora-api:DDDRepresentation rdfs:comment "Represents a file containg 3D data" ; rdfs:label "Representation (3D)" ; rdfs:subClassOf knora-api:Representation ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -159,8 +154,8 @@ knora-api:DDDRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -169,43 +164,47 @@ knora-api:DDDRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasDDDFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -215,26 +214,27 @@ knora-api:DDDRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasDDDFileValue + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; knora-api:isResourceClass true . @@ -259,40 +259,38 @@ knora-api:uriValueAsUri knora-api:objectType xsd:anyURI ; knora-api:subjectType knora-api:UriBase . +knora-api:hasArchiveFileValue + a owl:ObjectProperty ; + rdfs:comment "Connects a Representation to a zip archive" ; + rdfs:label "has zip" ; + rdfs:subPropertyOf knora-api:hasFileValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:ArchiveFileValue ; + knora-api:subjectType knora-api:ArchiveRepresentation ; + salsah-gui:guiElement salsah-gui:Fileupload . + knora-api:TextValue a owl:Class ; rdfs:subClassOf knora-api:Value ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasMarkup + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueAsHtml + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:textValueHasLanguage ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:textValueHasMapping @@ -300,59 +298,72 @@ knora-api:TextValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:valueHasUUID ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:textValueHasMaxStandoffStartIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:textValueHasStandoff ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasMaxStandoffStartIndex + owl:onProperty knora-api:textValueHasMarkup + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:textValueAsHtml ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:textValueAsXml ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:textValueHasStandoff + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueAsXml + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; knora-api:isValueClass true . @@ -390,20 +401,6 @@ knora-api:Annotation a owl:Class ; rdfs:comment "A generic class for representing annotations" ; rdfs:label "Annotation" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; @@ -411,81 +408,95 @@ knora-api:Annotation a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOfValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:versionDate ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:isAnnotationOf + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOf + owl:onProperty knora-api:isAnnotationOfValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -514,31 +525,27 @@ knora-api:LinkValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasSourceIri + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -547,17 +554,21 @@ knora-api:LinkValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasTargetIri + owl:onProperty knora-api:linkValueHasTarget + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:linkValueHasSource ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -567,30 +578,30 @@ knora-api:LinkValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasSource + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasTarget + owl:onProperty knora-api:linkValueHasTargetIri ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:linkValueHasSourceIri ] ; knora-api:isValueClass true . @@ -609,77 +620,82 @@ knora-api:Representation rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasFileValue + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -688,13 +704,8 @@ knora-api:Representation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; knora-api:isResourceClass true . @@ -704,33 +715,33 @@ knora-api:StandoffDataTypeTag rdfs:subClassOf knora-api:StandoffTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -740,17 +751,17 @@ knora-api:StandoffDataTypeTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -766,20 +777,15 @@ knora-api:TextFileValue a owl:Class ; rdfs:comment "A text file such as plain Unicode text, LaTeX, TEI/XML, etc." ; rdfs:subClassOf knora-api:FileValue ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -789,57 +795,62 @@ knora-api:TextFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; knora-api:isValueClass true . @@ -865,70 +876,165 @@ knora-api:canBeInstantiated knora-api:objectType xsd:boolean ; knora-api:subjectType owl:Class . -knora-api:StandoffIntervalTag +knora-api:ArchiveRepresentation a owl:Class ; - rdfs:comment "Represents an interval in a TextValue" ; - rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:IntervalBase ; + rdfs:label "Representation (Zip)" ; + rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasArchiveFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasStart + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasEnd + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + knora-api:isResourceClass true . + +knora-api:StandoffIntervalTag + a owl:Class ; + rdfs:comment "Represents an interval in a TextValue" ; + rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:IntervalBase ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:intervalValueHasStart + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasUUID ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:intervalValueHasEnd + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex + ] ; knora-api:isStandoffClass true . knora-api:DecimalBase @@ -942,24 +1048,20 @@ knora-api:DecimalBase knora-api:DocumentFileValue a owl:Class ; rdfs:subClassOf knora-api:FileValue ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:documentFileValueHasPageCount - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -968,27 +1070,27 @@ knora-api:DocumentFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:documentFileValueHasDimY ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:documentFileValueHasDimX + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -997,37 +1099,41 @@ knora-api:DocumentFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:documentFileValueHasDimY + owl:onProperty knora-api:documentFileValueHasDimX + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:documentFileValueHasPageCount + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; knora-api:isValueClass true . @@ -1051,52 +1157,43 @@ knora-api:DocumentRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasDocumentFileValue + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1106,37 +1203,46 @@ knora-api:DocumentRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasDocumentFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deleteDate ] ; knora-api:isResourceClass true . @@ -1156,43 +1262,43 @@ knora-api:IntValue a owl:Class ; rdfs:subClassOf knora-api:Value , knora-api:IntBase ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:intValueAsInt + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1202,17 +1308,17 @@ knora-api:IntValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:intValueAsInt ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1221,8 +1327,8 @@ knora-api:IntValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; knora-api:isValueClass true . @@ -1230,15 +1336,20 @@ knora-api:StandoffDecimalTag a owl:Class ; rdfs:comment "Represents a decimal (floating point) value in a TextValue" ; rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:DecimalBase ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:decimalValueAsDecimal ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1248,42 +1359,37 @@ knora-api:StandoffDecimalTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:decimalValueAsDecimal + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -1344,12 +1450,58 @@ knora-api:resourceIcon knora-api:objectType xsd:string ; knora-api:subjectType owl:Class . -knora-api:ListValue a owl:Class ; - rdfs:subClassOf knora-api:Value ; +knora-api:ArchiveFileValue + a owl:Class ; + rdfs:subClassOf knora-api:FileValue ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1358,19 +1510,28 @@ knora-api:ListValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; + knora-api:isValueClass true . + +knora-api:ListValue a owl:Class ; + rdfs:subClassOf knora-api:Value ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1378,8 +1539,8 @@ knora-api:ListValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1388,13 +1549,18 @@ knora-api:ListValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -1403,17 +1569,37 @@ knora-api:ListValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; knora-api:isValueClass true . @@ -1426,20 +1612,25 @@ knora-api:StandoffIntegerTag owl:cardinality 1 ; owl:onProperty knora-api:intValueAsInt ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1448,33 +1639,28 @@ knora-api:StandoffIntegerTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -1527,22 +1713,27 @@ knora-api:StandoffDateTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:dateValueHasStartEra + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1552,12 +1743,12 @@ knora-api:StandoffDateTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1566,18 +1757,18 @@ knora-api:StandoffDateTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1586,38 +1777,33 @@ knora-api:StandoffDateTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:dateValueHasStartYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:dateValueHasEndMonth ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; knora-api:isStandoffClass true . @@ -1628,72 +1814,72 @@ knora-api:StillImageRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1702,18 +1888,18 @@ knora-api:StillImageRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; knora-api:isResourceClass true . @@ -1747,22 +1933,18 @@ knora-api:StandoffInternalReferenceTag rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:ValueBase ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasInternalReference + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1772,32 +1954,36 @@ knora-api:StandoffInternalReferenceTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasInternalReference ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -1813,18 +1999,13 @@ knora-api:ColorValue a owl:Class ; rdfs:subClassOf knora-api:Value , knora-api:ColorBase ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1833,18 +2014,18 @@ knora-api:ColorValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:colorValueAsColor + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1854,32 +2035,37 @@ knora-api:ColorValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:colorValueAsColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueCreationDate ] ; knora-api:isValueClass true . @@ -1912,29 +2098,28 @@ knora-api:StillImageFileValue a owl:Class ; rdfs:comment "A file containing a two-dimensional still image" ; rdfs:subClassOf knora-api:FileValue ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasDimX + owl:onProperty knora-api:stillImageFileValueHasIIIFBaseUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:stillImageFileValueHasDimX ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1944,41 +2129,46 @@ knora-api:StillImageFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:stillImageFileValueHasDimY ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:attachedToUser ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasDimY + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1987,17 +2177,13 @@ knora-api:StillImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasIIIFBaseUrl + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; knora-api:isValueClass true . @@ -2065,15 +2251,19 @@ knora-api:MovingImageFileValue a owl:Class ; rdfs:comment "Represents a moving image file" ; rdfs:subClassOf knora-api:FileValue ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:movingImageFileValueHasDimY + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2083,12 +2273,17 @@ knora-api:MovingImageFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2098,63 +2293,54 @@ knora-api:MovingImageFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:movingImageFileValueHasDimY + owl:onProperty knora-api:movingImageFileValueHasDimX ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:movingImageFileValueHasFps + owl:onProperty knora-api:movingImageFileValueHasDuration ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:movingImageFileValueHasFps ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:movingImageFileValueHasDimX + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:movingImageFileValueHasDuration + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:valueCreationDate ] ; knora-api:isValueClass true . @@ -2183,13 +2369,18 @@ knora-api:StandoffBooleanTag rdfs:subClassOf knora-api:BooleanBase , knora-api:StandoffDataTypeTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2198,44 +2389,39 @@ knora-api:StandoffBooleanTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:booleanValueAsBoolean ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:booleanValueAsBoolean + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasEnd ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; knora-api:isStandoffClass true . knora-api:AudioRepresentation @@ -2246,57 +2432,57 @@ knora-api:AudioRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasAudioFileValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -2304,36 +2490,43 @@ knora-api:AudioRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; knora-api:isResourceClass true . +knora-api:valueHasUUID + a owl:DatatypeProperty ; + rdfs:comment "The UUID of a value" ; + rdfs:subPropertyOf knora-api:valueHas ; + knora-api:objectType xsd:string ; + knora-api:subjectType knora-api:Value . + knora-api:MovingImageRepresentation a owl:Class ; rdfs:comment "A resource containing moving image data" ; @@ -2341,13 +2534,12 @@ knora-api:MovingImageRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasMovingImageFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2356,13 +2548,13 @@ knora-api:MovingImageRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2372,17 +2564,17 @@ knora-api:MovingImageRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2391,8 +2583,8 @@ knora-api:MovingImageRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2401,42 +2593,36 @@ knora-api:MovingImageRepresentation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:attachedToUser ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasMovingImageFileValue - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; knora-api:isResourceClass true . -knora-api:valueHasUUID - a owl:DatatypeProperty ; - rdfs:comment "The UUID of a value" ; - rdfs:subPropertyOf knora-api:valueHas ; - knora-api:objectType xsd:string ; - knora-api:subjectType knora-api:Value . - knora-api:movingImageFileValueHasFps a owl:DatatypeProperty ; rdfs:comment "The number of frames per second in a moving image file value." ; @@ -2476,7 +2662,7 @@ knora-api:AudioFileValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2485,72 +2671,72 @@ knora-api:AudioFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:audioFileValueHasDuration ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:audioFileValueHasDuration + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; knora-api:isValueClass true . @@ -2633,28 +2819,23 @@ knora-api:StandoffTimeTag rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:TimeBase ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:timeValueAsTimeStamp ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2663,31 +2844,41 @@ knora-api:StandoffTimeTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:timeValueAsTimeStamp + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStartIndex ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent + ] ; knora-api:isStandoffClass true . +knora-api:arkUrl a owl:DatatypeProperty ; + rdfs:comment "Provides the ARK URL of a resource or value." ; + rdfs:label "ARK URL" ; + knora-api:objectType xsd:anyURI . + knora-api:TimeBase a owl:Class ; rdfs:subClassOf knora-api:ValueBase ; rdfs:subClassOf [ a owl:Restriction ; @@ -2695,25 +2886,28 @@ knora-api:TimeBase a owl:Class ; owl:onProperty knora-api:timeValueAsTimeStamp ] . -knora-api:arkUrl a owl:DatatypeProperty ; - rdfs:comment "Provides the ARK URL of a resource or value." ; - rdfs:label "ARK URL" ; - knora-api:objectType xsd:anyURI . - knora-api:Value a owl:Class ; rdfs:comment "The base class of classes representing Knora values" ; rdfs:subClassOf knora-api:ValueBase ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString + ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -2721,7 +2915,7 @@ knora-api:Value a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -2729,11 +2923,11 @@ knora-api:Value a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -2741,19 +2935,11 @@ knora-api:Value a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; knora-api:isValueClass true . @@ -2763,23 +2949,18 @@ knora-api:StandoffUriTag rdfs:subClassOf knora-api:UriBase , knora-api:StandoffDataTypeTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStartIndex ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:uriValueAsUri ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2789,7 +2970,12 @@ knora-api:StandoffUriTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:uriValueAsUri + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2804,7 +2990,7 @@ knora-api:StandoffUriTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -2813,8 +2999,8 @@ knora-api:StandoffUriTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -2900,72 +3086,72 @@ knora-api:BooleanValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:booleanValueAsBoolean ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:booleanValueAsBoolean + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:valueHasComment ] ; knora-api:isValueClass true . @@ -2974,59 +3160,59 @@ knora-api:XSLTransformation rdfs:comment "a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML." ; rdfs:label "a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML." ; rdfs:subClassOf knora-api:TextRepresentation ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFileValue - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty rdfs:label ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasTextFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3035,33 +3221,33 @@ knora-api:XSLTransformation ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; knora-api:isResourceClass true . @@ -3087,12 +3273,7 @@ knora-api:StandoffColorTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3112,22 +3293,27 @@ knora-api:StandoffColorTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:colorValueAsColor + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:colorValueAsColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3137,7 +3323,7 @@ knora-api:StandoffColorTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -3167,6 +3353,14 @@ knora-api:ListNode a owl:Class ; owl:onProperty knora-api:attachedToProject ] . +knora-api:dateValueHasStartDay + a owl:DatatypeProperty ; + rdfs:comment "Represents the start day of a date value." ; + rdfs:label "Date value has start day" ; + rdfs:subPropertyOf knora-api:valueHas ; + knora-api:objectType xsd:integer ; + knora-api:subjectType knora-api:DateBase . + knora-api:isLinkValueProperty a owl:AnnotationProperty ; rdfs:comment "Indicates whether a property points to a link value (reification)" ; @@ -3182,14 +3376,6 @@ knora-api:geonameValueAsGeonameCode knora-api:objectType xsd:string ; knora-api:subjectType knora-api:GeonameValue . -knora-api:dateValueHasStartDay - a owl:DatatypeProperty ; - rdfs:comment "Represents the start day of a date value." ; - rdfs:label "Date value has start day" ; - rdfs:subPropertyOf knora-api:valueHas ; - knora-api:objectType xsd:integer ; - knora-api:subjectType knora-api:DateBase . - knora-api:nextStandoffStartIndex a owl:DatatypeProperty ; rdfs:comment "The next available knora-api:standoffTagHasStartIndex in a sequence of pages of standoff." ; @@ -3229,15 +3415,6 @@ knora-api:linkValueHasSource knora-api:GeomValue a owl:Class ; rdfs:comment "Represents a geometrical objects as JSON string" ; rdfs:subClassOf knora-api:Value ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:geometryValueAsGeometry - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -3245,8 +3422,8 @@ knora-api:GeomValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3255,28 +3432,28 @@ knora-api:GeomValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3286,58 +3463,55 @@ knora-api:GeomValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:geometryValueAsGeometry + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:userHasPermission ] ; knora-api:isValueClass true . knora-api:Resource a owl:Class ; rdfs:comment "Represents something in the world, or an abstract thing" ; rdfs:label "Resource" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; @@ -3349,27 +3523,39 @@ knora-api:Resource a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:creationDate ] ; knora-api:isResourceClass true . @@ -3416,38 +3602,37 @@ knora-api:TextRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasTextFileValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3457,51 +3642,52 @@ knora-api:TextRepresentation rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFileValue + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; knora-api:isResourceClass true . @@ -3560,58 +3746,58 @@ knora-api:StandoffLinkTag rdfs:comment "Represents a reference to a Knora resource in a TextValue" ; rdfs:subClassOf knora-api:StandoffTag ; rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasLink ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -3632,11 +3818,7 @@ knora-api:FileValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3646,7 +3828,7 @@ knora-api:FileValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3655,52 +3837,56 @@ knora-api:FileValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; knora-api:isValueClass true . @@ -3730,72 +3916,72 @@ knora-api:UriValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:uriValueAsUri ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:uriValueAsUri + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:hasPermissions ] ; knora-api:isValueClass true . @@ -3814,72 +4000,72 @@ knora-api:DecimalValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:decimalValueAsDecimal ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:decimalValueAsDecimal + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:versionArkUrl ] ; knora-api:isValueClass true . @@ -3925,60 +4111,55 @@ knora-api:subjectType knora-api:DateValue a owl:Class ; rdfs:comment "Represents a Knora date value" ; rdfs:subClassOf knora-api:DateBase , knora-api:Value ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:dateValueHasCalendar + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -3988,52 +4169,57 @@ knora-api:DateValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:dateValueHasStartEra ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:dateValueHasStartYear + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:versionArkUrl ] ; knora-api:isValueClass true . @@ -4063,19 +4249,14 @@ knora-api:IntervalValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:intervalValueHasEnd ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -4084,7 +4265,7 @@ knora-api:IntervalValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:intervalValueHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4094,22 +4275,22 @@ knora-api:IntervalValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4119,7 +4300,7 @@ knora-api:IntervalValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasStart + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4129,7 +4310,12 @@ knora-api:IntervalValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; knora-api:isValueClass true . @@ -4208,27 +4394,27 @@ knora-api:TimeValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:timeValueAsTimeStamp + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:valueCreationDate ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:timeValueAsTimeStamp ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4237,23 +4423,23 @@ knora-api:TimeValue a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4263,12 +4449,12 @@ knora-api:TimeValue a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:isValueClass true . @@ -4298,8 +4484,8 @@ knora-api:LinkObj a owl:Class ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4308,37 +4494,33 @@ knora-api:LinkObj a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasLinkToValue + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty knora-api:hasLinkTo ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -4346,27 +4528,27 @@ knora-api:LinkObj a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasComment + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4375,23 +4557,27 @@ knora-api:LinkObj a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -4422,42 +4608,41 @@ knora-api:GeonameValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteComment ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:geonameValueAsGeonameCode + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -4467,50 +4652,39 @@ knora-api:GeonameValue rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:geonameValueAsGeonameCode + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; knora-api:isValueClass true . knora-api:DateBase a owl:Class ; rdfs:subClassOf knora-api:ValueBase ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra - ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:dateValueHasStartEra ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -4518,7 +4692,11 @@ knora-api:DateBase a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:dateValueHasStartYear + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -4526,118 +4704,126 @@ knora-api:DateBase a owl:Class ; ] ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:onProperty knora-api:dateValueHasEndMonth + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasCalendar + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndYear ] . knora-api:Region a owl:Class ; rdfs:comment "Represents a geometric region of a resource. The geometry is represented currently as JSON string." ; rdfs:label "Region" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:isRegionOfValue ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasColor - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:isRegionOf - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment + owl:onProperty knora-api:hasColor ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty knora-api:hasGeometry ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:isRegionOf + ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; knora-api:resourceIcon "region.gif" . diff --git a/test_data/ontologyR2RV2/salsahGuiOntology.rdf b/test_data/ontologyR2RV2/salsahGuiOntology.rdf index be34b9cfbb..22e38e3727 100644 --- a/test_data/ontologyR2RV2/salsahGuiOntology.rdf +++ b/test_data/ontologyR2RV2/salsahGuiOntology.rdf @@ -1,103 +1,93 @@ - - - - true - The salsah-gui ontology - - - - - - - ncolors:integer - - - - - - - - - - - - - - - - - - - - hlist(required):iri - - - - - hlist(required):iri - - - - - hlist(required):iri - - - - - - - - numprops:integer - - - - - maxlength:integer - size:integer - - - - - max(required):decimal - min(required):decimal - - - - - max:decimal - min:decimal - - - - - cols:integer - rows:integer - width:percent - wrap:string(soft|hard) - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:salsah-gui="http://api.knora.org/ontology/salsah-gui/v2#" + xmlns:knora-api="http://api.knora.org/ontology/knora-api/v2#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> + + true + + The salsah-gui ontology + + + + + + + + + + + + + + + + + min:decimal + max:decimal + + + + + + + ncolors:integer + + + + + + + + + + hlist(required):iri + + + + + + + + + + wrap:string(soft|hard) + width:percent + rows:integer + cols:integer + + + + + + + hlist(required):iri + + + + size:integer + maxlength:integer + + + + hlist(required):iri + + + + min(required):decimal + max(required):decimal + + + + + + + + + + numprops:integer + + diff --git a/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl index 25b95cfa41..8e3993e27c 100644 --- a/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl @@ -13,7 +13,7 @@ standoff:StandoffParagraphTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -32,18 +32,18 @@ standoff:StandoffParagraphTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -53,12 +53,12 @@ standoff:StandoffParagraphTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -69,17 +69,22 @@ standoff:StandoffTableCellTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -89,7 +94,7 @@ standoff:StandoffTableCellTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -99,22 +104,17 @@ standoff:StandoffTableCellTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -125,52 +125,52 @@ standoff:StandoffBlockquoteTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -181,12 +181,7 @@ standoff:StandoffRootTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -195,42 +190,47 @@ standoff:StandoffRootTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty standoff:standoffRootTagHasDocumentType ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty standoff:standoffRootTagHasDocumentType + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -241,32 +241,32 @@ standoff:StandoffCiteTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -275,18 +275,18 @@ standoff:StandoffCiteTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; knora-api:isStandoffClass true . @@ -296,28 +296,28 @@ standoff:StandoffHeader4Tag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -327,22 +327,22 @@ standoff:StandoffHeader4Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -359,52 +359,52 @@ standoff:StandoffVisualTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -414,28 +414,28 @@ standoff:StandoffSubscriptTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -445,22 +445,22 @@ standoff:StandoffSubscriptTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -471,61 +471,61 @@ standoff:StandoffHyperlinkTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:uriValueAsUri ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasUUID ] ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty standoff:standoffHyperlinkTagHasTarget + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:uriValueAsUri + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty standoff:standoffHyperlinkTagHasTarget + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -536,12 +536,17 @@ standoff:StandoffTableRowTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -551,18 +556,13 @@ standoff:StandoffTableRowTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -571,7 +571,7 @@ standoff:StandoffTableRowTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -580,8 +580,8 @@ standoff:StandoffTableRowTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -589,10 +589,15 @@ standoff:StandoffHeader3Tag a owl:Class ; rdfs:comment "Represents a header of level 3 in a TextValue" ; rdfs:subClassOf standoff:StandoffStructuralTag ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -607,22 +612,22 @@ standoff:StandoffHeader3Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -634,11 +639,6 @@ standoff:StandoffHeader3Tag owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStart ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; knora-api:isStandoffClass true . standoff:StandoffBoldTag @@ -648,17 +648,12 @@ standoff:StandoffBoldTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -670,6 +665,11 @@ standoff:StandoffBoldTag owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasEnd ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -687,13 +687,13 @@ standoff:StandoffBoldTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -708,43 +708,43 @@ standoff:StandoffLineTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -759,53 +759,53 @@ standoff:StandoffBrTag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -816,27 +816,27 @@ standoff:StandoffPreTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -846,22 +846,22 @@ standoff:StandoffPreTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -877,17 +877,17 @@ standoff:StandoffTableTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -897,17 +897,17 @@ standoff:StandoffTableTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -916,8 +916,8 @@ standoff:StandoffTableTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -933,47 +933,47 @@ standoff:StandoffHeader2Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -983,23 +983,23 @@ standoff:StandoffSuperscriptTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1014,22 +1014,22 @@ standoff:StandoffSuperscriptTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -1039,53 +1039,53 @@ standoff:StandoffItalicTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; knora-api:isStandoffClass true . @@ -1096,22 +1096,17 @@ standoff:StandoffTableBodyTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1121,27 +1116,32 @@ standoff:StandoffTableBodyTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -1154,6 +1154,11 @@ standoff:StandoffHeader1Tag owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStart ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -1167,22 +1172,17 @@ standoff:StandoffHeader1Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1192,12 +1192,12 @@ standoff:StandoffHeader1Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -1213,7 +1213,7 @@ standoff:StandoffStructuralTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1228,17 +1228,12 @@ standoff:StandoffStructuralTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1247,13 +1242,18 @@ standoff:StandoffStructuralTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; knora-api:isStandoffClass true . @@ -1264,32 +1264,32 @@ standoff:StandoffListElementTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1299,17 +1299,17 @@ standoff:StandoffListElementTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; knora-api:isStandoffClass true . @@ -1317,10 +1317,15 @@ standoff:StandoffStrikethroughTag a owl:Class ; rdfs:comment "Represents struck text in a TextValue" ; rdfs:subClassOf standoff:StandoffVisualTag ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1330,42 +1335,37 @@ standoff:StandoffStrikethroughTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStart ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -1375,13 +1375,13 @@ standoff:StandoffUnorderedListTag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1391,17 +1391,17 @@ standoff:StandoffUnorderedListTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1410,13 +1410,13 @@ standoff:StandoffUnorderedListTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1429,40 +1429,35 @@ standoff:StandoffHeader6Tag a owl:Class ; rdfs:comment "Represents a header of level 6 in a TextValue" ; rdfs:subClassOf standoff:StandoffStructuralTag ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1479,6 +1474,11 @@ standoff:StandoffHeader6Tag owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; knora-api:isStandoffClass true . standoff:StandoffUnderlineTag @@ -1488,52 +1488,52 @@ standoff:StandoffUnderlineTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; knora-api:isStandoffClass true . @@ -1541,26 +1541,26 @@ standoff:StandoffCodeTag a owl:Class ; rdfs:comment "Represents a section of computer source code in a text" ; rdfs:subClassOf standoff:StandoffStructuralTag ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasStartParent ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1569,27 +1569,27 @@ standoff:StandoffCodeTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -1600,17 +1600,12 @@ standoff:StandoffOrderedListTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex - ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1619,13 +1614,13 @@ standoff:StandoffOrderedListTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1634,8 +1629,8 @@ standoff:StandoffOrderedListTag ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1645,7 +1640,12 @@ standoff:StandoffOrderedListTag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd + ] ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -1659,15 +1659,20 @@ standoff:StandoffHeader5Tag a owl:Class ; rdfs:comment "Represents a header of level 5 in a TextValue" ; rdfs:subClassOf standoff:StandoffStructuralTag ; + rdfs:subClassOf [ a owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent + ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; @@ -1682,33 +1687,28 @@ standoff:StandoffHeader5Tag rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ a owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasUUID ] ; - rdfs:subClassOf [ a owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex - ] ; knora-api:isStandoffClass true . standoff:standoffRootTagHasDocumentType diff --git a/webapi/src/main/resources/application.conf b/webapi/src/main/resources/application.conf index ed8341b202..72df2b4c3b 100644 --- a/webapi/src/main/resources/application.conf +++ b/webapi/src/main/resources/application.conf @@ -393,13 +393,16 @@ app { "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", - "application/zip", - "application/x-tar", "application/x-iso9660-image", ] text-mime-types = ["application/xml", "text/xml", "text/csv", "text/plain"] video-mime-types = ["video/mp4"] audio-mime-types = ["audio/mpeg", "audio/mp4", "audio/wav", "audio/x-wav", "audio/vnd.wave"] + archive-mime-types = [ + "application/zip", + "application/x-tar", + "application/gzip" + ] } ark { diff --git a/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala b/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala index 95ee13981b..98f2480dff 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala @@ -181,6 +181,7 @@ object OntologyConstants { val AudioRepresentation: IRI = KnoraBasePrefixExpansion + "AudioRepresentation" val DDDRepresentation: IRI = KnoraBasePrefixExpansion + "DDDRepresentation" val DocumentRepresentation: IRI = KnoraBasePrefixExpansion + "DocumentRepresentation" + val ArchiveRepresentation: IRI = KnoraBasePrefixExpansion + "ArchiveRepresentation" val MovingImageRepresentation: IRI = KnoraBasePrefixExpansion + "MovingImageRepresentation" val StillImageRepresentation: IRI = KnoraBasePrefixExpansion + "StillImageRepresentation" val TextRepresentation: IRI = KnoraBasePrefixExpansion + "TextRepresentation" @@ -258,6 +259,7 @@ object OntologyConstants { val HasDDDFileValue: IRI = KnoraBasePrefixExpansion + "hasDDDFileValue" val HasTextFileValue: IRI = KnoraBasePrefixExpansion + "hasTextFileValue" val HasDocumentFileValue: IRI = KnoraBasePrefixExpansion + "hasDocumentFileValue" + val HasArchiveFileValue: IRI = KnoraBasePrefixExpansion + "hasArchiveFileValue" val HasComment: IRI = KnoraBasePrefixExpansion + "hasComment" val ResourceIcon: IRI = KnoraBasePrefixExpansion + "resourceIcon" @@ -298,6 +300,7 @@ object OntologyConstants { val AudioFileValue: IRI = KnoraBasePrefixExpansion + "AudioFileValue" val DDDFileValue: IRI = KnoraBasePrefixExpansion + "DDDFileValue" val DocumentFileValue: IRI = KnoraBasePrefixExpansion + "DocumentFileValue" + val ArchiveFileValue: IRI = KnoraBasePrefixExpansion + "ArchiveFileValue" val StillImageFileValue: IRI = KnoraBasePrefixExpansion + "StillImageFileValue" val MovingImageFileValue: IRI = KnoraBasePrefixExpansion + "MovingImageFileValue" val TextFileValue: IRI = KnoraBasePrefixExpansion + "TextFileValue" @@ -309,7 +312,8 @@ object OntologyConstants { AudioFileValue, DDDFileValue, TextFileValue, - DocumentFileValue + DocumentFileValue, + ArchiveFileValue ) val ValueClasses: Set[IRI] = Set( @@ -330,6 +334,7 @@ object OntologyConstants { AudioFileValue, DDDFileValue, DocumentFileValue, + ArchiveFileValue, StillImageFileValue, MovingImageFileValue, TextFileValue @@ -431,6 +436,7 @@ object OntologyConstants { AudioRepresentation, DDDRepresentation, DocumentRepresentation, + ArchiveRepresentation, MovingImageRepresentation, StillImageRepresentation, TextRepresentation @@ -776,6 +782,7 @@ object OntologyConstants { val DDDRepresentation: IRI = KnoraApiV2PrefixExpansion + "DDDRepresentation" val TextRepresentation: IRI = KnoraApiV2PrefixExpansion + "TextRepresentation" val DocumentRepresentation: IRI = KnoraApiV2PrefixExpansion + "DocumentRepresentation" + val ArchiveRepresentation: IRI = KnoraApiV2PrefixExpansion + "ArchiveRepresentation" val XMLToStandoffMapping: IRI = KnoraApiV2PrefixExpansion + "XMLToStandoffMapping" val ListNode: IRI = KnoraApiV2PrefixExpansion + "ListNode" val LinkObj: IRI = KnoraApiV2PrefixExpansion + "LinkObj" @@ -822,6 +829,9 @@ object OntologyConstants { val DDDFileValue: IRI = KnoraApiV2PrefixExpansion + "DDDFileValue" val TextFileValue: IRI = KnoraApiV2PrefixExpansion + "TextFileValue" val DocumentFileValue: IRI = KnoraApiV2PrefixExpansion + "DocumentFileValue" + val ArchiveFileValue: IRI = KnoraApiV2PrefixExpansion + "ArchiveFileValue" + + val HasRepresentationValue: IRI = KnoraApiV2PrefixExpansion + "hasRepresentationValue" val FileValueClasses: Set[IRI] = Set( FileValue, @@ -830,7 +840,8 @@ object OntologyConstants { AudioFileValue, DDDFileValue, TextFileValue, - DocumentFileValue + DocumentFileValue, + ArchiveFileValue ) val ValueClasses: Set[IRI] = Set( @@ -870,6 +881,7 @@ object OntologyConstants { val HasDDDFileValue: IRI = KnoraApiV2PrefixExpansion + "hasDDDFileValue" val HasTextFileValue: IRI = KnoraApiV2PrefixExpansion + "hasTextFileValue" val HasDocumentFileValue: IRI = KnoraApiV2PrefixExpansion + "hasDocumentFileValue" + val HasArchiveFileValue: IRI = KnoraApiV2PrefixExpansion + "hasArchiveFileValue" val DateValueHasStartYear: IRI = KnoraApiV2PrefixExpansion + "dateValueHasStartYear" val DateValueHasEndYear: IRI = KnoraApiV2PrefixExpansion + "dateValueHasEndYear" @@ -1006,7 +1018,7 @@ object OntologyConstants { val AudioRepresentation: IRI = KnoraApiV2PrefixExpansion + "AudioRepresentation" val DDDRepresentation: IRI = KnoraApiV2PrefixExpansion + "DDDRepresentation" val TextRepresentation: IRI = KnoraApiV2PrefixExpansion + "TextRepresentation" - val DocumentRepresentation: IRI = KnoraApiV2PrefixExpansion + "DocumentRepresentation" + val ArchiveRepresentation: IRI = KnoraApiV2PrefixExpansion + "ArchiveRepresentation" val LinkObj: IRI = KnoraApiV2PrefixExpansion + "LinkObj" val Date: IRI = KnoraApiV2PrefixExpansion + "Date" @@ -1043,6 +1055,7 @@ object OntologyConstants { val HasDDDFile: IRI = KnoraApiV2PrefixExpansion + "hasDDDFile" val HasTextFile: IRI = KnoraApiV2PrefixExpansion + "hasTextFile" val HasDocumentFile: IRI = KnoraApiV2PrefixExpansion + "hasDocumentFile" + val HasArchiveFile: IRI = KnoraApiV2PrefixExpansion + "hasArchiveFile" val File: IRI = KnoraApiV2PrefixExpansion + "File" @@ -1095,13 +1108,15 @@ object OntologyConstants { KnoraBase.DDDFileValue -> KnoraApiV2Simple.File, KnoraBase.TextFileValue -> KnoraApiV2Simple.File, KnoraBase.DocumentFileValue -> KnoraApiV2Simple.File, + KnoraBase.ArchiveFileValue -> KnoraApiV2Simple.File, KnoraBase.HasFileValue -> KnoraApiV2Simple.HasFile, KnoraBase.HasStillImageFileValue -> KnoraApiV2Simple.HasStillImageFile, KnoraBase.HasMovingImageFileValue -> KnoraApiV2Simple.HasMovingImageFile, KnoraBase.HasAudioFileValue -> KnoraApiV2Simple.HasAudioFile, KnoraBase.HasDDDFileValue -> KnoraApiV2Simple.HasDDDFile, KnoraBase.HasTextFileValue -> KnoraApiV2Simple.HasTextFile, - KnoraBase.HasDocumentFileValue -> KnoraApiV2Simple.HasDocumentFile + KnoraBase.HasDocumentFileValue -> KnoraApiV2Simple.HasDocumentFile, + KnoraBase.HasArchiveFileValue -> KnoraApiV2Simple.HasArchiveFile ), (InternalSchema, ApiV2Complex) -> Map( KnoraBase.SubjectClassConstraint -> KnoraApiV2Complex.SubjectType, @@ -1143,6 +1158,7 @@ object OntologyConstants { KnoraApiV2Simple.HasDDDFile -> KnoraBase.HasDDDFileValue, KnoraApiV2Simple.HasTextFile -> KnoraBase.HasTextFileValue, KnoraApiV2Simple.HasDocumentFile -> KnoraBase.HasDocumentFileValue, + KnoraApiV2Simple.HasArchiveFile -> KnoraBase.HasArchiveFileValue, KnoraApiV2Simple.ListNode -> KnoraBase.ListValue ), (ApiV2Complex, InternalSchema) -> Map( diff --git a/webapi/src/main/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2.scala index 5cb374fe62..21d5f3d18e 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2.scala @@ -1079,6 +1079,7 @@ object ConstructResponseUtilV2 { comment = valueCommentOption ) ) + case OntologyConstants.KnoraBase.MovingImageFileValue => FastFuture.successful( MovingImageFileValueContentV2( @@ -1096,6 +1097,15 @@ object ConstructResponseUtilV2 { ) ) + case OntologyConstants.KnoraBase.ArchiveFileValue => + FastFuture.successful( + ArchiveFileValueContentV2( + ontologySchema = InternalSchema, + fileValue = fileValue, + comment = valueCommentOption + ) + ) + case _ => throw InconsistentRepositoryDataException(s"Unexpected file value type: $valueType") } } diff --git a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/valuemessages/ValueMessagesV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/valuemessages/ValueMessagesV2.scala index bb73adc5c5..5f0316811e 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/valuemessages/ValueMessagesV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/valuemessages/ValueMessagesV2.scala @@ -1382,6 +1382,17 @@ object ValueContentV2 extends ValueContentReaderV2[ValueContentV2] { log = log ) + case OntologyConstants.KnoraApiV2Complex.ArchiveFileValue => + ArchiveFileValueContentV2.fromJsonLDObject( + jsonLDObject = jsonLDObject, + requestingUser = requestingUser, + responderManager = responderManager, + storeManager = storeManager, + featureFactoryConfig = featureFactoryConfig, + settings = settings, + log = log + ) + case other => throw NotImplementedException(s"Parsing of JSON-LD value type not implemented: $other") } @@ -3379,6 +3390,66 @@ case class DocumentFileValueContentV2( } } +/** + * Represents archive file metadata. + * + * @param fileValue the basic metadata about the file value. + * @param comment a comment on this `ArchiveFileValueContentV2`, if any. + */ +case class ArchiveFileValueContentV2( + ontologySchema: OntologySchema, + fileValue: FileValueV2, + comment: Option[String] = None +) extends FileValueContentV2 { + override def valueType: SmartIri = { + implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + OntologyConstants.KnoraBase.ArchiveFileValue.toSmartIri.toOntologySchema(ontologySchema) + } + + override def valueHasString: String = fileValue.internalFilename + + override def toOntologySchema(targetSchema: OntologySchema): ArchiveFileValueContentV2 = + copy(ontologySchema = targetSchema) + + override def toJsonLDValue( + targetSchema: ApiV2Schema, + projectADM: ProjectADM, + settings: KnoraSettingsImpl, + schemaOptions: Set[SchemaOption] + ): JsonLDValue = { + val fileUrl: String = s"${settings.externalSipiBaseUrl}/${projectADM.shortcode}/${fileValue.internalFilename}/file" + + targetSchema match { + case ApiV2Simple => toJsonLDValueInSimpleSchema(fileUrl) + case ApiV2Complex => + JsonLDObject( + toJsonLDObjectMapInComplexSchema( + fileUrl + ) + ) + } + } + + override def unescape: ValueContentV2 = + copy(comment = comment.map(commentStr => stringFormatter.fromSparqlEncodedString(commentStr))) + + override def wouldDuplicateOtherValue(that: ValueContentV2): Boolean = + that match { + case thatArchiveFile: ArchiveFileValueContentV2 => + fileValue == thatArchiveFile.fileValue + + case _ => throw AssertionException(s"Can't compare a <$valueType> to a <${that.valueType}>") + } + + override def wouldDuplicateCurrentVersion(currentVersion: ValueContentV2): Boolean = + currentVersion match { + case thatArchiveFile: ArchiveFileValueContentV2 => + wouldDuplicateOtherValue(thatArchiveFile) && comment == thatArchiveFile.comment + + case _ => throw AssertionException(s"Can't compare a <$valueType> to a <${currentVersion.valueType}>") + } +} + /** * Constructs [[DocumentFileValueContentV2]] objects based on JSON-LD input. */ @@ -3420,6 +3491,44 @@ object DocumentFileValueContentV2 extends ValueContentReaderV2[DocumentFileValue } } +/** + * Constructs [[ArchiveFileValueContentV2]] objects based on JSON-LD input. + */ +object ArchiveFileValueContentV2 extends ValueContentReaderV2[ArchiveFileValueContentV2] { + override def fromJsonLDObject( + jsonLDObject: JsonLDObject, + requestingUser: UserADM, + responderManager: ActorRef, + storeManager: ActorRef, + featureFactoryConfig: FeatureFactoryConfig, + settings: KnoraSettingsImpl, + log: LoggingAdapter + )(implicit timeout: Timeout, executionContext: ExecutionContext): Future[ArchiveFileValueContentV2] = { + implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + + for { + fileValueWithSipiMetadata <- FileValueWithSipiMetadata.fromJsonLDObject( + jsonLDObject = jsonLDObject, + requestingUser = requestingUser, + responderManager = responderManager, + storeManager = storeManager, + settings = settings, + log = log + ) + + _ = if (!settings.archiveMimeTypes.contains(fileValueWithSipiMetadata.fileValue.internalMimeType)) { + throw BadRequestException( + s"File ${fileValueWithSipiMetadata.fileValue.internalFilename} has MIME type ${fileValueWithSipiMetadata.fileValue.internalMimeType}, which is not supported for archive files" + ) + } + } yield ArchiveFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = fileValueWithSipiMetadata.fileValue, + comment = getComment(jsonLDObject) + ) + } +} + /** * Represents text file metadata. * diff --git a/webapi/src/main/scala/org/knora/webapi/settings/KnoraSettings.scala b/webapi/src/main/scala/org/knora/webapi/settings/KnoraSettings.scala index 8deb218b1a..8322f62a7d 100644 --- a/webapi/src/main/scala/org/knora/webapi/settings/KnoraSettings.scala +++ b/webapi/src/main/scala/org/knora/webapi/settings/KnoraSettings.scala @@ -129,6 +129,15 @@ class KnoraSettingsImpl(config: Config, log: LoggingAdapter) extends Extension { } .toSet + val archiveMimeTypes: Set[String] = config + .getList("app.sipi.archive-mime-types") + .iterator + .asScala + .map { mType: ConfigValue => + mType.unwrapped.toString + } + .toSet + val internalSipiProtocol: String = config.getString("app.sipi.internal-protocol") val internalSipiHost: String = config.getString("app.sipi.internal-host") val internalSipiPort: Int = config.getInt("app.sipi.internal-port") diff --git a/webapi/src/test/scala/org/knora/webapi/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/BUILD.bazel index 3829210fe8..6952d4e3a2 100644 --- a/webapi/src/test/scala/org/knora/webapi/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/BUILD.bazel @@ -25,5 +25,6 @@ filegroup( "//webapi/src/test/scala/org/knora/webapi/sharedtestdata:srcs", "//webapi/src/test/scala/org/knora/webapi/store:srcs", "//webapi/src/test/scala/org/knora/webapi/util:srcs", + "//webapi/src/test/scala/org/knora/webapi/models:srcs", ], ) diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v2/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/e2e/v2/BUILD.bazel index 6f14577fb2..b17a37911f 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v2/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/e2e/v2/BUILD.bazel @@ -74,7 +74,6 @@ scala_test( size = "medium", # 300s srcs = [ "OntologyV2R2RSpec.scala", - "OntologyModels.scala" ], data = [ "//knora-ontologies", diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala index d1c60d645f..2841b134a9 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala @@ -13,6 +13,7 @@ import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.messages.util.rdf._ import org.knora.webapi.messages.v2.responder.ontologymessages.{InputOntologyV2, TestResponseParsingModeV2} import org.knora.webapi.messages.{OntologyConstants, SmartIri, StringFormatter} +import org.knora.webapi.models._ import org.knora.webapi.routing.v2.{OntologiesRouteV2, ResourcesRouteV2} import org.knora.webapi.sharedtestdata.{SharedOntologyTestDataADM, SharedTestDataADM} import org.knora.webapi.util._ diff --git a/webapi/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala b/webapi/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala index 4fd0266bd6..cee49ad53d 100644 --- a/webapi/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala @@ -7,7 +7,6 @@ package org.knora.webapi.it.v2 import java.net.URLEncoder import java.nio.file.{Files, Paths} - import akka.http.scaladsl.model._ import akka.http.scaladsl.model.headers.BasicHttpCredentials import akka.http.scaladsl.unmarshalling.Unmarshal @@ -19,6 +18,7 @@ import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtoc import org.knora.webapi.messages.util.rdf._ import org.knora.webapi.messages.v2.routing.authenticationmessages._ import org.knora.webapi.messages.{OntologyConstants, SmartIri, StringFormatter} +import org.knora.webapi.models.filemodels._ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.MutableTestIri @@ -114,6 +114,8 @@ class KnoraSipiIntegrationV2ITSpec private val testVideo2OriginalFilename = "test.wav" private val pathToTestVideo2 = s"test_data/test_route/files/$testVideo2OriginalFilename" + private val thingDocumentIRI = "http://0.0.0.0:3333/ontology/0001/anything/v2#ThingDocument" + /** * Represents the information that Knora returns about an image file value that was created. * @@ -433,27 +435,16 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(marblesOriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. - val jsonLdEntity = - s"""{ - | "@type" : "anything:ThingPicture", - | "knora-api:hasStillImageFileValue" : { - | "@type" : "knora-api:StillImageFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "test thing", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + val jsonLdEntity = UploadFileRequest + .make( + fileType = FileType.StillImageFile, + internalFilename = uploadedFile.internalFilename, + className = Some("ThingPicture"), + ontologyName = "anything" + ) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -518,23 +509,18 @@ class KnoraSipiIntegrationV2ITSpec uploadedFile.originalFilename should ===(trp88OriginalFilename) // JSON describing the new image to Knora. - val jsonLdEntity = - s"""{ - | "@id" : "${stillImageResourceIri.get}", - | "@type" : "anything:ThingPicture", - | "knora-api:hasStillImageFileValue" : { - | "@id" : "${stillImageFileValueIri.get}", - | "@type" : "knora-api:StillImageFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}", - | "knora-api:hasPermissions" : "CR knora-admin:Creator|V knora-admin:UnknownUser" - | }, - | "@context" : { - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin - - // Send the JSON in a PUT request to Knora. + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.StillImageFile, + internalFilename = uploadedFile.internalFilename, + resourceIri = stillImageResourceIri.get, + valueIri = stillImageFileValueIri.get, + className = Some("ThingPicture"), + ontologyName = "anything" + ) + .toJsonLd + + // Send the JSON in a PUT request to the API. val knoraPostRequest = Put(baseApiUrl + "/v2/values", HttpEntity(ContentTypes.`application/json`, jsonLdEntity)) ~> addCredentials( BasicHttpCredentials(anythingUserEmail, password) @@ -576,19 +562,16 @@ class KnoraSipiIntegrationV2ITSpec val temporaryDirectDownloadUrl = temporaryUrl + "/file" // JSON describing the new image to Knora. - val jsonLdEntity = - s"""{ - | "@id" : "${stillImageResourceIri.get}", - | "@type" : "anything:ThingDocument", - | "knora-api:hasStillImageFileValue" : { - | "@type" : "knora-api:StillImageFileValue", - | "knora-api:fileValueHasFilename" : "$internalFilename" - | }, - | "@context" : { - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.StillImageFile, + internalFilename = internalFilename, + resourceIri = stillImageResourceIri.get, + valueIri = stillImageFileValueIri.get, + className = Some("ThingDocument"), // refuse, as it should be "ThingImage" + ontologyName = "anything" + ) + .toJsonLd // Send the JSON in a POST request to Knora. val knoraPostRequest = @@ -614,27 +597,17 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(minimalPdfOriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. val jsonLdEntity = - s"""{ - | "@type" : "anything:ThingDocument", - | "knora-api:hasDocumentFileValue" : { - | "@type" : "knora-api:DocumentFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "test thing", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + UploadFileRequest + .make( + fileType = FileType.DocumentFile, + className = Some("ThingDocument"), + internalFilename = uploadedFile.internalFilename, + ontologyName = "anything" + ) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -646,9 +619,7 @@ class KnoraSipiIntegrationV2ITSpec // Get the resource from Knora. val knoraGetRequest = Get(s"$baseApiUrl/v2/resources/${URLEncoder.encode(pdfResourceIri.get, "UTF-8")}") val resource: JsonLDDocument = getResponseJsonLD(knoraGetRequest) - assert( - resource.requireTypeAsKnoraTypeIri.toString == "http://0.0.0.0:3333/ontology/0001/anything/v2#ThingDocument" - ) + assert(resource.requireTypeAsKnoraTypeIri.toString == thingDocumentIRI) // Get the new file value from the resource. @@ -677,7 +648,6 @@ class KnoraSipiIntegrationV2ITSpec assert(savedDocument.height.contains(minimalPdfHeight)) // Request the permanently stored file from Sipi. - println(s"PDF URL is ${savedDocument.url.replace("http://0.0.0.0:1024", baseInternalSipiUrl)}") val sipiGetFileRequest = Get(savedDocument.url.replace("http://0.0.0.0:1024", baseInternalSipiUrl)) checkResponseOK(sipiGetFileRequest) } @@ -692,25 +662,17 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(testPdfOriginalFilename) - // Ask Knora to update the value. - - val jsonLdEntity = - s"""{ - | "@id" : "${pdfResourceIri.get}", - | "@type" : "anything:ThingDocument", - | "knora-api:hasDocumentFileValue" : { - | "@id" : "${pdfValueIri.get}", - | "@type" : "knora-api:DocumentFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + // Update the value. + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.DocumentFile, + internalFilename = uploadedFile.internalFilename, + resourceIri = pdfResourceIri.get, + valueIri = pdfValueIri.get, + className = Some("ThingDocument"), + ontologyName = "anything" + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( @@ -741,6 +703,36 @@ class KnoraSipiIntegrationV2ITSpec checkResponseOK(sipiGetFileRequest) } + "not create a document resource if the file is actually a zip file" in { + // Upload the file to Sipi. + val sipiUploadResponse: SipiUploadResponse = uploadToSipi( + loginToken = loginToken, + filesToUpload = Seq(FileToUpload(path = pathToMinimalZip, mimeType = MediaTypes.`application/zip`)) + ) + + val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head + uploadedFile.originalFilename should ===(minimalZipOriginalFilename) + uploadedFile.fileType should equal("archive") + + // Create the resource in the API. + + val jsonLdEntity = UploadFileRequest + .make( + fileType = FileType.DocumentFile, + className = Some("ThingDocument"), + internalFilename = uploadedFile.internalFilename, + ontologyName = "anything" + ) + .toJsonLd + + val request = Post( + s"$baseApiUrl/v2/resources", + HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity) + ) ~> addCredentials(BasicHttpCredentials(anythingUserEmail, password)) + val response = singleAwaitingRequest(request) + assert(response.status == StatusCodes.BadRequest) + } + "create a resource with a CSV file" in { // Upload the file to Sipi. val sipiUploadResponse: SipiUploadResponse = uploadToSipi( @@ -752,26 +744,14 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(csv1OriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. - val jsonLdEntity = - s"""{ - | "@type" : "knora-api:TextRepresentation", - | "knora-api:hasTextFileValue" : { - | "@type" : "knora-api:TextFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "text file", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = UploadFileRequest + .make( + fileType = FileType.TextFile, + internalFilename = uploadedFile.internalFilename + ) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -825,24 +805,15 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(csv2OriginalFilename) - // Ask Knora to update the value. - - val jsonLdEntity = - s"""{ - | "@id" : "${csvResourceIri.get}", - | "@type" : "knora-api:TextRepresentation", - | "knora-api:hasTextFileValue" : { - | "@id" : "${csvValueIri.get}", - | "@type" : "knora-api:TextFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + // Update the value. + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.TextFile, + internalFilename = uploadedFile.internalFilename, + resourceIri = csvResourceIri.get, + valueIri = csvValueIri.get + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( @@ -881,26 +852,11 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(csv1OriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. - val jsonLdEntity = - s"""{ - | "@type" : "knora-api:StillImageRepresentation", - | "knora-api:hasStillImageValue" : { - | "@type" : "knora-api:StillImageFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "still image file", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.StillImageFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -921,26 +877,11 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(xml1OriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. - val jsonLdEntity = - s"""{ - | "@type" : "knora-api:TextRepresentation", - | "knora-api:hasTextFileValue" : { - | "@type" : "knora-api:TextFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "text file", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.TextFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -994,24 +935,16 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(xml2OriginalFilename) - // Ask Knora to update the value. + // Update the value. - val jsonLdEntity = - s"""{ - | "@id" : "${xmlResourceIri.get}", - | "@type" : "knora-api:TextRepresentation", - | "knora-api:hasTextFileValue" : { - | "@id" : "${xmlValueIri.get}", - | "@type" : "knora-api:TextFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.TextFile, + internalFilename = uploadedFile.internalFilename, + resourceIri = xmlResourceIri.get, + valueIri = xmlValueIri.get + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( @@ -1039,7 +972,7 @@ class KnoraSipiIntegrationV2ITSpec checkResponseOK(sipiGetFileRequest) } - "create a resource with a Zip file" in { + "not create a resource of type TextRepresentation with a Zip file" in { // Upload the file to Sipi. val sipiUploadResponse: SipiUploadResponse = uploadToSipi( loginToken = loginToken, @@ -1049,27 +982,35 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(minimalZipOriginalFilename) - // Ask Knora to create the resource. + // Create the resource in the API. - val jsonLdEntity = - s"""{ - | "@type" : "anything:ThingDocument", - | "knora-api:hasDocumentFileValue" : { - | "@type" : "knora-api:DocumentFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "test thing", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.TextFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd + + val request = Post( + s"$baseApiUrl/v2/resources", + HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity) + ) ~> addCredentials(BasicHttpCredentials(anythingUserEmail, password)) + val response = singleAwaitingRequest(request) + assert(response.status == StatusCodes.BadRequest) + } + + "create a resource of type ArchiveRepresentation with a Zip file" in { + // Upload the file to Sipi. + val sipiUploadResponse: SipiUploadResponse = uploadToSipi( + loginToken = loginToken, + filesToUpload = Seq(FileToUpload(path = pathToMinimalZip, mimeType = MediaTypes.`application/zip`)) + ) + + val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head + uploadedFile.originalFilename should ===(minimalZipOriginalFilename) + + // Create the resource in the API. + + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.ArchiveFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -1081,15 +1022,16 @@ class KnoraSipiIntegrationV2ITSpec // Get the resource from Knora. val knoraGetRequest = Get(s"$baseApiUrl/v2/resources/${URLEncoder.encode(zipResourceIri.get, "UTF-8")}") val resource: JsonLDDocument = getResponseJsonLD(knoraGetRequest) - assert( - resource.requireTypeAsKnoraTypeIri.toString == "http://0.0.0.0:3333/ontology/0001/anything/v2#ThingDocument" + + resource.requireTypeAsKnoraTypeIri.toString should equal( + OntologyConstants.KnoraApiV2Complex.ArchiveRepresentation ) // Get the new file value from the resource. val savedValues: JsonLDArray = getValuesFromResource( resource = resource, - propertyIriInResult = OntologyConstants.KnoraApiV2Complex.HasDocumentFileValue.toSmartIri + propertyIriInResult = OntologyConstants.KnoraApiV2Complex.HasArchiveFileValue.toSmartIri ) val savedValue: JsonLDValue = if (savedValues.value.size == 1) { @@ -1124,25 +1066,16 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(testZipOriginalFilename) - // Ask Knora to update the value. + // Update the value. - val jsonLdEntity = - s"""{ - | "@id" : "${zipResourceIri.get}", - | "@type" : "anything:ThingDocument", - | "knora-api:hasDocumentFileValue" : { - | "@id" : "${zipValueIri.get}", - | "@type" : "knora-api:DocumentFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#", - | "anything" : "http://0.0.0.0:3333/ontology/0001/anything/v2#" - | } - |}""".stripMargin + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.ArchiveFile, + resourceIri = zipResourceIri.get, + valueIri = zipValueIri.get, + internalFilename = uploadedFile.internalFilename + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( @@ -1158,7 +1091,7 @@ class KnoraSipiIntegrationV2ITSpec // Get the new file value from the resource. val savedValue: JsonLDObject = getValueFromResource( resource = resource, - propertyIriInResult = OntologyConstants.KnoraApiV2Complex.HasDocumentFileValue.toSmartIri, + propertyIriInResult = OntologyConstants.KnoraApiV2Complex.HasArchiveFileValue.toSmartIri, expectedValueIri = zipValueIri.get ) @@ -1181,26 +1114,10 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(minimalWavOriginalFilename) - // Ask Knora to create the resource. - - val jsonLdEntity = - s"""{ - | "@type" : "knora-api:AudioRepresentation", - | "knora-api:hasAudioFileValue" : { - | "@type" : "knora-api:AudioFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "test audio representation", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + // Create the resource in the API. + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.AudioFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -1255,24 +1172,16 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(testWavOriginalFilename) - // Ask Knora to update the value. + // Update the value. - val jsonLdEntity = - s"""{ - | "@id" : "${wavResourceIri.get}", - | "@type" : "knora-api:AudioRepresentation", - | "knora-api:hasAudioFileValue" : { - | "@type" : "knora-api:AudioFileValue", - | "@id" : "${wavValueIri.get}", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.AudioFile, + resourceIri = wavResourceIri.get, + internalFilename = uploadedFile.internalFilename, + valueIri = wavValueIri.get + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( @@ -1311,26 +1220,10 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(testVideoOriginalFilename) - // Ask Knora to create the resource. - - val jsonLdEntity = - s"""{ - | "@type" : "knora-api:MovingImageRepresentation", - | "knora-api:hasMovingImageFileValue" : { - | "@type" : "knora-api:MovingImageFileValue", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "knora-api:attachedToProject" : { - | "@id" : "http://rdfh.ch/projects/0001" - | }, - | "rdfs:label" : "test video representation", - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + // Create the resource in the API. + val jsonLdEntity = UploadFileRequest + .make(fileType = FileType.MovingImageFile, internalFilename = uploadedFile.internalFilename) + .toJsonLd val request = Post( s"$baseApiUrl/v2/resources", @@ -1384,24 +1277,16 @@ class KnoraSipiIntegrationV2ITSpec val uploadedFile: SipiUploadResponseEntry = sipiUploadResponse.uploadedFiles.head uploadedFile.originalFilename should ===(testVideo2OriginalFilename) - // Ask Knora to update the value. + // Update the value. - val jsonLdEntity = - s"""{ - | "@id" : "${videoResourceIri.get}", - | "@type" : "knora-api:MovingImageRepresentation", - | "knora-api:hasMovingImageFileValue" : { - | "@type" : "knora-api:MovingImageFileValue", - | "@id" : "${videoValueIri.get}", - | "knora-api:fileValueHasFilename" : "${uploadedFile.internalFilename}" - | }, - | "@context" : { - | "rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - | "knora-api" : "http://api.knora.org/ontology/knora-api/v2#", - | "rdfs" : "http://www.w3.org/2000/01/rdf-schema#", - | "xsd" : "http://www.w3.org/2001/XMLSchema#" - | } - |}""".stripMargin + val jsonLdEntity = ChangeFileRequest + .make( + fileType = FileType.MovingImageFile, + resourceIri = videoResourceIri.get, + internalFilename = uploadedFile.internalFilename, + valueIri = videoValueIri.get + ) + .toJsonLd val request = Put(s"$baseApiUrl/v2/values", HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLdEntity)) ~> addCredentials( diff --git a/webapi/src/test/scala/org/knora/webapi/models/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/models/BUILD.bazel new file mode 100644 index 0000000000..3e469bb4d6 --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/models/BUILD.bazel @@ -0,0 +1,10 @@ +package(default_visibility = ["//visibility:public"]) +load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test") + +filegroup( + name = "srcs", + srcs = [ + "OntologyModels.scala", + "//webapi/src/test/scala/org/knora/webapi/models/filemodels:srcs", + ], +) diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyModels.scala b/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala similarity index 96% rename from webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyModels.scala rename to webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala index 74a85d0eba..331ca59af2 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v2/OntologyModels.scala +++ b/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.knora.webapi.e2e.v2 +package org.knora.webapi.models import org.knora.webapi.sharedtestdata.SharedOntologyTestDataADM @@ -21,8 +21,7 @@ object CreateClassRequest { label: LangString, comment: LangString ): CreateClassRequest = { - val LocalHost_Ontology = "http://0.0.0.0:3333/ontology" - val ontologyId = LocalHost_Ontology + s"/0001/$ontologyName/v2" + val ontologyId = s"http://0.0.0.0:3333/ontology/0001/$ontologyName/v2" val value = s"""{ | "@id" : "$ontologyId", @@ -187,8 +186,7 @@ object AddCardinalitiesRequest { className: String, restrictions: List[Restriction] ): AddCardinalitiesRequest = { - val LocalHost_Ontology = "http://0.0.0.0:3333/ontology" - val ontologyId = LocalHost_Ontology + s"/0001/$ontologyName/v2" + val ontologyId = s"http://0.0.0.0:3333/ontology/0001/$ontologyName/v2" val restrictionsString: String = stringifyRestrictions(restrictions) val value = s""" |{ diff --git a/webapi/src/test/scala/org/knora/webapi/models/filemodels/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/models/filemodels/BUILD.bazel new file mode 100644 index 0000000000..90c3c84aee --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/models/filemodels/BUILD.bazel @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) +load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test") +load("//third_party:dependencies.bzl", "ALL_WEBAPI_MAIN_DEPENDENCIES", "BASE_TEST_DEPENDENCIES", "BASE_TEST_DEPENDENCIES_WITH_JSON", "BASE_TEST_DEPENDENCIES_WITH_JSON_LD") + +filegroup( + name = "srcs", + srcs = [ + "FileModels.scala", + "FileModelUtil.scala" + ], +) + +scala_test( + name = "FileModelsSpec", + size = "small", + srcs = [ + "FileModelsSpec.scala", + ], + data = [], + jvm_flags = ["-Dconfig.resource=fuseki.conf"], + # unused_dependency_checker_mode = "warn", + deps = ALL_WEBAPI_MAIN_DEPENDENCIES + [ + "//webapi:test_library", + "//webapi:main_library", + ] + BASE_TEST_DEPENDENCIES_WITH_JSON, +) diff --git a/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelUtil.scala b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelUtil.scala new file mode 100644 index 0000000000..d28ebfafc9 --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelUtil.scala @@ -0,0 +1,103 @@ +/* + * Copyright © 2021 Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.knora.webapi.models.filemodels + +import org.knora.webapi.messages.{OntologyConstants, SmartIri, StringFormatter} +import org.knora.webapi.messages.IriConversions._ + +object FileModelUtil { + private implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + + def getFileRepresentationClassIri(fileType: FileType): SmartIri = fileType match { + case FileType.DocumentFile => OntologyConstants.KnoraApiV2Complex.DocumentRepresentation.toSmartIri + case FileType.StillImageFile => OntologyConstants.KnoraApiV2Complex.StillImageRepresentation.toSmartIri + case FileType.MovingImageFile => OntologyConstants.KnoraApiV2Complex.MovingImageRepresentation.toSmartIri + case FileType.TextFile => OntologyConstants.KnoraApiV2Complex.TextRepresentation.toSmartIri + case FileType.AudioFile => OntologyConstants.KnoraApiV2Complex.AudioRepresentation.toSmartIri + case FileType.ArchiveFile => OntologyConstants.KnoraApiV2Complex.ArchiveRepresentation.toSmartIri + } + + def getFileRepresentationPropertyIri(fileType: FileType): SmartIri = fileType match { + case FileType.DocumentFile => OntologyConstants.KnoraApiV2Complex.HasDocumentFileValue.toSmartIri + case FileType.StillImageFile => OntologyConstants.KnoraApiV2Complex.HasStillImageFileValue.toSmartIri + case FileType.MovingImageFile => OntologyConstants.KnoraApiV2Complex.HasMovingImageFileValue.toSmartIri + case FileType.TextFile => OntologyConstants.KnoraApiV2Complex.HasTextFileValue.toSmartIri + case FileType.AudioFile => OntologyConstants.KnoraApiV2Complex.HasAudioFileValue.toSmartIri + case FileType.ArchiveFile => OntologyConstants.KnoraApiV2Complex.HasArchiveFileValue.toSmartIri + } + + def getFileValuePropertyName(fileType: FileType): String = fileType match { + case FileType.DocumentFile => "knora-api:hasDocumentFileValue" + case FileType.StillImageFile => "knora-api:hasStillImageFileValue" + case FileType.MovingImageFile => "knora-api:hasMovingImageFileValue" + case FileType.TextFile => "knora-api:hasTextFileValue" + case FileType.AudioFile => "knora-api:hasAudioFileValue" + case FileType.ArchiveFile => "knora-api:hasArchiveFileValue" + } + + def getDefaultClassName(fileType: FileType): String = fileType match { + case FileType.DocumentFile => "DocumentRepresentation" + case FileType.StillImageFile => "StillImageRepresentation" + case FileType.MovingImageFile => "MovingImageRepresentation" + case FileType.TextFile => "TextRepresentation" + case FileType.AudioFile => "AudioRepresentation" + case FileType.ArchiveFile => "ArchiveRepresentation" + } + + def getFileValueType(fileType: FileType): String = fileType match { + case FileType.DocumentFile => "knora-api:DocumentFileValue" + case FileType.StillImageFile => "knora-api:StillImageFileValue" + case FileType.MovingImageFile => "knora-api:MovingImageFileValue" + case FileType.TextFile => "knora-api:TextFileValue" + case FileType.AudioFile => "knora-api:AudioFileValue" + case FileType.ArchiveFile => "knora-api:ArchiveFileValue" + } + + def getJsonLdContext(ontology: String): String = { + val ontologies = ontology match { + case "anything" => + FileModelConstants.defaultJsonLdContextMap + ("anything" -> "http://0.0.0.0:3333/ontology/0001/anything/v2#") + case _ => FileModelConstants.defaultJsonLdContextMap + } + val lines = ontologies.toList + .map(x => s""" "${x._1}": "${x._2}\"""") + .reduce({ (a, b) => a + ",\n" + b }) + s"""|"@context" : { + |$lines + | } + |""".stripMargin + } +} + +/** + * Constants for use in FileModels. + */ +object FileModelConstants { + val documentRepresentation = "DocumentRepresentation" + val textRepresentation = "TextRepresentation" + val stillImageRepresentation = "StillImageRepresentation" + val movingImageRepresentation = "MovingImageRepresentation" + val audioRepresentation = "AudioRepresentation" + val archiveRepresentation = "ArchiveRepresentation" + val knoraApiPrefix = "knora-api" + val anythingShortcode = "0001" + val defaultJsonLdContextMap = Map( + "rdf" -> "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "knora-api" -> "http://api.knora.org/ontology/knora-api/v2#", + "rdfs" -> "http://www.w3.org/2000/01/rdf-schema#", + "xsd" -> "http://www.w3.org/2001/XMLSchema#" + ) +} + +sealed trait FileType +object FileType { + case object DocumentFile extends FileType + case object StillImageFile extends FileType + case object MovingImageFile extends FileType + case object TextFile extends FileType + case object AudioFile extends FileType + case object ArchiveFile extends FileType +} diff --git a/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModels.scala b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModels.scala new file mode 100644 index 0000000000..7a47ff8066 --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModels.scala @@ -0,0 +1,374 @@ +/* + * Copyright © 2021 Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.knora.webapi.models.filemodels + +import org.knora.webapi.ApiV2Complex +import org.knora.webapi.messages.IriConversions._ +import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectADM +import org.knora.webapi.messages.v2.responder.resourcemessages.{CreateResourceV2, CreateValueInNewResourceV2} +import org.knora.webapi.messages.v2.responder.valuemessages.{ + ArchiveFileValueContentV2, + AudioFileValueContentV2, + DocumentFileValueContentV2, + FileValueV2, + MovingImageFileValueContentV2, + StillImageFileValueContentV2, + TextFileValueContentV2 +} +import org.knora.webapi.messages.{SmartIri, StringFormatter} +import org.knora.webapi.sharedtestdata.SharedTestDataADM + +import java.time.Instant +import java.util.UUID + +sealed abstract case class UploadFileRequest private ( + fileType: FileType, + internalFilename: String, + className: String, + ontologyName: String, + shortcode: String, + resourceIri: String, + dimX: Option[Int], + dimY: Option[Int], + pageCount: Option[Int], + comment: Option[String], + internalMimeType: Option[String], + originalFilename: Option[String], + originalMimeType: Option[String], + customValueIri: Option[SmartIri], + customValueUUID: Option[UUID], + customValueCreationDate: Option[Instant], + valuePermissions: Option[String], + label: String, + resourcePermissions: Option[String], + project: ProjectADM +) { + + /** + * Create a JSON-LD serialization of the request. This can be used for e2e and integration tests. + * + * @return JSON-LD serialization of the request. + */ + def toJsonLd: String = { + val fileValuePropertyName = FileModelUtil.getFileValuePropertyName(fileType) + val fileValueType = FileModelUtil.getFileValueType(fileType) + val context = FileModelUtil.getJsonLdContext(ontologyName) + + s"""{ + | "@type" : "$ontologyName:$className", + | "$fileValuePropertyName" : { + | "@type" : "$fileValueType", + | "knora-api:fileValueHasFilename" : "$internalFilename" + | }, + | "knora-api:attachedToProject" : { + | "@id" : "http://rdfh.ch/projects/$shortcode" + | }, + | "rdfs:label" : "test label", + | $context}""".stripMargin + } + + def toMessage: CreateResourceV2 = { + implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + + val resourceClassIri: SmartIri = FileModelUtil.getFileRepresentationClassIri(fileType) + val fileValuePropertyIri: SmartIri = FileModelUtil.getFileRepresentationPropertyIri(fileType) + val valueContent = fileType match { + case FileType.DocumentFile => + DocumentFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = internalMimeType match { + case Some(v) => v + case None => "application/pdf" + }, + originalFilename = originalFilename, + originalMimeType = Some("application/pdf") + ), + pageCount = pageCount, + dimX = dimX, + dimY = dimY, + comment = comment + ) + case FileType.StillImageFile => + StillImageFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = "image/jp2", + originalFilename = originalFilename, + originalMimeType = originalMimeType + ), + dimX = dimX.get, + dimY = dimY.get, + comment = comment + ) + case FileType.MovingImageFile => + MovingImageFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = internalMimeType.get, + originalFilename = originalFilename, + originalMimeType = internalMimeType + ), + dimX = dimX.get, + dimY = dimY.get + ) + case FileType.TextFile => + TextFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = internalMimeType.get, + originalFilename = originalFilename, + originalMimeType = internalMimeType + ) + ) + case FileType.AudioFile => + AudioFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = internalMimeType.get, + originalFilename = originalFilename, + originalMimeType = internalMimeType + ) + ) + case FileType.ArchiveFile => + ArchiveFileValueContentV2( + ontologySchema = ApiV2Complex, + fileValue = FileValueV2( + internalFilename = internalFilename, + internalMimeType = internalMimeType match { + case Some(v) => v + case None => "application/zip" + }, + originalFilename = originalFilename, + originalMimeType = internalMimeType + ), + comment = comment + ) + } + + val values = List( + CreateValueInNewResourceV2( + valueContent = valueContent, + customValueIri = customValueIri, + customValueUUID = customValueUUID, + customValueCreationDate = customValueCreationDate, + permissions = valuePermissions + ) + ) + val inputValues: Map[SmartIri, Seq[CreateValueInNewResourceV2]] = Map(fileValuePropertyIri -> values) + + CreateResourceV2( + resourceIri = Some(resourceIri.toSmartIri), + resourceClassIri = resourceClassIri, + label = label, + values = inputValues, + projectADM = project, + permissions = resourcePermissions + ) + } +} + +/** + * Helper object for creating a request to upload a file. + * + * Can be instantiated by calling `UploadFileRequest.make()`. + * + * To generate a JSON-LD request, call `.toJsonLd`. + * + * To generate a [[CreateResourceV2]] message, call `.toMessage` + */ +object UploadFileRequest { + implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + + /** + * Smart constructor for instantiating a [[UploadFileRequest]]. + * + * @param fileType the [[FileType]] of the resource. + * @param internalFilename the internal file name assigned by SIPI. + * @param className the class name of the resource. Optional. + * @param ontologyName the name of the ontology to be prefixed to the class name. Defaults to `"knora-api"` + * @param shortcode the shortcode of the project to which the resource should be added. Defaults to `"0001"` + * @param resourceIri the custom IRI of the resource. Optional. Defaults to None. If None, a random IRI is generated + * @param dimX the width of the file, if applicable. Optional. Defaults to None. + * If None, the file type specific default is used. + * @param dimY the height of the file, if applicable. Optional. Defaults to None. + * If None, the file type specific default is used. + * @param pageCount the page count of the file, if applicable. Optional. Defaults to None. + * If None, the file type specific default is used. + * @param comment comment. Optional. + * @param internalMimeType internal mime type as determined by SIPI. Optional. + * @param originalMimeType original mime type previous to uploading to SIPI. Optional. + * @param originalFilename original filename previous to uploading to SIPI. Optional. + * @param customValueIri custom IRI for the value. Optional. Defaults to None. + * If None, an IRI will be generated. + * @param customValueUUID custom UUID for the value. Optional. Defaults to None. + * If None, a UUID will be generated. + * @param customValueCreationDate custom creation date for the value. Optional. Defaults to None. + * If None, the current instant will be used. + * @param valuePermissions custom permissions for the value. Optional. Defaults to None. + * If `None`, the default permissions will be used. + * @param label the resource label + * @param resourcePermissions permissions for the resource. Optional. If none, the default permissions are used. + * @param project the project to which the resource belongs. Optional. Defaults to None. + * If None, [[SharedTestDataADM.anythingProject]] is used. + * @return returns a [[UploadFileRequest]] object storing all information needed to generate a Message + * or JSON-LD serialization that can be used to generate the respective resource in the API. + */ + + def make( + fileType: FileType, + internalFilename: String, + className: Option[String] = None, + ontologyName: String = "knora-api", + shortcode: String = "0001", + resourceIri: Option[String] = None, + dimX: Option[Int] = None, + dimY: Option[Int] = None, + pageCount: Option[Int] = None, + comment: Option[String] = None, + internalMimeType: Option[String] = None, + originalFilename: Option[String] = None, + originalMimeType: Option[String] = None, + customValueIri: Option[SmartIri] = None, + customValueUUID: Option[UUID] = None, + customValueCreationDate: Option[Instant] = None, + valuePermissions: Option[String] = None, + label: String = "test label", + resourcePermissions: Option[String] = None, + project: Option[ProjectADM] = None + ): UploadFileRequest = { + val classNameWithDefaults = className match { + case Some(v) => v + case None => FileModelUtil.getDefaultClassName(fileType) + } + val iri = resourceIri match { + case Some(value) => value + case None => stringFormatter.makeRandomResourceIri(shortcode) + } + val (dimXWithDefaults, dimYWithDefaults) = fileType match { + case FileType.DocumentFile | FileType.StillImageFile | FileType.MovingImageFile => + (dimX, dimY) match { + case (Some(x), Some(y)) => (Some(x), Some(y)) + case _ => (Some(100), Some(100)) + } + case FileType.TextFile | FileType.AudioFile | FileType.ArchiveFile => (None, None) + } + val pageCountWithDefaults = fileType match { + case FileType.DocumentFile => + pageCount match { + case Some(value) => Some(value) + case None => Some(1) + } + case _ => None + } + new UploadFileRequest( + fileType = fileType, + internalFilename = internalFilename, + className = classNameWithDefaults, + ontologyName = ontologyName, + shortcode = shortcode, + resourceIri = iri, + dimX = dimXWithDefaults, + dimY = dimYWithDefaults, + pageCount = pageCountWithDefaults, + comment = comment, + internalMimeType = internalMimeType, + originalFilename = originalFilename, + originalMimeType = originalMimeType, + customValueIri = customValueIri, + customValueUUID = customValueUUID, + customValueCreationDate = customValueCreationDate, + valuePermissions = valuePermissions, + label = label, + resourcePermissions = resourcePermissions, + project = project match { + case Some(p) => p + case None => SharedTestDataADM.anythingProject + } + ) {} + } +} + +sealed abstract case class ChangeFileRequest private ( + fileType: FileType, + internalFilename: String, + resourceIRI: String, + valueIRI: String, + className: String, + ontologyName: String +) { + + /** + * Create a JSON-LD serialization of the request. This can be used for e2e and integration tests. + * + * @return JSON-LD serialization of the request. + */ + def toJsonLd: String = { + val fileValuePropertyName = FileModelUtil.getFileValuePropertyName(fileType) + val fileValueType = FileModelUtil.getFileValueType(fileType) + val context = FileModelUtil.getJsonLdContext(ontologyName) + + s"""{ + | "@id" : "$resourceIRI", + | "@type" : "$ontologyName:$className", + | "$fileValuePropertyName" : { + | "@id" : "$valueIRI", + | "@type" : "$fileValueType", + | "knora-api:fileValueHasFilename" : "$internalFilename" + | }, + | $context + |}""".stripMargin + } +} + +/** + * Helper object for creating a request to change a file representation. + * + * Can be instantiated by calling `ChangeFileRequest.make()`. + * + * To generate a JSON-LD request, call `.toJsonLd`. + */ +object ChangeFileRequest { + + /** + * Smart constructor for instantiating a [[ChangeFileRequest]]. + * + * @param fileType the [[FileType]] of the resource. + * @param internalFilename the internal file name assigned by SIPI. + * @param resourceIri the IRI of the resource where a property is to change. + * @param valueIri the IRI of the value property to change. + * @param className the class name of the resource. Optional. + * @param ontologyName the name of the ontology to be prefixed to the class name. Defaults to `"knora-api"` + * @return returns a [[ChangeFileRequest]] object storing all information needed to generate a Message + * or JSON-LD serialization that can be used to change the respective resource in the API. + */ + def make( + fileType: FileType, + internalFilename: String, + resourceIri: String, + valueIri: String, + className: Option[String] = None, + ontologyName: String = "knora-api" + ): ChangeFileRequest = { + val classNameWithDefaults = className match { + case Some(v) => v + case None => FileModelUtil.getDefaultClassName(fileType) + } + new ChangeFileRequest( + fileType = fileType, + internalFilename = internalFilename, + resourceIRI = resourceIri, + valueIRI = valueIri, + className = classNameWithDefaults, + ontologyName = ontologyName + ) {} + } +} diff --git a/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelsSpec.scala b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelsSpec.scala new file mode 100644 index 0000000000..90ded1bed1 --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/models/filemodels/FileModelsSpec.scala @@ -0,0 +1,171 @@ +package org.knora.webapi.models.filemodels + +import org.knora.webapi.CoreSpec +import org.knora.webapi.messages.StringFormatter +import org.knora.webapi.sharedtestdata.SharedTestDataADM +import org.knora.webapi.messages.IriConversions._ + +import java.time.Instant +import java.util.UUID + +class FileModelsSpec extends CoreSpec { + implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance + + "FileModelsUtil," when { + + "creating a JSON-LD context," should { + + "handle `anything` ontology correctly" in { + val expectedContext = """"@context" : { + | "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + | "knora-api": "http://api.knora.org/ontology/knora-api/v2#", + | "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + | "xsd": "http://www.w3.org/2001/XMLSchema#", + | "anything": "http://0.0.0.0:3333/ontology/0001/anything/v2#" + | } + |""".stripMargin + + val context = FileModelUtil.getJsonLdContext("anything") + context should equal(expectedContext) + } + + "handle non-specified ontology correctly" in { + val expectedContext = """"@context" : { + | "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + | "knora-api": "http://api.knora.org/ontology/knora-api/v2#", + | "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + | "xsd": "http://www.w3.org/2001/XMLSchema#" + | } + |""".stripMargin + + val context = FileModelUtil.getJsonLdContext("knora-api") + context should equal(expectedContext) + } + } + } + "FileModels," when { + "creating an UploadFileRequest," should { + "create a valid representation of a DocumentRepresentation with default values" in { + val internalFilename = "document-file.pdf" + val documentRepresentation = UploadFileRequest.make( + fileType = FileType.DocumentFile, + internalFilename = internalFilename + ) + documentRepresentation.fileType should equal(FileType.DocumentFile) + documentRepresentation.internalFilename should equal(internalFilename) + documentRepresentation.internalMimeType should equal(None) + documentRepresentation.dimX should equal(Some(100)) + documentRepresentation.dimY should equal(Some(100)) + documentRepresentation.resourcePermissions should equal(None) + documentRepresentation.customValueUUID should equal(None) + documentRepresentation.project should equal(SharedTestDataADM.anythingProject) + documentRepresentation.customValueIri should equal(None) + documentRepresentation.className should equal(FileModelUtil.getDefaultClassName(FileType.DocumentFile)) + documentRepresentation.comment should equal(None) + documentRepresentation.customValueCreationDate should equal(None) + documentRepresentation.label should equal("test label") + documentRepresentation.ontologyName should equal("knora-api") + documentRepresentation.originalFilename should equal(None) + documentRepresentation.originalMimeType should equal(None) + documentRepresentation.pageCount should equal(Some(1)) + documentRepresentation.resourceIri should not equal (None) + documentRepresentation.shortcode should equal("0001") + documentRepresentation.valuePermissions should equal(None) + } + + "create a valid representation of a DocumentRepresentation with custom values" in { + val internalFilename = "document-file.doc" + val project = SharedTestDataADM.beolProject + val resourceIri = stringFormatter.makeRandomResourceIri(project.shortcode) + val comment = Some("This is a custom comment") + val className = Some("biblio:ThingDocument") + val ontologyName = "biblio" + val dimX = Some(20) + val dimY = Some(30) + val pageCount = Some(550) + val internalMimetype = Some("application/msword") + val originalFilename = Some("document-file.docm") + val originalMimetype = Some("application/vnd.ms-word.document.macroEnabled.12") + val customValueIri = Some("http://www.knora.org/ontology/0801/biblio#hasThingDocumentValue".toSmartIri) + val customValueUUID = Some(UUID.randomUUID()) + val customValueCreationDate = Some(Instant.now()) + val valuePermissions = Some("V knora-admin:UnknownUser,knora-admin:KnownUser|M knora-admin:ProjectMember") + val label = "a custom label" + val resourcePermissions = Some("V knora-admin:UnknownUser|M knora-admin:ProjectMember,knora-admin:KnownUser") + + val documentRepresentation = UploadFileRequest.make( + fileType = FileType.DocumentFile, + internalFilename = internalFilename, + resourceIri = Some(resourceIri), + comment = comment, + className = className, + ontologyName = ontologyName, + shortcode = project.shortcode, + dimX = dimX, + dimY = dimY, + pageCount = pageCount, + internalMimeType = internalMimetype, + originalFilename = originalFilename, + originalMimeType = originalMimetype, + customValueIri = customValueIri, + customValueUUID = customValueUUID, + customValueCreationDate = customValueCreationDate, + valuePermissions = valuePermissions, + label = label, + resourcePermissions = resourcePermissions, + project = Some(project) + ) + documentRepresentation.fileType should equal(FileType.DocumentFile) + documentRepresentation.internalFilename should equal(internalFilename) + documentRepresentation.internalMimeType should equal(internalMimetype) + documentRepresentation.dimX should equal(dimX) + documentRepresentation.dimY should equal(dimY) + documentRepresentation.resourcePermissions should equal(resourcePermissions) + documentRepresentation.customValueUUID should equal(customValueUUID) + documentRepresentation.project should equal(project) + documentRepresentation.customValueIri should equal(customValueIri) + documentRepresentation.className should equal(className.get) + documentRepresentation.comment should equal(comment) + documentRepresentation.customValueCreationDate should equal(customValueCreationDate) + documentRepresentation.label should equal(label) + documentRepresentation.ontologyName should equal(ontologyName) + documentRepresentation.originalFilename should equal(originalFilename) + documentRepresentation.originalMimeType should equal(originalMimetype) + documentRepresentation.pageCount should equal(pageCount) + documentRepresentation.resourceIri should equal(resourceIri) + documentRepresentation.shortcode should equal(project.shortcode) + documentRepresentation.valuePermissions should equal(valuePermissions) + } + } + + "generating a JSON-LD representation of a UploadFileRequest," should { + "correctly serialize a DocumentRepresentation with default values" in { + val internalFilename = "document-file.pdf" + val documentRepresentation = UploadFileRequest.make( + fileType = FileType.DocumentFile, + internalFilename = internalFilename + ) + val json = documentRepresentation.toJsonLd + val expectedJson = """{ + | "@type" : "knora-api:DocumentRepresentation", + | "knora-api:hasDocumentFileValue" : { + | "@type" : "knora-api:DocumentFileValue", + | "knora-api:fileValueHasFilename" : "document-file.pdf" + | }, + | "knora-api:attachedToProject" : { + | "@id" : "http://rdfh.ch/projects/0001" + | }, + | "rdfs:label" : "test label", + | "@context" : { + | "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + | "knora-api": "http://api.knora.org/ontology/knora-api/v2#", + | "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + | "xsd": "http://www.w3.org/2001/XMLSchema#" + | } + |}""".stripMargin + json should equal(expectedJson) + } + + } + } +} diff --git a/webapi/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala b/webapi/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala index f665f1d825..1f2379edad 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala +++ b/webapi/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala @@ -8,7 +8,6 @@ package org.knora.webapi.responders.v2 import java.time.Instant import java.time.temporal.ChronoUnit import java.util.UUID - import akka.actor.{ActorRef, Props} import akka.testkit.ImplicitSender import org.knora.webapi._ @@ -29,6 +28,7 @@ import org.knora.webapi.messages.v2.responder.resourcemessages._ import org.knora.webapi.messages.v2.responder.standoffmessages._ import org.knora.webapi.messages.v2.responder.valuemessages._ import org.knora.webapi.messages.{OntologyConstants, SmartIri, StringFormatter} +import org.knora.webapi.models.filemodels._ import org.knora.webapi.responders.v2.ResourcesResponseCheckerV2.compareReadResourcesSequenceV2Response import org.knora.webapi.settings.{KnoraDispatchers, _} import org.knora.webapi.sharedtestdata.SharedTestDataADM @@ -1161,31 +1161,53 @@ class ResourcesResponderV2Spec extends CoreSpec() with ImplicitSender { val resourceIri: IRI = stringFormatter.makeRandomResourceIri(SharedTestDataADM.anythingProject.shortcode) - val inputValues: Map[SmartIri, Seq[CreateValueInNewResourceV2]] = Map( - OntologyConstants.KnoraApiV2Complex.HasStillImageFileValue.toSmartIri -> Seq( - CreateValueInNewResourceV2( - valueContent = StillImageFileValueContentV2( - ontologySchema = ApiV2Complex, - fileValue = FileValueV2( - internalFilename = "IQUO3t1AABm-FSLC0vNvVpr.jp2", - internalMimeType = "image/jp2", - originalFilename = Some("test.tiff"), - originalMimeType = Some("image/tiff") - ), - dimX = 512, - dimY = 256 - ) - ) + val inputResource = UploadFileRequest + .make( + fileType = FileType.StillImageFile, + internalFilename = "IQUO3t1AABm-FSLC0vNvVpr.jp2", + className = Some("ThingPicture"), + ontologyName = "anything", + resourceIri = Some(resourceIri), + dimX = Some(512), + dimY = Some(256) ) + .toMessage + + responderManager ! CreateResourceRequestV2( + createResource = inputResource, + featureFactoryConfig = defaultFeatureFactoryConfig, + requestingUser = anythingUserProfile, + apiRequestID = UUID.randomUUID ) - val inputResource = CreateResourceV2( - resourceIri = Some(resourceIri.toSmartIri), - resourceClassIri = "http://0.0.0.0:3333/ontology/0001/anything/v2#ThingPicture".toSmartIri, - label = "test thing picture", - values = inputValues, - projectADM = SharedTestDataADM.anythingProject + expectMsgType[ReadResourcesSequenceV2](timeout) + + // Get the resource from the triplestore and check it. + + val outputResource = getResource(resourceIri, anythingUserProfile) + + checkCreateResource( + inputResourceIri = resourceIri, + inputResource = inputResource, + outputResource = outputResource, + defaultResourcePermissions = defaultAnythingResourcePermissions, + defaultValuePermissions = defaultStillImageFileValuePermissions, + requestingUser = anythingUserProfile ) + } + + "create a resource with document representation" in { + // Create the resource. + + val resourceIri: IRI = stringFormatter.makeRandomResourceIri(SharedTestDataADM.anythingProject.shortcode) + + val inputResource = UploadFileRequest + .make( + fileType = FileType.DocumentFile, + resourceIri = Some(resourceIri), + internalFilename = "IQUO3t1AABm-FSLC0vNvVpr.pdf" + ) + .toMessage responderManager ! CreateResourceRequestV2( createResource = inputResource, @@ -1210,6 +1232,43 @@ class ResourcesResponderV2Spec extends CoreSpec() with ImplicitSender { ) } + "create a resource with archive representation" in { + // Create the resource. + + val resourceIri: String = stringFormatter.makeRandomResourceIri(SharedTestDataADM.anythingProject.shortcode) + + val inputResource = UploadFileRequest + .make( + fileType = FileType.ArchiveFile, + resourceIri = Some(resourceIri), + internalFilename = "IQUO3t1AABm-FSLC0vNvVps.zip", + internalMimeType = Some("application/zip") + ) + .toMessage + + responderManager ! CreateResourceRequestV2( + createResource = inputResource, + featureFactoryConfig = defaultFeatureFactoryConfig, + requestingUser = anythingUserProfile, + apiRequestID = UUID.randomUUID + ) + + expectMsgType[ReadResourcesSequenceV2](timeout) + + // Get the resource from the triplestore and check it. + + val outputResource = getResource(resourceIri, anythingUserProfile) + + checkCreateResource( + inputResourceIri = resourceIri, + inputResource = inputResource, + outputResource = outputResource, + defaultResourcePermissions = defaultAnythingResourcePermissions, + defaultValuePermissions = defaultAnythingValuePermissions, + requestingUser = anythingUserProfile + ) + } + "not create a resource with missing required values" in { val resourceIri: IRI = stringFormatter.makeRandomResourceIri(SharedTestDataADM.incunabulaProject.shortcode)