diff --git a/build.sbt b/build.sbt index 7b7258dac5..6e7a6165b5 100644 --- a/build.sbt +++ b/build.sbt @@ -202,7 +202,7 @@ lazy val webapi: Project = Project(id = "webapi", base = file("webapi")) ), buildInfoPackage := "org.knora.webapi.http.version" ) - .dependsOn(shared) + .dependsOn(shared, schemaCore) lazy val webapiJavaRunOptions = Seq( // "-showversion", @@ -382,6 +382,24 @@ lazy val userCore = project ) .dependsOn(shared) +// schema projects + +lazy val schemaCore = project + .in(file("dsp-schema/core")) + .settings( + scalacOptions ++= Seq( + "-feature", + "-unchecked", + "-deprecation", + "-Yresolve-term-conflict:package", + "-Ymacro-annotations" + ), + name := "schemaCore", + libraryDependencies ++= Dependencies.schemaCoreLibraryDependencies, + testFrameworks := Seq(new TestFramework("zio.test.sbt.ZTestFramework")) + ) + .dependsOn(shared) + // Shared project lazy val shared = project diff --git a/docs/02-knora-ontologies/knora-base.md b/docs/02-knora-ontologies/knora-base.md index 0b9e67fa1a..2fb6104597 100644 --- a/docs/02-knora-ontologies/knora-base.md +++ b/docs/02-knora-ontologies/knora-base.md @@ -571,22 +571,39 @@ containing metadata about the link. We can visualise the result as the following 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`. -### Part-of (part-whole) relation between resources +### Part-Whole-Relations between Resources + +#### isPartOf + A special case of linked resources are _part-of related resources_, i.e. a resource consisting of several other resources. In order to create a part-of relation between two resources, the resource that is part of another resource needs to have a property that is a subproperty of `kb:isPartOf`. This property needs to point to the resource class it is part of via -its predicate `knora-api:objectType`. +its predicate `kb:objectType`. `kb:isPartOf` itself is a subproperty of `kb:hasLinkTo`. Same as described above for link properties, a corresponding part-of value property is created automatically. This value property has the same name as the part-of property with `Value` appended. For example, if in an ontology `data` a property `data:partOf` was defined, the corresponding value property would be named `data:partOfValue`. This newly created property `data:partOfValue` is defined as a subproperty of `kb:isPartOfValue`. -Part-of relations are recommended for resources of type `StillImageRepresentation`. In that case, the resource that is -part of another resource needs to have a property that is a subproperty of `knora-api:seqnum` with an integer as value. +Part-of relations are recommended for resources of type `kb:StillImageRepresentation`. In that case, the resource that is +part of another resource needs to have a property that is a subproperty of `kb:seqnum` with an integer as value. A client can then use this information to leaf through the parts of the compound resource (p.ex. to leaf through the pages of a book like in [this](https://docs.dasch.swiss/DSP-API/01-introduction/example-project/#resource-classes) example). +#### isSequenceOf + +Similar to `kb:isPartOf` for `kb:StillImageRepresentations`, part-whole-relations can be defined for resources that have a time +dimension by using `kb:isSequenceOf`. You can use it for video or audio resources that are subtypes of `kb:MovingImageRepresentation` +and `kb:AudioRepresentation`. + +`kb:isSequenceOf` is intended to be used in combination with the property `kb:hasSequenceBounds` which points to a `kb:IntervalValue`. +This defines the start and end point of the subseqence in relation to the entire audio/video resource as an [interval](#intervalvalue). +A dedicated frontend behaviour is planned, if these properties are used in combination. + +There is an important difference between `kb:isSequenceOf` and `kb:isPartOf`: For `kb:isPartOf`, each part *is a* `kb:StillImageRepresentation` and +the whole consists of multiple such parts. In `kb:isSequenceOf` on the other hand, the whole is one `kb:MovingImageRepresentation` or `kb:AudioRepresentation`. +The parts only define which sub-sequence of this representation they are. + ### Text with Standoff Markup DSP-API is designed to be able to store text with markup, which can indicate formatting and structure, as well as the diff --git a/dsp-schema/core/src/main/scala/dsp/schema/domain/SchemaCommands.scala b/dsp-schema/core/src/main/scala/dsp/schema/domain/SchemaCommands.scala new file mode 100644 index 0000000000..1354c2910d --- /dev/null +++ b/dsp-schema/core/src/main/scala/dsp/schema/domain/SchemaCommands.scala @@ -0,0 +1,59 @@ +package dsp.schema.domain + +import dsp.errors.ValidationException +import dsp.valueobjects.LangString +import dsp.valueobjects.Schema +import zio.prelude.Validation + +import java.time.Instant + +/** + * SmartIri placeholder value object. + * WARNING: don't use this in production code. First find a solution how we deal with SmartIri in the new codebase. + * + * // TODO: this is only a placeholder for SmartIri - eventually we need a proper solution for IRI value objects. + */ +case class SmartIri(value: String) + +/** + * Command/Value object representing a command to create a property on a schema/ontology. + * WARNING: This should not be used in production code before the SmartIri value object is propertly implemented. + */ +sealed abstract case class CreatePropertyCommand private ( + ontologyIri: SmartIri, + lastModificationDate: Instant, + propertyIri: SmartIri, + subjectType: Option[SmartIri], + objectType: SmartIri, // must be `kb:Value`, unless it's a link property, then it should be a `kb:Resource` + label: LangString, + comment: Option[LangString], + superProperties: List[SmartIri], + guiObject: Schema.GuiObject +) + +object CreatePropertyCommand { + def make( + ontologyIri: SmartIri, // TODO: should eventally be schemaId value object, etc. + lastModificationDate: Instant, + propertyIri: SmartIri, + subjectType: Option[SmartIri], + objectType: SmartIri, + label: LangString, + comment: Option[LangString], + superProperties: List[SmartIri], + guiObject: Schema.GuiObject + ): Validation[ValidationException, CreatePropertyCommand] = + Validation.succeed( + new CreatePropertyCommand( + ontologyIri = ontologyIri, + lastModificationDate = lastModificationDate, + propertyIri = propertyIri, + subjectType = subjectType, + objectType = objectType, + label = label, + comment = comment, + superProperties = superProperties, + guiObject = guiObject + ) {} + ) +} diff --git a/dsp-schema/core/src/test/scala/dsp/schema/domain/SchemaCommandsSpec.scala b/dsp-schema/core/src/test/scala/dsp/schema/domain/SchemaCommandsSpec.scala new file mode 100644 index 0000000000..677f0acd32 --- /dev/null +++ b/dsp-schema/core/src/test/scala/dsp/schema/domain/SchemaCommandsSpec.scala @@ -0,0 +1,51 @@ +package dsp.schema.domain + +import dsp.constants.SalsahGui +import dsp.valueobjects.LangString +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.Schema +import zio._ +import zio.prelude.Validation +import zio.test.Assertion._ +import zio.test._ + +import java.time.Instant + +/** + * This spec is used to test [[dsp.schema.domain.SchemaCommands]]. + */ +object SchemaCommandsSpec extends ZIOSpecDefault { + + def spec = (createPropertyCommandTest) + + private val createPropertyCommandTest = suite("CreatePropertyCommand")( + test("create a createPropertyCommand") { + val ontologyIri = SmartIri("Ontology IRI") + val lastModificationDate = Instant.now() + val propertyIri = SmartIri("") + val subjectType = None + val objectType = SmartIri("Object Type") + val superProperties = List(SmartIri("Super Property IRI")) + (for { + label <- LangString.make(LanguageCode.en, "some label") + commentLangString <- LangString.make(LanguageCode.en, "some comment") + comment = Some(commentLangString) + guiAttribute <- Schema.GuiAttribute.make("hlist=") + guiElement <- Schema.GuiElement.make(SalsahGui.List) + guiObject <- Schema.GuiObject.make(guiAttributes = List(guiAttribute), guiElement = Some(guiElement)) + command = CreatePropertyCommand.make( + ontologyIri = ontologyIri, + lastModificationDate = lastModificationDate, + propertyIri = propertyIri, + subjectType = subjectType, + objectType = objectType, + label = label, + comment = comment, + superProperties = superProperties, + guiObject = guiObject + ) + } yield assert(command.toEither)(isRight)).toZIO + } + ) + +} diff --git a/dsp-shared/src/main/scala/dsp/valueobjects/LangString.scala b/dsp-shared/src/main/scala/dsp/valueobjects/LangString.scala new file mode 100644 index 0000000000..cd04599b65 --- /dev/null +++ b/dsp-shared/src/main/scala/dsp/valueobjects/LangString.scala @@ -0,0 +1,64 @@ +package dsp.valueobjects + +import dsp.errors.ValidationException +import zio.prelude.Validation +import zio._ + +/** + * LangString value object + */ +sealed abstract case class LangString private (language: LanguageCode, value: String) + +object LangString { + + /** + * Creates a [[zio.prelude.Validation]] that either fails with a ValidationException or succeeds with a LangString value object. + * + * @param language a [[LanguageCode]] value object representing the language of the LangString. + * @param value the string value of the LangString. + * @return a Validation of a LangString value object. + */ + def make(language: LanguageCode, value: String): Validation[ValidationException, LangString] = + if (value.isBlank()) { + Validation.fail(ValidationException(LangStringErrorMessages.LangStringValueEmpty)) + } else { + Validation.succeed(new LangString(language, value) {}) + } + + /** + * Creates a [[zio.prelude.Validation]] that either fails with a ValidationException or succeeds with a LangString value object. + * + * @param language a two-digit language code string representing the language of the LangString. + * @param value the string value of the LangString. + * @return a Validation of a LangString value object. + */ + def makeFromStrings(language: String, value: String): Validation[ValidationException, LangString] = + for { + languageCode <- LanguageCode.make(language) + langString <- LangString.make(languageCode, value) + } yield langString + + /** + * Unsafely creates a LangString value object. + * Warning: skips all validation. Should not be used unless there is no possibility for the data to be invalid. + * + * @param languagea [[LanguageCode]] value object representing the language of the LangString. + * @param value the string value of the LangString. + * @return a LanguageCode value object + */ + def unsafeMake(language: LanguageCode, value: String): LangString = + LangString + .make(language = language, value = value) + .fold( + e => { + val unsafe = new LangString(language, value) {} + ZIO.logWarning(s"Called unsafeMake() for an invalid $unsafe: $e") // TODO-BL: get this to actually log + unsafe + }, + langString => langString + ) +} + +object LangStringErrorMessages { + val LangStringValueEmpty = "String value cannot be empty." +} diff --git a/dsp-shared/src/main/scala/dsp/valueobjects/LanguageCode.scala b/dsp-shared/src/main/scala/dsp/valueobjects/LanguageCode.scala new file mode 100644 index 0000000000..29ecd56db5 --- /dev/null +++ b/dsp-shared/src/main/scala/dsp/valueobjects/LanguageCode.scala @@ -0,0 +1,51 @@ +/* + * Copyright © 2021 - 2022 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package dsp.valueobjects + +import dsp.errors.ValidationException +import zio.prelude.Validation + +/** + * LanguageCode value object. + */ +sealed abstract case class LanguageCode private (value: String) + +object LanguageCode { self => + val DE: String = "de" + val EN: String = "en" + val FR: String = "fr" + val IT: String = "it" + val RM: String = "rm" + // TODO-BL: with NewTypes we shouldn't need the strings separately anymore, as the valueobject can be used just like a string value + + val SupportedLanguageCodes: Set[String] = Set( + DE, + EN, + FR, + IT, + RM + ) + + def make(value: String): Validation[ValidationException, LanguageCode] = + if (value.isEmpty) { + Validation.fail(ValidationException(LanguageCodeErrorMessages.LanguageCodeMissing)) + } else if (!SupportedLanguageCodes.contains(value)) { + Validation.fail(ValidationException(LanguageCodeErrorMessages.LanguageCodeInvalid(value))) + } else { + Validation.succeed(new LanguageCode(value) {}) + } + + lazy val en: LanguageCode = new LanguageCode(EN) {} + lazy val de: LanguageCode = new LanguageCode(DE) {} + lazy val fr: LanguageCode = new LanguageCode(FR) {} + lazy val it: LanguageCode = new LanguageCode(IT) {} + lazy val rm: LanguageCode = new LanguageCode(RM) {} +} + +object LanguageCodeErrorMessages { + val LanguageCodeMissing = "LanguageCode cannot be empty." + def LanguageCodeInvalid(lang: String) = s"LanguageCode '$lang' is invalid." +} diff --git a/dsp-shared/src/main/scala/dsp/valueobjects/Role.scala b/dsp-shared/src/main/scala/dsp/valueobjects/Role.scala index 2b3bfea427..311e93d258 100644 --- a/dsp-shared/src/main/scala/dsp/valueobjects/Role.scala +++ b/dsp-shared/src/main/scala/dsp/valueobjects/Role.scala @@ -6,6 +6,7 @@ package dsp.valueobjects import dsp.errors.BadRequestException +import dsp.valueobjects.LanguageCode import zio.prelude.Validation object Role { @@ -19,7 +20,7 @@ object Role { sealed abstract case class LangString private (value: String, isoCode: String) object LangString { def isIsoCodeSupported(isoCode: String): Boolean = - V2.SupportedLanguageCodes.contains(isoCode.toLowerCase) // should only lower case be supported? + LanguageCode.SupportedLanguageCodes.contains(isoCode.toLowerCase) // should only lower case be supported? def make(value: String, isoCode: String): Validation[Throwable, LangString] = if (value.isEmpty) { diff --git a/dsp-shared/src/main/scala/dsp/valueobjects/User.scala b/dsp-shared/src/main/scala/dsp/valueobjects/User.scala index 258a4e834d..ef40f449ba 100644 --- a/dsp-shared/src/main/scala/dsp/valueobjects/User.scala +++ b/dsp-shared/src/main/scala/dsp/valueobjects/User.scala @@ -6,6 +6,7 @@ package dsp.valueobjects import dsp.errors.BadRequestException +import dsp.errors.ValidationException import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder import zio._ @@ -199,27 +200,12 @@ object User { Validation.succeed(new UserStatus(value) {}) } - /** - * LanguageCode value object. - */ - sealed abstract case class LanguageCode private (value: String) - object LanguageCode { self => - def make(value: String): Validation[Throwable, LanguageCode] = - if (value.isEmpty) { - Validation.fail(BadRequestException(UserErrorMessages.LanguageCodeMissing)) - } else if (!V2.SupportedLanguageCodes.contains(value)) { - Validation.fail(BadRequestException(UserErrorMessages.LanguageCodeInvalid)) - } else { - Validation.succeed(new LanguageCode(value) {}) - } - } - /** * SystemAdmin value object. */ sealed abstract case class SystemAdmin private (value: Boolean) object SystemAdmin { - def make(value: Boolean): Validation[Throwable, SystemAdmin] = + def make(value: Boolean): Validation[ValidationException, SystemAdmin] = Validation.succeed(new SystemAdmin(value) {}) } } @@ -237,6 +223,4 @@ object UserErrorMessages { val GivenNameInvalid = "GivenName is invalid." val FamilyNameMissing = "FamilyName cannot be empty." val FamilyNameInvalid = "FamilyName is invalid." - val LanguageCodeMissing = "LanguageCode cannot be empty." - val LanguageCodeInvalid = "LanguageCode is invalid." } diff --git a/dsp-shared/src/main/scala/dsp/valueobjects/V2.scala b/dsp-shared/src/main/scala/dsp/valueobjects/V2.scala index 8dea3c274b..db4ff688e4 100644 --- a/dsp-shared/src/main/scala/dsp/valueobjects/V2.scala +++ b/dsp-shared/src/main/scala/dsp/valueobjects/V2.scala @@ -19,19 +19,6 @@ import scala.util.matching.Regex // implementations in webapi project which needed to be added temporary in order // to avoid circular dependencies after moving value objects to separate project. object V2 { - val DE: String = "de" - val EN: String = "en" - val FR: String = "fr" - val IT: String = "it" - val RM: String = "rm" - - val SupportedLanguageCodes: Set[String] = Set( - DE, - EN, - FR, - IT, - RM - ) /** * Represents a string with language iso. Allows sorting inside collections by value. diff --git a/dsp-shared/src/test/scala/dsp/valueobjects/LangStringSpec.scala b/dsp-shared/src/test/scala/dsp/valueobjects/LangStringSpec.scala new file mode 100644 index 0000000000..844c895181 --- /dev/null +++ b/dsp-shared/src/test/scala/dsp/valueobjects/LangStringSpec.scala @@ -0,0 +1,83 @@ +/* + * Copyright © 2021 - 2022 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package dsp.valueobjects + +import dsp.errors.ValidationException +import zio.prelude.Validation +import zio.test._ + +/** + * This spec is used to test the [[dsp.valueobjects.LangString]] value objects creation. + */ +object LangStringSpec extends ZIOSpecDefault { + private val validLanguageCode = "de" + private val invalidLanguageCode = "00" + + def spec = (langStringTest) + + private val langStringTest = suite("LangString")( + suite("`make()` smart constructor")( + test("pass an empty string value and return an error") { + val expected = Validation.fail(ValidationException(LangStringErrorMessages.LangStringValueEmpty)) + val result = LangString.make(LanguageCode.en, "") + assertTrue(result == expected) + }, + test("pass an invalid string value and return an error") { + val expected = Validation.fail(ValidationException(LangStringErrorMessages.LangStringValueEmpty)) + val result = LangString.make(LanguageCode.en, "\t\n ") // blank only is not allowed + assertTrue(result == expected) + }, + test("pass a valid value and successfully create value object") { + val stringValue = "Some valid string" + (for { + result <- LangString.make(LanguageCode.en, stringValue) + } yield assertTrue(result.language.value == "en") && + assertTrue(result.value == stringValue)).toZIO + } + ), + suite("`makeFromStrings()` smart constructor")( + test("pass an invalid language value and return an error") { + val invalidLanguageCode = "english" + val expected = + Validation.fail(ValidationException(LanguageCodeErrorMessages.LanguageCodeInvalid(invalidLanguageCode))) + val result = LangString.makeFromStrings(invalidLanguageCode, "ok string value") + assertTrue(result == expected) + }, + test("pass an empty string value and return an error") { + val expected = Validation.fail(ValidationException(LangStringErrorMessages.LangStringValueEmpty)) + val result = LangString.makeFromStrings("en", "") + assertTrue(result == expected) + }, + test("pass an invalid string value and return an error") { + val expected = Validation.fail(ValidationException(LangStringErrorMessages.LangStringValueEmpty)) + val result = LangString.makeFromStrings("en", "\t\n ") // blank only is not allowed + assertTrue(result == expected) + }, + test("pass a valid value and successfully create value object") { + val stringValue = "Some valid string" + (for { + result <- LangString.makeFromStrings("en", stringValue) + } yield assertTrue(result.language.value == "en") && + assertTrue(result.value == stringValue)).toZIO + } + ), + suite("`unsafeMake()` unsafe constructor")( + test("create a valid LangString through the unsafe method") { + val str = "some langstring" + val unsafeValid = LangString.unsafeMake(LanguageCode.en, str) + assertTrue(unsafeValid.language.value == "en") && + assertTrue(unsafeValid.value == str) + }, + test("create an invalid LangString through the unsafe method") { + val str = "" + val unsafeValid = LangString.unsafeMake(LanguageCode.en, str) + assertTrue(unsafeValid.language.value == "en") && + assertTrue(unsafeValid.value == str) // TODO-BL: once logging works, figure out how to test for logging output + } + ) + ) + +} diff --git a/dsp-shared/src/test/scala/dsp/valueobjects/LanguageCodeSpec.scala b/dsp-shared/src/test/scala/dsp/valueobjects/LanguageCodeSpec.scala new file mode 100644 index 0000000000..cb2280d05d --- /dev/null +++ b/dsp-shared/src/test/scala/dsp/valueobjects/LanguageCodeSpec.scala @@ -0,0 +1,79 @@ +/* + * Copyright © 2021 - 2022 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package dsp.valueobjects + +import dsp.errors.ValidationException +import zio.prelude.Validation +import zio.test._ + +object LanguageCodeSpec extends ZIOSpecDefault { + + private val validLanguageCode = "de" + private val invalidLanguageCode = "00" + + def spec = (languageCodeTest) + + private val languageCodeTest = suite("LanguageCode")( + test("pass an empty value and return an error") { + assertTrue( + LanguageCode.make("") == Validation.fail(ValidationException(LanguageCodeErrorMessages.LanguageCodeMissing)) + ) + }, + test("pass an invalid value and return an error") { + assertTrue( + LanguageCode.make(invalidLanguageCode) == Validation.fail( + ValidationException(LanguageCodeErrorMessages.LanguageCodeInvalid(invalidLanguageCode)) + ) + ) + }, + test("pass a valid value and successfully create value object") { + assertTrue(LanguageCode.make(validLanguageCode).toOption.get.value == validLanguageCode) + }, + suite("default language codes should be correct")( + test("English") { + val lang = "en" + (for { + manual <- LanguageCode.make(lang) + default = LanguageCode.en + } yield assertTrue(manual == default) && + assertTrue(default.value == lang)).toZIO + }, + test("German") { + val lang = "de" + (for { + manual <- LanguageCode.make(lang) + default = LanguageCode.de + } yield assertTrue(manual == default) && + assertTrue(default.value == lang)).toZIO + }, + test("French") { + val lang = "fr" + (for { + manual <- LanguageCode.make(lang) + default = LanguageCode.fr + } yield assertTrue(manual == default) && + assertTrue(default.value == lang)).toZIO + }, + test("Italian") { + val lang = "it" + (for { + manual <- LanguageCode.make(lang) + default = LanguageCode.it + } yield assertTrue(manual == default) && + assertTrue(default.value == lang)).toZIO + }, + test("Romansh") { + val lang = "rm" + (for { + manual <- LanguageCode.make(lang) + default = LanguageCode.rm + } yield assertTrue(manual == default) && + assertTrue(default.value == lang)).toZIO + } + ) + ) + +} diff --git a/dsp-shared/src/test/scala/dsp/valueobjects/RoleSpec.scala b/dsp-shared/src/test/scala/dsp/valueobjects/RoleSpec.scala index 70f3f4ab7c..910c5e8f5d 100644 --- a/dsp-shared/src/test/scala/dsp/valueobjects/RoleSpec.scala +++ b/dsp-shared/src/test/scala/dsp/valueobjects/RoleSpec.scala @@ -7,6 +7,7 @@ package dsp.valueobjects import dsp.errors.BadRequestException import dsp.valueobjects.Role._ +import dsp.valueobjects.LanguageCode import zio.prelude.Validation import zio.test.ZIOSpecDefault import zio.test._ @@ -19,7 +20,7 @@ object RoleSpec extends ZIOSpecDefault { private val invalidLangStringValue = "Invalid \r" private val validPermission = Permission.View private val invalidPermission = "mod" - private val validLangStringIsoCode = V2.EN + private val validLangStringIsoCode = LanguageCode.EN private val invalidLangStringIsoCode = "iso" def spec = diff --git a/dsp-shared/src/test/scala/dsp/valueobjects/UserSpec.scala b/dsp-shared/src/test/scala/dsp/valueobjects/UserSpec.scala index 89f8f58f9d..08f45f0f12 100644 --- a/dsp-shared/src/test/scala/dsp/valueobjects/UserSpec.scala +++ b/dsp-shared/src/test/scala/dsp/valueobjects/UserSpec.scala @@ -5,11 +5,11 @@ package dsp.valueobjects +import dsp.errors.BadRequestException +import dsp.errors.ValidationException import dsp.valueobjects.User._ import zio.prelude.Validation import zio.test._ -import dsp.errors.BadRequestException -import zio.prelude.ZValidation /** * This spec is used to test the [[dsp.valueobjects.User]] value objects creation. @@ -30,11 +30,9 @@ object UserSpec extends ZIOSpecDefault { private val validPassword = "pass-word" private val validGivenName = "John" private val validFamilyName = "Rambo" - private val validLanguageCode = "de" - private val invalidLanguageCode = "00" def spec = - (usernameTest + emailTest + givenNameTest + familyNameTest + passwordTest + passwordHashTest + languageCodeTest + systemAdminTest) + (usernameTest + emailTest + givenNameTest + familyNameTest + passwordTest + passwordHashTest + systemAdminTest) private val usernameTest = suite("Username")( test("pass an empty value and return an error") { @@ -195,24 +193,6 @@ object UserSpec extends ZIOSpecDefault { } ) - private val languageCodeTest = suite("LanguageCode")( - test("pass an empty value and return an error") { - assertTrue( - LanguageCode.make("") == Validation.fail(BadRequestException(UserErrorMessages.LanguageCodeMissing)) - ) - }, - test("pass an invalid value and return an error") { - assertTrue( - LanguageCode.make(invalidLanguageCode) == Validation.fail( - BadRequestException(UserErrorMessages.LanguageCodeInvalid) - ) - ) - }, - test("pass a valid value and successfully create value object") { - assertTrue(LanguageCode.make(validLanguageCode).toOption.get.value == validLanguageCode) - } - ) - private val systemAdminTest = suite("SystemAdmin")( test("pass a valid object and successfully create value object") { assertTrue(SystemAdmin.make(true).toOption.get.value == true) diff --git a/dsp-user/core/src/main/scala/dsp/user/domain/UserDomain.scala b/dsp-user/core/src/main/scala/dsp/user/domain/UserDomain.scala index d991fa36e6..da632f17be 100644 --- a/dsp-user/core/src/main/scala/dsp/user/domain/UserDomain.scala +++ b/dsp-user/core/src/main/scala/dsp/user/domain/UserDomain.scala @@ -5,12 +5,13 @@ package dsp.user.domain +import dsp.errors.ValidationException import dsp.valueobjects.Id.UserId +import dsp.valueobjects.LanguageCode import dsp.valueobjects.User._ import zio.prelude.Validation import java.util.UUID -import dsp.errors.BadRequestException /** * Represents the user domain object. @@ -48,7 +49,7 @@ sealed abstract case class User private ( * @param newValue the new username * @return the updated [[User]] */ - def updateUsername(newValue: Username): Validation[BadRequestException, User] = + def updateUsername(newValue: Username): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -66,7 +67,7 @@ sealed abstract case class User private ( * @param newValue the new email * @return the updated [[User]] */ - def updateEmail(newValue: Email): Validation[BadRequestException, User] = + def updateEmail(newValue: Email): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -84,7 +85,7 @@ sealed abstract case class User private ( * @param newValue the new given name * @return the updated [[User]] */ - def updateGivenName(newValue: GivenName): Validation[BadRequestException, User] = + def updateGivenName(newValue: GivenName): Validation[ValidationException, User] = User.make( self.id, newValue, @@ -102,7 +103,7 @@ sealed abstract case class User private ( * @param newValue the new family name * @return the updated [[User]] */ - def updateFamilyName(newValue: FamilyName): Validation[BadRequestException, User] = + def updateFamilyName(newValue: FamilyName): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -120,7 +121,7 @@ sealed abstract case class User private ( * @param newValue the new password * @return the updated [[User]] */ - def updatePassword(newValue: PasswordHash): Validation[BadRequestException, User] = + def updatePassword(newValue: PasswordHash): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -138,7 +139,7 @@ sealed abstract case class User private ( * @param newValue the new language * @return the updated [[User]] */ - def updateLanguage(newValue: LanguageCode): Validation[BadRequestException, User] = + def updateLanguage(newValue: LanguageCode): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -157,7 +158,7 @@ sealed abstract case class User private ( * @param newValue the new status * @return the updated [[User]] */ - def updateStatus(newValue: UserStatus): Validation[BadRequestException, User] = + def updateStatus(newValue: UserStatus): Validation[ValidationException, User] = User.make( self.id, self.givenName, @@ -181,7 +182,7 @@ object User { language: LanguageCode, status: UserStatus // role: Role - ): Validation[BadRequestException, User] = + ): Validation[ValidationException, User] = Validation.succeed(new User(id, givenName, familyName, username, email, password, language, status) {}) } diff --git a/dsp-user/core/src/test/scala/dsp/user/domain/UserDomainSpec.scala b/dsp-user/core/src/test/scala/dsp/user/domain/UserDomainSpec.scala index 612b667469..b017fc0991 100644 --- a/dsp-user/core/src/test/scala/dsp/user/domain/UserDomainSpec.scala +++ b/dsp-user/core/src/test/scala/dsp/user/domain/UserDomainSpec.scala @@ -7,8 +7,9 @@ package dsp.user.domain import dsp.user.domain.User import dsp.user.domain._ -import dsp.valueobjects.User._ import dsp.user.sharedtestdata.SharedTestData +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.User._ import zio.ZLayer import zio._ import zio.test._ diff --git a/dsp-user/core/src/test/scala/dsp/user/sharedtestdata/SharedTestData.scala b/dsp-user/core/src/test/scala/dsp/user/sharedtestdata/SharedTestData.scala index e356e82edd..f1150e0d3b 100644 --- a/dsp-user/core/src/test/scala/dsp/user/sharedtestdata/SharedTestData.scala +++ b/dsp-user/core/src/test/scala/dsp/user/sharedtestdata/SharedTestData.scala @@ -5,11 +5,12 @@ package dsp.user.sharedtestdata -import dsp.valueobjects.User._ -import dsp.user.domain.User import dsp.errors.BadRequestException -import zio.prelude.Validation +import dsp.user.domain.User import dsp.valueobjects.Id +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.User._ +import zio.prelude.Validation object SharedTestData { val passwordStrength = PasswordStrength(12) diff --git a/dsp-user/handler/src/main/scala/dsp/user/handler/UserHandler.scala b/dsp-user/handler/src/main/scala/dsp/user/handler/UserHandler.scala index b44d2cf309..ddf3376436 100644 --- a/dsp-user/handler/src/main/scala/dsp/user/handler/UserHandler.scala +++ b/dsp-user/handler/src/main/scala/dsp/user/handler/UserHandler.scala @@ -8,16 +8,17 @@ package dsp.user.handler import dsp.errors.BadRequestException import dsp.errors.DuplicateValueException import dsp.errors.ForbiddenException +import dsp.errors.KnoraException import dsp.errors.NotFoundException import dsp.errors.RequestRejectedException import dsp.user.api.UserRepo import dsp.user.domain.User import dsp.valueobjects.Id.UserId +import dsp.valueobjects.LanguageCode import dsp.valueobjects.User._ import zio._ import java.util.UUID -import dsp.errors.KnoraException /** * The user handler. diff --git a/dsp-user/handler/src/test/scala/dsp/user/handler/UserHandlerSpec.scala b/dsp-user/handler/src/test/scala/dsp/user/handler/UserHandlerSpec.scala index 080706b242..a60d1bcca1 100644 --- a/dsp-user/handler/src/test/scala/dsp/user/handler/UserHandlerSpec.scala +++ b/dsp-user/handler/src/test/scala/dsp/user/handler/UserHandlerSpec.scala @@ -5,20 +5,21 @@ package dsp.user.handler +import dsp.errors.DuplicateValueException +import dsp.errors.ForbiddenException import dsp.errors.NotFoundException import dsp.user.domain.User import dsp.user.domain._ import dsp.user.repo.impl.UserRepoMock +import dsp.user.sharedtestdata.SharedTestData import dsp.valueobjects.Id.UserId +import dsp.valueobjects.LanguageCode import dsp.valueobjects.User._ +import dsp.valueobjects.UserErrorMessages import zio.ZLayer import zio._ import zio.test.Assertion._ import zio.test._ -import dsp.valueobjects.UserErrorMessages -import dsp.errors.DuplicateValueException -import dsp.user.sharedtestdata.SharedTestData -import dsp.errors.ForbiddenException /** * This spec is used to test [[dsp.user.handler.UserHandler]]. diff --git a/knora-ontologies/knora-base.ttl b/knora-ontologies/knora-base.ttl index 0f58df5986..b0c64b2627 100644 --- a/knora-ontologies/knora-base.ttl +++ b/knora-ontologies/knora-base.ttl @@ -19,7 +19,7 @@ rdf:type owl:Ontology ; rdfs:label "The Knora base ontology"@en ; :attachedToProject knora-admin:SystemProject ; - :ontologyVersion "knora-base v23" . + :ontologyVersion "knora-base v24" . ################################################################# @@ -573,6 +573,29 @@ rdfs:subPropertyOf :hasLinkToValue . +### http://www.knora.org/ontology/knora-base#isSequenceOf + +:isSequenceOf + rdf:type owl:ObjectProperty ; + rdfs:label "ist Sequenz von"@de, + "is sequence of"@en, + "fait partie de"@fr, + "fa parte di"@it ; + rdfs:comment "Indicates that this resource is a sequence of a video or audio resource"@en ; + :subjectClassConstraint :Resource ; + :objectClassConstraint :Resource ; + rdfs:subPropertyOf :hasLinkTo . + + +### http://www.knora.org/ontology/knora-base#isSequenceOfValue + +:isSequenceOfValue + rdf:type owl:ObjectProperty ; + :objectClassConstraint :LinkValue ; + :subjectClassConstraint :Resource ; + rdfs:subPropertyOf :hasLinkToValue . + + ### http://www.knora.org/ontology/knora-base#isRegionOf :isRegionOf @@ -623,7 +646,18 @@ "Sequence number"@en, "Numéro de séquence"@fr, "Numero di sequenza"@it ; - rdfs:comment "Indicates the position of a resource within a sequence"@en . + rdfs:comment "Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource."@en . + + +### http://www.knora.org/ontology/knora-base#hasSequenceBounds + +:hasSequenceBounds + rdf:type owl:ObjectProperty ; + :objectClassConstraint :IntervalValue ; + rdfs:subPropertyOf :hasValue ; + rdfs:label "Sequenz-Grenzen"@de, + "Sequence Bounds"@en; + rdfs:comment "Indicates the bounds of a sequence, i.e. the start and end point in the containing resource."@en . ### http://www.knora.org/ontology/knora-base#standoffTagHasOriginalXMLID @@ -1581,6 +1615,8 @@ rdfs:comment "Represents a time interval, e.g. in an audio recording"@en . +### http://www.knora.org/ontology/knora-base#TimeBase + :TimeBase rdf:type owl:Class ; rdfs:subClassOf :ValueBase, @@ -1589,7 +1625,7 @@ owl:cardinality "1"^^xsd:nonNegativeInteger ] . -### http://www.knora.org/ontology/knora-base#IntervalValue +### http://www.knora.org/ontology/knora-base#TimeValue :TimeValue rdf:type owl:Class ; diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 58306df1eb..8927f6adff 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -182,7 +182,8 @@ object Dependencies { ) val schemaCoreLibraryDependencies = Seq( - zioPrelude + zioPrelude, + zioTest % Test ) val schemaRepoLibraryDependencies = Seq() diff --git a/test_data/all_data/anything-data.ttl b/test_data/all_data/anything-data.ttl index d107115bef..0058d1d09e 100644 --- a/test_data/all_data/anything-data.ttl +++ b/test_data/all_data/anything-data.ttl @@ -2231,3 +2231,172 @@ knora-base:hasRootNode ; knora-base:listNodePosition 0 ; rdfs:label "Test list node 03"@en . + +# Video Resource + + a anything:VideoThing ; + knora-base:hasMovingImageFileValue ; + anything:hasTitle ; + rdfs:label "video file representation instance" ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Video File Value + + a knora-base:MovingImageFileValue ; + knora-base:internalFilename "mD0DZG8MQba-nNPnBjCwcA.mp4" ; + knora-base:internalMimeType "video/mp4" ; + knora-base:originalFilename "video.mp4" ; + knora-base:originalMimeType "video/mp4" ; + knora-base:valueHasString "video.mp4" ; + knora-base:valueHasUUID "xzb9NVn8TzqkMAEg7IRE-g"^^xsd:string ; + knora-base:valueHasOrder 0 ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Video Title Value + + a knora-base:TextValue ; + knora-base:valueHasString "Video Title" ; + knora-base:valueHasUUID "aFk0YyM7Q-a5kuJd01nRnw"^^xsd:string ; + knora-base:valueHasOrder 0 ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Video Sequence Resource + + a anything:VideoSequencThing ; + knora-base:isSequenceOf ; + knora-base:isSequenceOfValue ; + knora-base:hasSequenceBounds ; + rdfs:label "video sequence resource instance" ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Video Sequence Interval Value + + a knora-base:IntervalValue ; + knora-base:valueHasIntervalStart "0"^^xsd:decimal ; + knora-base:valueHasIntervalEnd "10"^^xsd:decimal ; + knora-base:valueHasString "0 - 10" ; + knora-base:valueHasUUID "8QR16dqWSLiatmna1a0-HA"^^xsd:string ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:isDeleted false . + +# Video Sequence Link Value + + a knora-base:LinkValue ; + rdf:subject ; + rdf:predicate knora-base:isSequenceOf ; + rdf:object ; + knora-base:valueHasString "http://rdfh.ch/0001/zUelKon-SdmuL9iiHMgnGw" ; + knora-base:valueHasUUID "VPDWlq3dSH-FNKIL9CX3vw"^^xsd:string ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:valueHasRefCount "1"^^xsd:int ; + knora-base:isDeleted false . + + + + +# Audio Resource + + a anything:AudioThing ; + knora-base:hasMovingImageFileValue ; + anything:hasTitle ; + rdfs:label "audio file representation instance" ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Audio File Value + + a knora-base:MovingImageFileValue ; + knora-base:internalFilename "mzVplog0QIG8S1R6CwtcOA.mp3" ; + knora-base:internalMimeType "audio/mpeg" ; + knora-base:originalFilename "audio.mp3" ; + knora-base:originalMimeType "audio/mpeg" ; + knora-base:valueHasString "audio.mp3" ; + knora-base:valueHasUUID "NwoXr4HCSlC3LB3e7fNPXA"^^xsd:string ; + knora-base:valueHasOrder 0 ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Audio Title Value + + a knora-base:TextValue ; + knora-base:valueHasString "Audio Title" ; + knora-base:valueHasUUID "jHLJpDQBS0efW3TkBN12bw"^^xsd:string ; + knora-base:valueHasOrder 0 ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Audio Sequence Resource + + a anything:AudioSequencThing ; + knora-base:isSequenceOf ; + knora-base:isSequenceOfValue ; + knora-base:hasSequenceBounds ; + rdfs:label "audio sequence resource instance" ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:isDeleted false . + +# Audio Sequence Interval Value + + a knora-base:IntervalValue ; + knora-base:valueHasIntervalStart "0"^^xsd:decimal ; + knora-base:valueHasIntervalEnd "10"^^xsd:decimal ; + knora-base:valueHasString "0 - 10" ; + knora-base:valueHasUUID "tbK4Yom-Smq24USjY6RgEw"^^xsd:string ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:isDeleted false . + +# Audio Sequence Link Value + + a knora-base:LinkValue ; + rdf:subject ; + rdf:predicate knora-base:isSequenceOf ; + rdf:object ; + knora-base:valueHasString "http://rdfh.ch/0001/gT2msR9wS-CeLWXaj3N2aA" ; + knora-base:valueHasUUID "4ug_4NNNReygjjzOm8R7Cw"^^xsd:string ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2019-11-29T10:00:00.673298Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:valueHasRefCount "1"^^xsd:int ; + knora-base:isDeleted false . diff --git a/test_data/all_data/sequences-data.ttl b/test_data/all_data/sequences-data.ttl new file mode 100644 index 0000000000..b3c4ca17eb --- /dev/null +++ b/test_data/all_data/sequences-data.ttl @@ -0,0 +1,96 @@ +@prefix s: . +@prefix xml: . +@prefix xsd: . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix foaf: . +@prefix knora-base: . +@prefix salsah-gui: . + + +# audio-01 resource + + a s:Audio ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + rdfs:label "an audio instance" ; + s:hasTitle ; + knora-base:isDeleted false . + +# title value of audio-01 resource + + a knora-base:TextValue ; + knora-base:valueHasUUID "ZHGLzD0rSfyVzfUG0ck4aw"^^xsd:string ; + knora-base:valueCreationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:valueHasString "Audio Title" ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:attachedToUser ; + knora-base:isDeleted false . + + +# video-01 resource + + a s:Video ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + rdfs:label "a video instance" ; + s:hasTitle ; + knora-base:isDeleted false . + +# title value of video-01 resource + + a knora-base:TextValue ; + knora-base:valueHasUUID "BKkJutVSTK-EU8fkc2tgLg"^^xsd:string ; + knora-base:valueCreationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + knora-base:valueHasOrder 0 ; + knora-base:valueHasString "Video Title" ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:attachedToUser ; + knora-base:isDeleted false . + + +# sequence of video-01 + + a s:VideoSequence ; + knora-base:attachedToUser ; + knora-base:attachedToProject ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:creationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + rdfs:label "a video sequence instance" ; + knora-base:isSequenceOf ; + knora-base:isSequenceOfValue ; + knora-base:hasSequenceBounds ; + knora-base:isDeleted false . + +# reification of the isSequenceOf link from video-sequence-01 to video-01 + + a knora-base:LinkValue ; + knora-base:valueHasUUID "6CKp1AmZT1SRHYeSOUaJjA"^^xsd:string ; + rdf:subject ; + rdf:predicate s:isSequenceOf ; + rdf:object ; + knora-base:attachedToUser ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:valueCreationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + knora-base:valueHasString "http://rdfh.ch/0001/video-01" ; + knora-base:valueHasRefCount "1"^^xsd:int ; + knora-base:isDeleted false . + +# sequence bounds interval of video-sequence-01 + + a knora-base:IntervalValue ; + knora-base:valueHasUUID "vEDim4wvSfGnhSvX6fXcaA"^^xsd:string ; + knora-base:valueCreationDate "2022-07-13T16:21:34Z"^^xsd:dateTime ; + knora-base:valueHasIntervalEnd "100"^^xsd:decimal ; + knora-base:valueHasIntervalStart "0"^^xsd:decimal ; + knora-base:valueHasOrder 0 ; + knora-base:valueHasString "0 - 100" ; + knora-base:hasPermissions "V knora-admin:UnknownUser|M knora-admin:ProjectMember" ; + knora-base:attachedToUser ; + knora-base:isDeleted false . diff --git a/test_data/ontologies/anything-onto.ttl b/test_data/ontologies/anything-onto.ttl index 3331595a87..fc8cf9ba2f 100644 --- a/test_data/ontologies/anything-onto.ttl +++ b/test_data/ontologies/anything-onto.ttl @@ -9,7 +9,7 @@ @prefix salsah-gui: . @base . -# A trivial ontology, used only for testing Knora. +# A trivial ontology, used only for testing DSP API. @@ -571,11 +571,76 @@ rdfs:comment "A thing with a region"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :thingHasRegion ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ], + owl:minCardinality "0"^^xsd:nonNegativeInteger ] , [ a owl:Restriction ; owl:onProperty :thingHasRegionValue ; owl:minCardinality "0"^^xsd:nonNegativeInteger ] . +:hasTitle + rdf:type owl:ObjectProperty ; + rdfs:subPropertyOf knora-base:hasValue ; + rdfs:label "Title"@en ; + knora-base:subjectClassConstraint knora-base:Resource ; + knora-base:objectClassConstraint knora-base:TextValue ; + salsah-gui:guiElement salsah-gui:SimpleText ; + salsah-gui:guiAttribute "size=80", + "maxlength=255" . + +:VideoThing + rdf:type owl:Class ; + rdfs:label "Video Thing"@en ; + rdfs:comment "A Resource representing a video"@en ; + rdfs:subClassOf knora-base:MovingImageRepresentation , + [ a owl:Restriction ; + owl:onProperty :hasTitle ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ] . + +:VideoSequenceThing + rdf:type owl:Class ; + rdfs:label "Video Sequence Thing"@en ; + rdfs:comment "A Resource representing a subsequence of a video"@en ; + rdfs:subClassOf knora-base:Resource , + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOf ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOfValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:hasSequenceBounds ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] . + +:AudioThing + rdf:type owl:Class ; + rdfs:label "Audio Thing"@en ; + rdfs:comment "A Resource representing an audio"@en ; + rdfs:subClassOf knora-base:AudioRepresentation , + [ a owl:Restriction ; + owl:onProperty :hasTitle ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ] . + +:AudioSequenceThing + rdf:type owl:Class ; + rdfs:label "Audio Sequence Thing"@en ; + rdfs:comment "A Resource representing a subsequence of an audio"@en ; + rdfs:subClassOf knora-base:Resource , + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOf ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOfValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:hasSequenceBounds ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] . + + ################################################################# # diff --git a/test_data/ontologies/sequences-onto.ttl b/test_data/ontologies/sequences-onto.ttl new file mode 100644 index 0000000000..64d598e271 --- /dev/null +++ b/test_data/ontologies/sequences-onto.ttl @@ -0,0 +1,118 @@ +@prefix : . +@prefix xml: . +@prefix xsd: . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix foaf: . +@prefix knora-base: . +@prefix salsah-gui: . +@base . + +# A trivial ontology to test isSequenceOf relations + + + rdf:type owl:Ontology ; + rdfs:label "The sequences ontology" ; + knora-base:attachedToProject ; + knora-base:lastModificationDate "2022-07-13T16:21:34Z"^^xsd:dateTime . + +:Video + rdf:type owl:Class ; + rdfs:subClassOf knora-base:MovingImageRepresentation, + [ rdf:type owl:Restriction ; + owl:onProperty :hasTitle ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] ; + rdfs:label "Video"@en ; + rdfs:comment "A video resource."@en . + +:Audio + rdf:type owl:Class ; + rdfs:subClassOf knora-base:AudioRepresentation, + [ rdf:type owl:Restriction ; + owl:onProperty :hasTitle ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] ; + rdfs:label "Audio"@en ; + rdfs:comment "An audio resource."@en . + + +:VideoSequence + rdf:type owl:Class ; + rdfs:subClassOf knora-base:Resource, + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOf ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:isSequenceOfValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty knora-base:hasSequenceBounds ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] ; + rdfs:label "Sequence"@en ; + rdfs:comment "Sequence of a Video."@en . + +:AudioSequence + rdf:type owl:Class ; + rdfs:subClassOf knora-base:Resource, + [ rdf:type owl:Restriction ; + owl:onProperty :isAnnotatedSequenceOfAudio ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty :isAnnotatedSequenceOfAudioValue ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ], + [ rdf:type owl:Restriction ; + owl:onProperty :hasCustomSequenceBounds ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + salsah-gui:guiOrder "0"^^xsd:nonNegativeInteger ] ; + rdfs:label "Sequence"@en ; + rdfs:comment "Sequence of a Video."@en . + + +:hasTitle + rdf:type owl:ObjectProperty ; + rdfs:label "has title"@en ; + rdfs:comment "has a title"@en ; + rdfs:subPropertyOf knora-base:hasValue ; + knora-base:subjectClassConstraint knora-base:Resource ; + knora-base:objectClassConstraint knora-base:TextValue ; + salsah-gui:guiElement salsah-gui:SimpleText ; + salsah-gui:guiAttribute "size=80", + "maxlength=255" . + + +:isAnnotatedSequenceOfAudio + rdf:type owl:ObjectProperty ; + rdfs:label "isAnnotatedSequenceOfAudio"@en ; + rdfs:comment "annotated sub-sequence of an audio resource"@en ; + rdfs:subPropertyOf knora-base:isSequenceOf ; + knora-base:subjectClassConstraint :AudioSequence ; + knora-base:objectClassConstraint :Audio ; + salsah-gui:guiElement salsah-gui:Searchbox . + + +:isAnnotatedSequenceOfAudioValue + rdf:type owl:ObjectProperty ; + rdfs:label "isAnnotatedSequenceOfAudio"@en ; + rdfs:comment "annotated sub-sequence of an audio resource"@en ; + rdfs:subPropertyOf knora-base:isSequenceOfValue ; + knora-base:subjectClassConstraint :AudioSequence ; + knora-base:objectClassConstraint knora-base:LinkValue ; + salsah-gui:guiElement salsah-gui:Searchbox . + + +:hasCustomSequenceBounds + rdf:type owl:ObjectProperty ; + rdfs:label "hasCustomSequenceBounds"@en ; + rdfs:comment "custom subclass of sequence bounds"@en ; + rdfs:subPropertyOf knora-base:hasSequenceBounds ; + knora-base:subjectClassConstraint :AudioSequence ; + knora-base:objectClassConstraint knora-base:IntervalValue ; + salsah-gui:guiElement salsah-gui:Interval . + diff --git a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.jsonld b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.jsonld index cebd37242f..3f92c28b73 100644 --- a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.jsonld +++ b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.jsonld @@ -7,11 +7,11 @@ "@graph": [ { "knora-api:isResourceClass": true, - "rdfs:label": "Blue thing", + "rdfs:label": "Audio Sequence Thing", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "anything:Thing" + "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", @@ -151,223 +151,217 @@ }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasListItem" - } + "@id": "knora-api:hasSequenceBounds" + }, + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasOtherListItem" - } + "@id": "knora-api:isSequenceOf" + }, + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasRichtext" - } + "@id": "knora-api:isSequenceOfValue" + }, + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 + } + ], + "rdfs:comment": "A Resource representing a subsequence of an audio", + "@type": "owl:Class", + "@id": "anything:AudioSequenceThing" + }, + { + "knora-api:isResourceClass": true, + "rdfs:label": "Audio Thing", + "knora-api:canBeInstantiated": true, + "rdfs:subClassOf": [ + { + "@id": "knora-api:AudioRepresentation" }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasText" - } + "@id": "anything:hasTitle" + }, + "owl:maxCardinality": 1 }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 3, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasDate" - } + "@id": "knora-api:arkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 4, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasInteger" - } + "@id": "knora-api:attachedToProject" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 5, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasDecimal" - } + "@id": "knora-api:attachedToUser" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { - "owl:maxCardinality": 1, "@type": "owl:Restriction", - "salsah-gui:guiOrder": 6, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasBoolean" - } + "@id": "knora-api:creationDate" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 7, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasUri" - } + "@id": "knora-api:deleteComment" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 9, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasInterval" - } + "@id": "knora-api:deleteDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 10, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasColor" - } + "@id": "knora-api:deletedBy" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 11, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasGeometry" - } + "@id": "knora-api:hasAudioFileValue" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 12, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasGeoname" - } + "@id": "knora-api:hasIncomingLinkValue" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingDocument" - } + "@id": "knora-api:hasPermissions" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingDocumentValue" - } + "@id": "knora-api:hasStandoffLinkTo" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingPicture" - } + "@id": "knora-api:hasStandoffLinkToValue" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingPictureValue" - } + "@id": "knora-api:isDeleted" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasTimeStamp" - } + "@id": "knora-api:lastModificationDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:isPartOfOtherThing" - } + "@id": "knora-api:userHasPermission" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:isPartOfOtherThingValue" - } + "@id": "knora-api:versionArkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasBlueThing" + "@id": "knora-api:versionDate" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 63 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasBlueThingValue" + "@id": "rdfs:label" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 63 + "owl:cardinality": 1, + "knora-api:isInherited": true } ], - "rdfs:comment": "Diese Resource-Klasse beschreibt ein blaues Ding", + "rdfs:comment": "A Resource representing an audio", "@type": "owl:Class", - "@id": "anything:BlueThing" + "@id": "anything:AudioThing" }, { - "rdfs:label": "Represents an event in a TextValue", - "knora-api:isStandoffClass": true, + "knora-api:isResourceClass": true, + "rdfs:label": "Blue thing", + "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "knora-api:StandoffDateTag" + "@id": "anything:Thing" }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:standoffEventTagHasDescription" + "@id": "knora-api:arkUrl" }, - "owl:cardinality": 1 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasCalendar" + "@id": "knora-api:attachedToProject" }, "owl:cardinality": 1, "knora-api:isInherited": true @@ -375,15 +369,15 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasEndDay" + "@id": "knora-api:attachedToUser" }, - "owl:maxCardinality": 1, + "owl:cardinality": 1, "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasEndEra" + "@id": "knora-api:creationDate" }, "owl:cardinality": 1, "knora-api:isInherited": true @@ -391,7 +385,7 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasEndMonth" + "@id": "knora-api:deleteComment" }, "owl:maxCardinality": 1, "knora-api:isInherited": true @@ -399,15 +393,15 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasEndYear" + "@id": "knora-api:deleteDate" }, - "owl:cardinality": 1, + "owl:maxCardinality": 1, "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasStartDay" + "@id": "knora-api:deletedBy" }, "owl:maxCardinality": 1, "knora-api:isInherited": true @@ -415,7 +409,15 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasStartEra" + "@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 @@ -423,112 +425,780 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasStartMonth" + "@id": "knora-api:hasStandoffLinkTo" }, - "owl:maxCardinality": 1, + "owl:minCardinality": 0, "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:dateValueHasStartYear" + "@id": "knora-api:hasStandoffLinkToValue" }, - "owl:cardinality": 1, + "owl:minCardinality": 0, "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasEnd" + "@id": "knora-api:isDeleted" }, - "owl:cardinality": 1, + "owl:maxCardinality": 1, "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasEndIndex" + "@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:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasListItem" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasOtherListItem" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasRichtext" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasText" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 3, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasDate" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 4, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasInteger" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 5, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasDecimal" + } + }, + { + "owl:maxCardinality": 1, + "@type": "owl:Restriction", + "salsah-gui:guiOrder": 6, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasBoolean" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 7, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasUri" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 9, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasInterval" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 10, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasColor" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 11, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasGeometry" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 12, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasGeoname" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasThingDocument" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasThingDocumentValue" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasThingPicture" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasThingPictureValue" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasTimeStamp" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:isPartOfOtherThing" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:isPartOfOtherThingValue" + } + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasBlueThing" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 63 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasBlueThingValue" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 63 + } + ], + "rdfs:comment": "Diese Resource-Klasse beschreibt ein blaues Ding", + "@type": "owl:Class", + "@id": "anything:BlueThing" + }, + { + "rdfs:label": "Represents an event in a TextValue", + "knora-api:isStandoffClass": true, + "rdfs:subClassOf": [ + { + "@id": "knora-api:StandoffDateTag" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:standoffEventTagHasDescription" + }, + "owl:cardinality": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasCalendar" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasEndDay" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasEndEra" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasEndMonth" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasEndYear" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasStartDay" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasStartEra" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasStartMonth" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:dateValueHasStartYear" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasEnd" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasEndIndex" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasEndParent" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasEndParentIndex" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasOriginalXMLID" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasStart" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasStartIndex" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasStartParent" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasStartParentIndex" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:standoffTagHasUUID" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + } + ], + "rdfs:comment": "Represents an event in a TextValue", + "@type": "owl:Class", + "@id": "anything:StandoffEventTag" + }, + { + "knora-api:isResourceClass": true, + "rdfs:label": "Thing", + "knora-api:resourceIcon": "thing.png", + "knora-api:canBeInstantiated": true, + "rdfs:subClassOf": [ + { + "@id": "knora-api:Resource" + }, + { + "@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: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:Restriction", + "owl:onProperty": { + "@id": "anything:hasListItem" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasOtherListItem" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasOtherThing" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasOtherThingValue" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 1 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasRichtext" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasText" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasDate" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 3 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasInteger" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 4 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasDecimal" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 5 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasBoolean" + }, + "owl:maxCardinality": 1, + "salsah-gui:guiOrder": 6 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasUri" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 7 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasInterval" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 9 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasColor" + }, + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 10 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasGeometry" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 11 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasEndParent" + "@id": "anything:hasGeoname" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 12 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasEndParentIndex" + "@id": "anything:hasThingDocument" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasOriginalXMLID" + "@id": "anything:hasThingDocumentValue" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasStart" + "@id": "anything:hasThingPicture" }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasStartIndex" + "@id": "anything:hasThingPictureValue" }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasStartParent" + "@id": "anything:hasTimeStamp" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasStartParentIndex" + "@id": "anything:isPartOfOtherThing" }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:standoffTagHasUUID" + "@id": "anything:isPartOfOtherThingValue" }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15 } ], - "rdfs:comment": "Represents an event in a TextValue", + "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", "@type": "owl:Class", - "@id": "anything:StandoffEventTag" + "@id": "anything:Thing" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Thing", + "rdfs:label": "Document", "knora-api:resourceIcon": "thing.png", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "knora-api:Resource" + "@id": "knora-api:DocumentRepresentation" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasDocumentTitle" + }, + "owl:minCardinality": 0 }, { "@type": "owl:Restriction", @@ -586,6 +1256,14 @@ "owl:maxCardinality": 1, "knora-api:isInherited": true }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasDocumentFileValue" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, { "@type": "owl:Restriction", "owl:onProperty": { @@ -665,201 +1343,196 @@ }, "owl:cardinality": 1, "knora-api:isInherited": true - }, - { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:hasListItem" - }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0 - }, - { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:hasOtherListItem" - }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0 - }, + } + ], + "rdfs:comment": "A document about a thing", + "@type": "owl:Class", + "@id": "anything:ThingDocument" + }, + { + "knora-api:isResourceClass": true, + "rdfs:label": "Picture of a thing", + "knora-api:resourceIcon": "thing.png", + "knora-api:canBeInstantiated": true, + "rdfs:subClassOf": [ { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:hasOtherThing" - }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 1 + "@id": "knora-api:StillImageRepresentation" }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasOtherThingValue" + "@id": "anything:hasPictureTitle" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 1 + "owl:minCardinality": 0 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasRichtext" + "@id": "knora-api:arkUrl" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasText" + "@id": "knora-api:attachedToProject" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasDate" + "@id": "knora-api:attachedToUser" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 3 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasInteger" + "@id": "knora-api:creationDate" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 4 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasDecimal" + "@id": "knora-api:deleteComment" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 5 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasBoolean" + "@id": "knora-api:deleteDate" }, "owl:maxCardinality": 1, - "salsah-gui:guiOrder": 6 + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasUri" + "@id": "knora-api:deletedBy" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 7 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasInterval" + "@id": "knora-api:hasIncomingLinkValue" }, "owl:minCardinality": 0, - "salsah-gui:guiOrder": 9 + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasColor" + "@id": "knora-api:hasPermissions" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 10 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasGeometry" + "@id": "knora-api:hasStandoffLinkTo" }, "owl:minCardinality": 0, - "salsah-gui:guiOrder": 11 + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasGeoname" + "@id": "knora-api:hasStandoffLinkToValue" }, "owl:minCardinality": 0, - "salsah-gui:guiOrder": 12 + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasThingDocument" + "@id": "knora-api:hasStillImageFileValue" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasThingDocumentValue" + "@id": "knora-api:isDeleted" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasThingPicture" + "@id": "knora-api:lastModificationDate" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasThingPictureValue" + "@id": "knora-api:userHasPermission" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasTimeStamp" + "@id": "knora-api:versionArkUrl" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13 + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:isPartOfOtherThing" + "@id": "knora-api:versionDate" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15 + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:isPartOfOtherThingValue" + "@id": "rdfs:label" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15 + "owl:cardinality": 1, + "knora-api:isInherited": true } ], - "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:comment": "Diese Resource-Klasse beschreibt ein Bild eines Dinges", "@type": "owl:Class", - "@id": "anything:Thing" + "@id": "anything:ThingPicture" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Document", - "knora-api:resourceIcon": "thing.png", + "rdfs:label": "Thing with region", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "knora-api:DocumentRepresentation" + "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "anything:hasDocumentTitle" + "@id": "anything:thingHasRegion" + }, + "owl:minCardinality": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:thingHasRegionValue" }, "owl:minCardinality": 0 }, @@ -919,14 +1592,6 @@ "owl:maxCardinality": 1, "knora-api:isInherited": true }, - { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "knora-api:hasDocumentFileValue" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true - }, { "@type": "owl:Restriction", "owl:onProperty": { @@ -1008,25 +1673,17 @@ "knora-api:isInherited": true } ], - "rdfs:comment": "A document about a thing", + "rdfs:comment": "A thing with a region", "@type": "owl:Class", - "@id": "anything:ThingDocument" + "@id": "anything:ThingWithRegion" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Picture of a thing", - "knora-api:resourceIcon": "thing.png", + "rdfs:label": "Thing with representation", "knora-api:canBeInstantiated": true, - "rdfs:subClassOf": [ - { - "@id": "knora-api:StillImageRepresentation" - }, + "rdfs:subClassOf": [ { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:hasPictureTitle" - }, - "owl:minCardinality": 0 + "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", @@ -1103,15 +1760,21 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:hasStandoffLinkTo" + "@id": "knora-api:hasRepresentation" }, - "owl:minCardinality": 0, - "knora-api:isInherited": true + "owl:minCardinality": 0 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:hasStandoffLinkToValue" + "@id": "knora-api:hasRepresentationValue" + }, + "owl:minCardinality": 0 + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasStandoffLinkTo" }, "owl:minCardinality": 0, "knora-api:isInherited": true @@ -1119,9 +1782,9 @@ { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:hasStillImageFileValue" + "@id": "knora-api:hasStandoffLinkToValue" }, - "owl:cardinality": 1, + "owl:minCardinality": 0, "knora-api:isInherited": true }, { @@ -1173,31 +1836,17 @@ "knora-api:isInherited": true } ], - "rdfs:comment": "Diese Resource-Klasse beschreibt ein Bild eines Dinges", + "rdfs:comment": "A thing with a representation", "@type": "owl:Class", - "@id": "anything:ThingPicture" + "@id": "anything:ThingWithRepresentation" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Thing with region", + "rdfs:label": "Thing with sequence number", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "knora-api:Resource" - }, - { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:thingHasRegion" - }, - "owl:minCardinality": 0 - }, - { - "@type": "owl:Restriction", - "owl:onProperty": { - "@id": "anything:thingHasRegionValue" - }, - "owl:minCardinality": 0 + "@id": "anything:Thing" }, { "@type": "owl:Restriction", @@ -1334,182 +1983,226 @@ }, "owl:cardinality": 1, "knora-api:isInherited": true - } - ], - "rdfs:comment": "A thing with a region", - "@type": "owl:Class", - "@id": "anything:ThingWithRegion" - }, - { - "knora-api:isResourceClass": true, - "rdfs:label": "Thing with representation", - "knora-api:canBeInstantiated": true, - "rdfs:subClassOf": [ - { - "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:arkUrl" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasListItem" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 0, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:attachedToProject" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasOtherListItem" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 1, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:attachedToUser" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasOtherThing" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 1, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:creationDate" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasOtherThingValue" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:deleteComment" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasRichtext" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 2, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:deleteDate" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasText" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 3, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:deletedBy" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasDate" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 4, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasIncomingLinkValue" - }, + "@id": "anything:hasInteger" + } + }, + { + "@type": "owl:Restriction", "owl:minCardinality": 0, - "knora-api:isInherited": true + "salsah-gui:guiOrder": 5, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasDecimal" + } }, { + "owl:maxCardinality": 1, "@type": "owl:Restriction", + "salsah-gui:guiOrder": 6, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasPermissions" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasBoolean" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 7, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasRepresentation" - }, - "owl:minCardinality": 0 + "@id": "anything:hasUri" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 9, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasRepresentationValue" - }, - "owl:minCardinality": 0 + "@id": "anything:hasInterval" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 10, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasStandoffLinkTo" - }, + "@id": "anything:hasColor" + } + }, + { + "@type": "owl:Restriction", "owl:minCardinality": 0, - "knora-api:isInherited": true + "salsah-gui:guiOrder": 11, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasGeometry" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 12, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:hasStandoffLinkToValue" - }, + "@id": "anything:hasGeoname" + } + }, + { + "@type": "owl:Restriction", "owl:minCardinality": 0, - "knora-api:isInherited": true + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasThingDocument" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:isDeleted" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasThingDocumentValue" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:lastModificationDate" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasThingPicture" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:userHasPermission" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:hasThingPictureValue" + } + }, + { + "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 13, + "knora-api:isInherited": true, + "owl:onProperty": { + "@id": "anything:hasTimeStamp" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:versionArkUrl" - }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "@id": "anything:isPartOfOtherThing" + } }, { "@type": "owl:Restriction", + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 15, + "knora-api:isInherited": true, "owl:onProperty": { - "@id": "knora-api:versionDate" - }, - "owl:maxCardinality": 1, - "knora-api:isInherited": true + "@id": "anything:isPartOfOtherThingValue" + } }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "rdfs:label" + "@id": "knora-api:seqnum" }, - "owl:cardinality": 1, - "knora-api:isInherited": true + "owl:minCardinality": 0, + "salsah-gui:guiOrder": 100 } ], - "rdfs:comment": "A thing with a representation", + "rdfs:comment": "Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer", "@type": "owl:Class", - "@id": "anything:ThingWithRepresentation" + "@id": "anything:ThingWithSeqnum" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Thing with sequence number", + "rdfs:label": "Trivial thing", + "knora-api:resourceIcon": "thing.png", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "anything:Thing" + "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", @@ -1646,226 +2339,199 @@ }, "owl:cardinality": 1, "knora-api:isInherited": true - }, + } + ], + "rdfs:comment": "Diese Resource-Klasse beschreibt ein unbedeutendes Ding", + "@type": "owl:Class", + "@id": "anything:TrivialThing" + }, + { + "knora-api:isResourceClass": true, + "rdfs:label": "Video Sequence Thing", + "knora-api:canBeInstantiated": true, + "rdfs:subClassOf": [ { - "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0, - "knora-api:isInherited": true, - "owl:onProperty": { - "@id": "anything:hasListItem" - } + "@id": "knora-api:Resource" }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 0, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasOtherListItem" - } + "@id": "knora-api:arkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 1, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasOtherThing" - } + "@id": "knora-api:attachedToProject" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 1, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasOtherThingValue" - } + "@id": "knora-api:attachedToUser" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasRichtext" - } + "@id": "knora-api:creationDate" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 2, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasText" - } + "@id": "knora-api:deleteComment" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 3, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasDate" - } + "@id": "knora-api:deleteDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 4, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasInteger" - } + "@id": "knora-api:deletedBy" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 5, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasDecimal" - } + "@id": "knora-api:hasIncomingLinkValue" + }, + "owl:minCardinality": 0, + "knora-api:isInherited": true }, { - "owl:maxCardinality": 1, "@type": "owl:Restriction", - "salsah-gui:guiOrder": 6, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasBoolean" - } + "@id": "knora-api:hasPermissions" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 7, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasUri" - } - }, - { - "@type": "owl:Restriction", + "@id": "knora-api:hasStandoffLinkTo" + }, "owl:minCardinality": 0, - "salsah-gui:guiOrder": 9, - "knora-api:isInherited": true, - "owl:onProperty": { - "@id": "anything:hasInterval" - } + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 10, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasColor" - } - }, - { - "@type": "owl:Restriction", + "@id": "knora-api:hasStandoffLinkToValue" + }, "owl:minCardinality": 0, - "salsah-gui:guiOrder": 11, - "knora-api:isInherited": true, - "owl:onProperty": { - "@id": "anything:hasGeometry" - } + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 12, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasGeoname" - } + "@id": "knora-api:isDeleted" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingDocument" - } + "@id": "knora-api:lastModificationDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingDocumentValue" - } + "@id": "knora-api:userHasPermission" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingPicture" - } + "@id": "knora-api:versionArkUrl" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasThingPictureValue" - } + "@id": "knora-api:versionDate" + }, + "owl:maxCardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 13, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:hasTimeStamp" - } + "@id": "rdfs:label" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:isPartOfOtherThing" - } + "@id": "knora-api:hasSequenceBounds" + }, + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 }, { "@type": "owl:Restriction", - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 15, - "knora-api:isInherited": true, "owl:onProperty": { - "@id": "anything:isPartOfOtherThingValue" - } + "@id": "knora-api:isSequenceOf" + }, + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 }, { "@type": "owl:Restriction", "owl:onProperty": { - "@id": "knora-api:seqnum" + "@id": "knora-api:isSequenceOfValue" }, - "owl:minCardinality": 0, - "salsah-gui:guiOrder": 100 + "owl:cardinality": 1, + "salsah-gui:guiOrder": 0 } ], - "rdfs:comment": "Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer", + "rdfs:comment": "A Resource representing a subsequence of a video", "@type": "owl:Class", - "@id": "anything:ThingWithSeqnum" + "@id": "anything:VideoSequenceThing" }, { "knora-api:isResourceClass": true, - "rdfs:label": "Trivial thing", - "knora-api:resourceIcon": "thing.png", + "rdfs:label": "Video Thing", "knora-api:canBeInstantiated": true, "rdfs:subClassOf": [ { - "@id": "knora-api:Resource" + "@id": "knora-api:MovingImageRepresentation" + }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "anything:hasTitle" + }, + "owl:maxCardinality": 1 }, { "@type": "owl:Restriction", @@ -1931,6 +2597,14 @@ "owl:minCardinality": 0, "knora-api:isInherited": true }, + { + "@type": "owl:Restriction", + "owl:onProperty": { + "@id": "knora-api:hasMovingImageFileValue" + }, + "owl:cardinality": 1, + "knora-api:isInherited": true + }, { "@type": "owl:Restriction", "owl:onProperty": { @@ -2004,9 +2678,9 @@ "knora-api:isInherited": true } ], - "rdfs:comment": "Diese Resource-Klasse beschreibt ein unbedeutendes Ding", + "rdfs:comment": "A Resource representing a video", "@type": "owl:Class", - "@id": "anything:TrivialThing" + "@id": "anything:VideoThing" }, { "rdfs:label": "A blue thing", @@ -2472,6 +3146,29 @@ }, "@id": "anything:hasTimeStamp" }, + { + "rdfs:label": "Title", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasValue" + }, + "knora-api:isEditable": true, + "knora-api:isResourceProperty": true, + "knora-api:subjectType": { + "@id": "knora-api:Resource" + }, + "@type": "owl:ObjectProperty", + "salsah-gui:guiAttribute": [ + "maxlength=255", + "size=80" + ], + "knora-api:objectType": { + "@id": "knora-api:TextValue" + }, + "salsah-gui:guiElement": { + "@id": "salsah-gui:SimpleText" + }, + "@id": "anything:hasTitle" + }, { "rdfs:label": "URI", "rdfs:subPropertyOf": { diff --git a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.rdf b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.rdf index db51e14020..2238b3097a 100644 --- a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.rdf +++ b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.rdf @@ -12,80 +12,63 @@ 2017-12-19T15:23:42.166Z - + true 1 - - - - - - true - 1 - + true - 0 - + 1 + - thing.png - A document about a thing + true - 1 - + 1 + + true true - 1 - + 1 + + Represents an event in a TextValue true 1 - - - - - - 0 - - - + - true 1 - + @@ -94,27 +77,25 @@ >true 1 - + true - 1 - + 1 + - true - true 1 - + + + @@ -123,7 +104,7 @@ >true 1 - + @@ -132,7 +113,7 @@ >true 1 - + @@ -141,28 +122,26 @@ >true 1 - + + Represents an event in a TextValue true - 0 - + 1 + - Document - true true - 0 - + 1 + @@ -171,16 +150,16 @@ >true 1 - + true - 1 - + 1 + @@ -189,30 +168,16 @@ >true 1 - - - - - - - - 12 - 0 - - - + - true 1 - + @@ -221,51 +186,45 @@ >true 1 - + - 1 - 0 - - - + true + 1 + + + true - 1 - + 1 + - true - 4 - 0 - - - + true + 1 + 7 - 0 - - - + >0 + 1 + @@ -279,55 +238,38 @@ - 0 - 0 - - - + true + 1 + - 15 + true 0 - - - + - 10 + true 0 - - - + true - 1 - - - - - - 2 - 0 - - - + 1 + @@ -339,15 +281,14 @@ + A Resource representing a subsequence of an audio - 2 - 0 - - - + true + 1 + @@ -356,29 +297,25 @@ >true 1 - + 13 - 0 - - - + >0 + 1 + - 11 - 0 - - - + true + 1 + @@ -387,72 +324,72 @@ >true 1 - + + true 13 - 0 - - - + >0 + 1 + + true - 0 - + 1 + - thing.png - true - 13 - 0 - - - + true + 1 + - Thing + true + Audio Sequence Thing true - 1 - + 1 + true - 1 - + 1 + - '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 true - 1 - + 1 + + + + + true - 3 - 0 - - - + true + 1 + - 13 - 0 - - - + true + 1 + - 13 - 0 - - - + true + 1 + @@ -501,18 +434,16 @@ >true 1 - + - 0 - 0 - - - + true + 1 + @@ -521,91 +452,82 @@ >true 1 - + - 5 + true 0 - - - + - 9 - 0 - - - + true + 1 + + Thing with representation true 1 - + - 1 - 0 - - - + true + 1 + + true - 6 - 1 - - - + true + 1 + - 15 - 0 - - - + true + 1 + true - 1 - + 0 + - - true 1 - + @@ -614,35 +536,51 @@ >true 1 - + - - true - 1 - + 0 + + + + + + 0 + + A thing with a representation true - 1 - + 1 + + + true 1 - + + + + + + 0 + 1 + @@ -651,29 +589,25 @@ >true 1 - + - true - Represents an event in a TextValue true - 1 - + 0 + - Represents an event in a TextValue true 1 - + @@ -682,7 +616,7 @@ >true 1 - + @@ -691,7 +625,7 @@ >true 1 - + @@ -700,16 +634,16 @@ >true 1 - + + 0 1 - - - + @@ -718,7 +652,18 @@ >true 1 - + + + + true + + + 0 + 1 + @@ -727,25 +672,28 @@ >true 1 - + true - 1 - + 0 + + true + Video Sequence Thing true 1 - + @@ -754,7 +702,7 @@ >true 1 - + @@ -763,7 +711,7 @@ >true 1 - + @@ -772,7 +720,7 @@ >true 1 - + @@ -781,21 +729,67 @@ >true 1 - + - - + + + true + 0 + + + + A Resource representing a subsequence of a video - true + + + true + 1 + + + + + + Picture of a thing + + + true + 1 + + + + thing.png + + + true + 1 + + + true 1 - + + + + + + true + 1 + @@ -804,7 +798,25 @@ >true 0 - + + + + + + true + 1 + + + + + + true + 1 + @@ -812,19 +824,169 @@ 0 - + + Diese Resource-Klasse beschreibt ein Bild eines Dinges + + + true + 1 + + + + + + true + 1 + + + + + + true + 0 + + + + true + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 0 + + + + + + true + 1 + + + + + + true + 1 + + + true + + + true + 1 + + + + + + + true + 1 + + + + + + + + true + 1 + + + + + + true + 0 + + + + + + true + 1 + + + + + + true + 0 + + + + + + true + 1 + + + true 1 - + @@ -833,35 +995,650 @@ >true 1 - + + + + + + true + 1 + + + + + + true + 1 + + + + + + 1 + + + + + + + + true + 0 + + + + true + + true + + + true + 1 + + + + + + true + 1 + + + + A Resource representing a video + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + Video Thing + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + + + true + 1 + + + + thing.png + A document about a thing + + + true + 1 + + + + + + 0 + + + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + true + + + true + 1 + + + + + + true + 1 + + + + + + true + 0 + + + + + + true + 0 + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + Document + true + + + true + 0 + + + + + + true + 1 + + + + + + + + + 5 + 0 + + + + + + + + 2 + 0 + + + + + + + + 12 + 0 + + + + + + + + 9 + 0 + + + + + + + + 7 + 0 + + + + + + true + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 1 + + + + + + true + 0 + + + + + + 13 + 0 + + + + + + + + 10 + 0 + + + + + + + + 13 + 0 + + + + + + + + true + 1 + + + + + + true + 1 + + + + + + 2 + 0 + + + + + + + + 15 + 0 + + + + + + thing.png + + + 13 + 0 + + + + + + + + 13 + 0 + + + + + + true + + + true + 1 + + + + + + 13 + 0 + + + + + + Thing + + + 1 + 0 + + + + + + + + true + 1 + + + + + + true + 1 + + + + + + 3 + 0 + + + + + + '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 + + + 15 + 0 + + + + + + + + true + 1 + + + + + + 4 + 0 + + + + + + + + 1 + 0 + + + + + + + + 0 + 0 + + + - true - 1 - + 6 + 1 + + + true - 1 - + 0 + - Thing with region true 1 - + @@ -870,24 +1647,28 @@ >true 0 - + - true - 1 - + 0 + 0 + + + + 11 0 - + @@ -895,9 +1676,9 @@ true - 1 - + 1 + @@ -906,7 +1687,7 @@ >true 1 - + @@ -915,16 +1696,18 @@ >true 1 - + + + true - 0 - + 1 + @@ -933,72 +1716,38 @@ >true 1 - - - - - - true - 1 - + - A thing with a region + true + Audio Thing true - 1 - + 0 + + A Resource representing an audio true 1 - + - - - true 1 - - - - - - - - - true - 11 - 0 - - - - - + - true - 5 - 0 @@ -1007,7 +1756,7 @@ >true 1 - + @@ -1016,38 +1765,35 @@ >true 1 - + true - 0 - + 1 + - - - true - 0 - 0 + 1 + + true 1 - + @@ -1056,40 +1802,36 @@ >true 1 - + true - 1 - + 0 + + true - - - true - 13 - 0 + 1 + - 63 - 0 - - - + true + 1 + @@ -1103,67 +1845,49 @@ - - - true - 3 0 + - - - true - 6 - 1 + 1 + - - - true - 15 - 0 + 1 + - - - true - 13 - 0 + 1 + + + - - - true - 13 - 0 + 1 + @@ -1172,136 +1896,112 @@ >true 1 - + + + true - - - true - 2 - 0 + 1 + true - 0 - + 1 + - Blue thing - - - true - 9 - 0 + 1 + - 63 - 0 - - - + true + 1 + - - - true - 10 - 0 + 1 + - - - true - 13 - 0 + 1 + - Diese Resource-Klasse beschreibt ein blaues Ding true 1 - + + true - true 0 - + + + - - - true - 12 0 + + Thing with region true - 1 - + 0 + - true - - - true - 13 - 0 + 1 + @@ -1310,79 +2010,73 @@ >true 1 - + true - 1 - + 1 + + A thing with a region - - - true - 15 - 0 + 1 + - - - true - 0 0 + + 0 - + + + + + true - 7 - 0 + 1 + + + - - - true - 4 - 0 + 1 + - true true 1 - + @@ -1391,60 +2085,53 @@ >true 1 - + - - + true 2 + >13 0 - - - + true 2 + >0 0 - - - true - 5 - 0 + 1 + - + true 13 + >2 0 @@ -1452,34 +2139,38 @@ - + true 13 - 0 + >6 + 1 + + + true + 12 0 - - + true 12 + >11 0 @@ -1487,34 +2178,38 @@ - + true 0 + >13 0 + + + true - 1 - + 3 + 0 - + true 1 + >13 0 @@ -1525,27 +2220,18 @@ >true 1 - - - - - - true - 1 - + - + true 11 + >0 0 @@ -1553,65 +2239,52 @@ - + true 1 - 0 - - - - - 100 + >9 0 - - - - true - 6 1 + true - 1 - + 0 + true - 1 - + 0 + - + true 3 + >15 0 @@ -1619,45 +2292,71 @@ - + true 4 + >2 0 + + + true - 1 - + 10 + 0 + + + true + 5 0 - + 63 + 0 - + + + + + true + 1 + + + + + 9 + >63 0 + + + @@ -1666,7 +2365,7 @@ >true 1 - + @@ -1675,53 +2374,51 @@ >true 1 - + - Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer - - - true - 7 - 0 + 1 + + Blue thing true - 1 - + 1 + + Diese Resource-Klasse beschreibt ein blaues Ding + + + true + 7 0 - - Thing with sequence number + true - - - true - 13 - 0 + 1 + @@ -1730,13 +2427,13 @@ >true 1 - + - + true @@ -1749,12 +2446,12 @@ - + true 2 + >4 0 @@ -1762,33 +2459,31 @@ - + true 10 + >15 0 + true - - - true - 0 0 + - + true @@ -1798,49 +2493,51 @@ >0 + true - 1 - + 1 + - true + + - - - true - 15 0 + - + + + true - 1 - + 2 + 0 - true + + + true - 1 - + 1 + 0 @@ -1849,52 +2546,46 @@ >true 1 - + - + true 15 + >13 0 - - - - - - true - 1 - - - - true + + + true - 1 - + 4 + 0 + + + true + 10 0 - @@ -1903,34 +2594,42 @@ >true 1 - + + + + true - 1 - + 13 + 0 true - 1 - + 1 + + + + true - 1 - + 5 + 0 @@ -1946,44 +2645,18 @@ true - 0 - - - - - - 0 - - - - Thing with representation - - - 0 - - - - true - - - true - 1 - + 1 + true - 0 - + 1 + @@ -1995,6 +2668,7 @@ + Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer true 1 - + + + + true - 1 - + 13 + 0 - A thing with a representation + + + true - 1 - + 15 + 0 true - 1 - + 1 + - - + + + true - 1 - + 9 + 0 + + + true - 1 - + 0 + 0 - + Thing with sequence number + + + true - 1 - + 7 + 0 - thing.png - true - true + 100 0 - + true - 1 - + 0 + true - 1 - + 0 + - Diese Resource-Klasse beschreibt ein unbedeutendes Ding + + + true + 3 0 - + + + true - 1 - + 13 + 0 + + + true - 1 - + 1 + 0 - Trivial thing + + + true - 1 - + 13 + 0 - true true 1 - + + true + + + true - 1 - + 11 + 0 + + + true - 1 - + 2 + 0 @@ -2174,39 +2884,51 @@ >true 1 - + + + + + true - 1 - + 15 + 0 + true + + + true + 12 0 - + + + true - 1 - + 0 + 0 - - - Picture of a thing true - 0 - + 1 + - thing.png + + + true - 0 - + 6 + 1 + + true 1 - + @@ -2250,44 +2977,39 @@ >true 1 - + + true - 1 - - - - - 0 - - - + + thing.png + true + Diese Resource-Klasse beschreibt ein unbedeutendes Ding true 1 - + - Diese Resource-Klasse beschreibt ein Bild eines Dinges true - 1 - + 1 + @@ -2296,66 +3018,64 @@ >true 1 - + - true true 1 - + true - 1 - + 0 + - true true 1 - + + Trivial thing true - 1 - + 0 + + true true 1 - + - true - 0 - + 1 + @@ -2364,7 +3084,16 @@ >true 1 - + + + + + + true + 1 + @@ -2376,13 +3105,22 @@ + + + true + 1 + + + true 1 - + @@ -2527,6 +3265,19 @@ + + true + + Title + size=80 + + + maxlength=255 + true + + diff --git a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl index e4e6cd7640..c2f4feae42 100644 --- a/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/anythingOntologyWithValueObjects.ttl @@ -6,139 +6,145 @@ @prefix salsah-gui: . @prefix xsd: . -anything:hasGeoname rdf:type owl:ObjectProperty ; - rdfs:label "Geoname" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:GeonameValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Geonames . - -anything:hasThingPicture - rdf:type owl:ObjectProperty ; - rdfs:label "Picture of a thing" ; - rdfs:subPropertyOf knora-api:hasRepresentation ; - knora-api:isEditable true ; - knora-api:isLinkProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType anything:ThingPicture ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . - -anything:hasOtherListItem - rdf:type owl:ObjectProperty ; - rdfs:label "Other list element" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:ListValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiAttribute "hlist=" ; - salsah-gui:guiElement salsah-gui:List . - -anything:BlueThing rdf:type owl:Class ; - rdfs:comment "Diese Resource-Klasse beschreibt ein blaues Ding" ; - rdfs:label "Blue thing" ; - rdfs:subClassOf anything:Thing ; +anything:ThingDocument + rdf:type owl:Class ; + rdfs:comment "A document about a thing" ; + rdfs:label "Document" ; + rdfs:subClassOf knora-api:DocumentRepresentation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type 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 [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:hasDocumentFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 11 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 63 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasBlueThingValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDocumentTitle ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasColor + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true ; + knora-api:resourceIcon "thing.png" . + +anything:isPartOfOtherThingValue + rdf:type owl:ObjectProperty ; + rdfs:label "is part of" ; + rdfs:subPropertyOf knora-api:isPartOfValue ; + knora-api:isEditable true ; + knora-api:isLinkValueProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:LinkValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Searchbox . + +anything:hasOtherThingValue + rdf:type owl:ObjectProperty ; + rdfs:label "Another thing" ; + rdfs:subPropertyOf knora-api:hasLinkToValue ; + knora-api:isEditable true ; + knora-api:isLinkValueProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:LinkValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Searchbox . + +anything:VideoSequenceThing + rdf:type owl:Class ; + rdfs:comment "A Resource representing a subsequence of a video" ; + rdfs:label "Video Sequence Thing" ; + rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:isSequenceOf ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -147,286 +153,215 @@ anything:BlueThing rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasSequenceBounds ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasText + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:isSequenceOfValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasRichtext + owl:onProperty knora-api:hasIncomingLinkValue ] ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true . + +anything:ThingWithSeqnum + rdf:type owl:Class ; + rdfs:comment "Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer" ; + rdfs:label "Thing with sequence number" ; + rdfs:subClassOf anything:Thing ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 63 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasBlueThing + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasUri ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 9 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 5 ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasThingPicture ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - knora-api:canBeInstantiated true ; - knora-api:isResourceClass true . - -anything:hasPictureTitle - rdf:type 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 - rdf:type owl:ObjectProperty ; - rdfs:label "has region" ; - rdfs:subPropertyOf knora-api:hasLinkTo ; - knora-api:isEditable true ; - knora-api:isLinkProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:Region ; - knora-api:subjectType anything:ThingWithRegion ; - salsah-gui:guiElement salsah-gui:Searchbox . - -anything:ThingPicture - rdf:type owl:Class ; - rdfs:comment "Diese Resource-Klasse beschreibt ein Bild eines Dinges" ; - rdfs:label "Picture of a thing" ; - rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasColor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + salsah-gui:guiOrder 11 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty anything:hasPictureTitle - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 100 ; + owl:minCardinality 0 ; + owl:onProperty knora-api:seqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:onProperty anything:hasListItem ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + salsah-gui:guiOrder 1 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherThingValue ] ; - knora-api:canBeInstantiated true ; - knora-api:isResourceClass true ; - knora-api:resourceIcon "thing.png" . - -anything:hasDocumentTitle - rdf:type owl:ObjectProperty ; - rdfs:label "document title" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:TextValue ; - knora-api:subjectType anything:ThingDocument ; - salsah-gui:guiAttribute "size=80" , "maxlength=255" ; - salsah-gui:guiElement salsah-gui:SimpleText . - -anything:hasInteger rdf:type owl:ObjectProperty ; - rdfs:label "Integer" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:IntValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiAttribute "max=-1" , "min=0" ; - salsah-gui:guiElement salsah-gui:Spinbox . - -anything:ThingWithSeqnum - rdf:type owl:Class ; - rdfs:comment "Diese Resource-Klasse beschreibt ein Ding mit einer Sequenznummer" ; - rdfs:label "Thing with sequence number" ; - rdfs:subClassOf anything:Thing ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasColor + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -435,20 +370,14 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:onProperty anything:hasThingPictureValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasText + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -458,9 +387,9 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + owl:onProperty anything:hasInteger ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -469,36 +398,35 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 6 ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty anything:hasBoolean ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + salsah-gui:guiOrder 1 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherThing ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -508,28 +436,20 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 100 ; - owl:minCardinality 0 ; - owl:onProperty knora-api:seqnum + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -538,67 +458,293 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 6 ; owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 11 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true . + +anything:StandoffEventTag + rdf:type owl:Class ; + rdfs:comment "Represents an event in a TextValue" ; + rdfs:label "Represents an event in a TextValue" ; + rdfs:subClassOf knora-api:StandoffDateTag ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartDay + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndDay + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasStartEra + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndMonth + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty anything:standoffEventTagHasDescription + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartMonth + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasCalendar + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndEra + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasStartYear + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndYear + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; + knora-api:isStandoffClass true . + +anything:hasThingPicture + rdf:type owl:ObjectProperty ; + rdfs:label "Picture of a thing" ; + rdfs:subPropertyOf knora-api:hasRepresentation ; + knora-api:isEditable true ; + knora-api:isLinkProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType anything:ThingPicture ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Searchbox . + +anything:hasTimeStamp + rdf:type owl:ObjectProperty ; + rdfs:label "Timestamp" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:TimeValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:TimeStamp . + +anything:hasListItem rdf:type owl:ObjectProperty ; + rdfs:label "List element" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:ListValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiAttribute "hlist=" ; + salsah-gui:guiElement salsah-gui:List . + +anything:BlueThing rdf:type owl:Class ; + rdfs:comment "Diese Resource-Klasse beschreibt ein blaues Ding" ; + rdfs:label "Blue thing" ; + rdfs:subClassOf anything:Thing ; + rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 63 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasBlueThing ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:onProperty anything:hasThingDocumentValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasBoolean + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasUri + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasRichtext + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 9 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasInterval + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasColor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasThingDocument + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 63 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasBlueThingValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThing + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingPicture + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; salsah-gui:guiOrder 13 ; @@ -607,8 +753,9 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -618,47 +765,94 @@ anything:ThingWithSeqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty anything:hasGeometry + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasListItem + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 4 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasGeoname + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 15 ; + owl:minCardinality 0 ; + owl:onProperty anything:isPartOfOtherThingValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDecimal ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . -anything:isPartOfOtherThing +anything:hasThingDocument rdf:type owl:ObjectProperty ; - rdfs:label "is part of" ; - rdfs:subPropertyOf knora-api:isPartOf ; + rdfs:label "document about a thing" ; + rdfs:subPropertyOf knora-api:hasRepresentation ; knora-api:isEditable true ; knora-api:isLinkProperty true ; knora-api:isResourceProperty true ; - knora-api:objectType anything:Thing ; + knora-api:objectType anything:ThingDocument ; knora-api:subjectType anything:Thing ; salsah-gui:guiElement salsah-gui:Searchbox . -anything:thingHasRegionValue - rdf:type owl:ObjectProperty ; - rdfs:label "has region" ; - rdfs:subPropertyOf knora-api:hasLinkToValue ; - knora-api:isEditable true ; - knora-api:isLinkValueProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:LinkValue ; - knora-api:subjectType anything:ThingWithRegion . +anything:thingHasRegion + rdf:type owl:ObjectProperty ; + rdfs:label "has region" ; + rdfs:subPropertyOf knora-api:hasLinkTo ; + knora-api:isEditable true ; + knora-api:isLinkProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:Region ; + knora-api:subjectType anything:ThingWithRegion ; + salsah-gui:guiElement salsah-gui:Searchbox . -anything:hasThingDocumentValue +anything:hasThingPictureValue rdf:type owl:ObjectProperty ; - rdfs:label "document about a thing" ; + rdfs:label "Picture of a thing" ; rdfs:subPropertyOf knora-api:hasRepresentationValue ; knora-api:isEditable true ; knora-api:isLinkValueProperty true ; @@ -667,24 +861,32 @@ anything:hasThingDocumentValue knora-api:subjectType anything:Thing ; salsah-gui:guiElement salsah-gui:Searchbox . -anything:hasBlueThingValue - rdf:type owl:ObjectProperty ; - rdfs:label "A blue thing" ; - rdfs:subPropertyOf anything:hasOtherThingValue ; - knora-api:isEditable true ; - knora-api:isLinkValueProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:LinkValue ; - knora-api:subjectType anything:Thing . +anything:hasTitle rdf:type 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 knora-api:Resource ; + salsah-gui:guiAttribute "size=80" , "maxlength=255" ; + salsah-gui:guiElement salsah-gui:SimpleText . -anything:hasGeometry rdf:type owl:ObjectProperty ; - rdfs:label "Geometry" ; +anything:hasOtherListItem + rdf:type owl:ObjectProperty ; + rdfs:label "Other list element" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:GeomValue ; + knora-api:objectType knora-api:ListValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Geometry . + salsah-gui:guiAttribute "hlist=" ; + salsah-gui:guiElement salsah-gui:List . + + + rdf:type owl:Ontology ; + rdfs:label "The anything ontology" ; + knora-api:attachedToProject ; + knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp . anything:TrivialThing rdf:type owl:Class ; @@ -693,99 +895,99 @@ anything:TrivialThing rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; knora-api:resourceIcon "thing.png" . -anything:hasDecimal rdf:type owl:ObjectProperty ; - rdfs:label "Decimal number" ; +anything:hasUri rdf:type owl:ObjectProperty ; + rdfs:label "URI" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:DecimalValue ; + knora-api:objectType knora-api:UriValue ; knora-api:subjectType anything:Thing ; salsah-gui:guiAttribute "size=80" , "maxlength=255" ; salsah-gui:guiElement salsah-gui:SimpleText . @@ -795,56 +997,45 @@ anything:standoffEventTagHasDescription knora-api:objectType xsd:string ; knora-api:subjectType anything:StandoffEventTag . -anything:hasThingDocument - rdf:type owl:ObjectProperty ; - rdfs:label "document about a thing" ; - rdfs:subPropertyOf knora-api:hasRepresentation ; - knora-api:isEditable true ; - knora-api:isLinkProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType anything:ThingDocument ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . - -anything:hasBlueThing - rdf:type owl:ObjectProperty ; - rdfs:label "A blue thing" ; - rdfs:subPropertyOf anything:hasOtherThing ; - knora-api:isEditable true ; - knora-api:isLinkProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType anything:BlueThing ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . +anything:hasThingDocumentValue + rdf:type owl:ObjectProperty ; + rdfs:label "document about a thing" ; + rdfs:subPropertyOf knora-api:hasRepresentationValue ; + knora-api:isEditable true ; + knora-api:isLinkValueProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:LinkValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Searchbox . -anything:ThingDocument - rdf:type owl:Class ; - rdfs:comment "A document about a thing" ; - rdfs:label "Document" ; - rdfs:subClassOf knora-api:DocumentRepresentation ; +anything:VideoThing rdf:type owl:Class ; + rdfs:comment "A Resource representing a video" ; + rdfs:label "Video Thing" ; + rdfs:subClassOf knora-api:MovingImageRepresentation ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty anything:hasDocumentTitle + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -853,63 +1044,62 @@ anything:ThingDocument ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasDocumentFileValue + owl:onProperty knora-api:hasMovingImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasTitle ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -917,72 +1107,61 @@ anything:ThingDocument owl:onProperty knora-api:deleteComment ] ; knora-api:canBeInstantiated true ; - knora-api:isResourceClass true ; - knora-api:resourceIcon "thing.png" . + knora-api:isResourceClass true . -anything:hasRichtext rdf:type owl:ObjectProperty ; - rdfs:label "Text" ; +anything:hasInteger rdf:type owl:ObjectProperty ; + rdfs:label "Integer" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:TextValue ; + knora-api:objectType knora-api:IntValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Richtext . + salsah-gui:guiAttribute "max=-1" , "min=0" ; + salsah-gui:guiElement salsah-gui:Spinbox . -anything:hasInterval rdf:type owl:ObjectProperty ; - rdfs:label "Time interval" ; +anything:hasGeoname rdf:type owl:ObjectProperty ; + rdfs:label "Geoname" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:IntervalValue ; + knora-api:objectType knora-api:GeonameValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Interval . - -anything:isPartOfOtherThingValue - rdf:type owl:ObjectProperty ; - rdfs:label "is part of" ; - rdfs:subPropertyOf knora-api:isPartOfValue ; - knora-api:isEditable true ; - knora-api:isLinkValueProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:LinkValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . + salsah-gui:guiElement salsah-gui:Geonames . -anything:ThingWithRegion +anything:ThingPicture rdf:type owl:Class ; - rdfs:comment "A thing with a region" ; - rdfs:label "Thing with region" ; - rdfs:subClassOf knora-api:Resource ; + rdfs:comment "Diese Resource-Klasse beschreibt ein Bild eines Dinges" ; + rdfs:label "Picture of a thing" ; + rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -991,51 +1170,52 @@ anything:ThingWithRegion ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty anything:thingHasRegionValue + owl:onProperty anything:hasPictureTitle ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty anything:thingHasRegion + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1044,66 +1224,96 @@ anything:ThingWithRegion ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; knora-api:canBeInstantiated true ; - knora-api:isResourceClass true . + knora-api:isResourceClass true ; + knora-api:resourceIcon "thing.png" . -anything:hasListItem rdf:type owl:ObjectProperty ; - rdfs:label "List element" ; +anything:hasInterval rdf:type owl:ObjectProperty ; + rdfs:label "Time interval" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:ListValue ; + knora-api:objectType knora-api:IntervalValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiAttribute "hlist=" ; - salsah-gui:guiElement salsah-gui:List . + salsah-gui:guiElement salsah-gui:Interval . -anything:hasThingPictureValue +anything:hasBlueThingValue rdf:type owl:ObjectProperty ; - rdfs:label "Picture of a thing" ; - rdfs:subPropertyOf knora-api:hasRepresentationValue ; + rdfs:label "A blue thing" ; + rdfs:subPropertyOf anything:hasOtherThingValue ; knora-api:isEditable true ; knora-api:isLinkValueProperty true ; knora-api:isResourceProperty true ; knora-api:objectType knora-api:LinkValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . + knora-api:subjectType anything:Thing . + +anything:hasDocumentTitle + rdf:type owl:ObjectProperty ; + rdfs:label "document title" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:TextValue ; + knora-api:subjectType anything:ThingDocument ; + salsah-gui:guiAttribute "size=80" , "maxlength=255" ; + salsah-gui:guiElement salsah-gui:SimpleText . anything:Thing rdf:type 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 [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 4 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + owl:onProperty anything:hasInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + owl:onProperty anything:hasOtherThingValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingPicture + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherListItem ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1111,359 +1321,417 @@ anything:Thing rdf:type owl:Class ; owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 15 ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThing + owl:onProperty anything:hasGeometry ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasColor + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasThingDocumentValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:onProperty anything:hasText ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPictureValue + owl:onProperty anything:hasListItem ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + owl:onProperty anything:hasInterval + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasBoolean + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; owl:onProperty anything:hasRichtext ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasUri + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingPictureValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:hasPermissions ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasColor + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 1 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherThing + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasGeoname + ] ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true ; + knora-api:resourceIcon "thing.png" . + +anything:hasGeometry rdf:type owl:ObjectProperty ; + rdfs:label "Geometry" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:GeomValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Geometry . + +anything:AudioThing rdf:type owl:Class ; + rdfs:comment "A Resource representing an audio" ; + rdfs:label "Audio Thing" ; + rdfs:subClassOf knora-api:AudioRepresentation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLinkValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasUri + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasText + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasAudioFileValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasTitle ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:creationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:lastModificationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:arkUrl ] ; knora-api:canBeInstantiated true ; - knora-api:isResourceClass true ; - knora-api:resourceIcon "thing.png" . + knora-api:isResourceClass true . -anything:StandoffEventTag - rdf:type owl:Class ; - rdfs:comment "Represents an event in a TextValue" ; - rdfs:label "Represents an event in a TextValue" ; - rdfs:subClassOf knora-api:StandoffDateTag ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty anything:standoffEventTagHasDescription - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; - knora-api:isStandoffClass true . +anything:hasColor rdf:type owl:ObjectProperty ; + rdfs:label "Color" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:ColorValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiElement salsah-gui:Colorpicker . -anything:hasText rdf:type owl:ObjectProperty ; - rdfs:label "Text" ; +anything:hasDate rdf:type owl:ObjectProperty ; + rdfs:label "Date" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:TextValue ; + knora-api:objectType knora-api:DateValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiAttribute "size=80" , "maxlength=255" ; - salsah-gui:guiElement salsah-gui:SimpleText . + salsah-gui:guiElement salsah-gui:Date . -anything:hasUri rdf:type owl:ObjectProperty ; - rdfs:label "URI" ; +anything:hasRichtext rdf:type owl:ObjectProperty ; + rdfs:label "Text" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:UriValue ; + knora-api:objectType knora-api:TextValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiAttribute "size=80" , "maxlength=255" ; - salsah-gui:guiElement salsah-gui:SimpleText . + salsah-gui:guiElement salsah-gui:Richtext . -anything:hasOtherThing +anything:hasBlueThing rdf:type owl:ObjectProperty ; - rdfs:label "Another thing" ; - rdfs:subPropertyOf knora-api:hasLinkTo ; + rdfs:label "A blue thing" ; + rdfs:subPropertyOf anything:hasOtherThing ; knora-api:isEditable true ; knora-api:isLinkProperty true ; knora-api:isResourceProperty true ; - knora-api:objectType anything:Thing ; + knora-api:objectType anything:BlueThing ; knora-api:subjectType anything:Thing ; salsah-gui:guiElement salsah-gui:Searchbox . - - rdf:type owl:Ontology ; - rdfs:label "The anything ontology" ; - knora-api:attachedToProject ; - knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp . - -anything:hasDate rdf:type owl:ObjectProperty ; - rdfs:label "Date" ; +anything:hasText rdf:type owl:ObjectProperty ; + rdfs:label "Text" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:DateValue ; + knora-api:objectType knora-api:TextValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Date . + salsah-gui:guiAttribute "size=80" , "maxlength=255" ; + salsah-gui:guiElement salsah-gui:SimpleText . -anything:hasColor rdf:type owl:ObjectProperty ; - rdfs:label "Color" ; +anything:hasBoolean rdf:type owl:ObjectProperty ; + rdfs:label "Boolean value" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:ColorValue ; + knora-api:objectType knora-api:BooleanValue ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Colorpicker . + salsah-gui:guiElement salsah-gui:Checkbox . -anything:hasTimeStamp +anything:isPartOfOtherThing rdf:type owl:ObjectProperty ; - rdfs:label "Timestamp" ; - rdfs:subPropertyOf knora-api:hasValue ; + rdfs:label "is part of" ; + rdfs:subPropertyOf knora-api:isPartOf ; knora-api:isEditable true ; + knora-api:isLinkProperty true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:TimeValue ; + knora-api:objectType anything:Thing ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:TimeStamp . + salsah-gui:guiElement salsah-gui:Searchbox . -anything:hasBoolean rdf:type owl:ObjectProperty ; - rdfs:label "Boolean value" ; +anything:hasDecimal rdf:type owl:ObjectProperty ; + rdfs:label "Decimal number" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isEditable true ; knora-api:isResourceProperty true ; - knora-api:objectType knora-api:BooleanValue ; + knora-api:objectType knora-api:DecimalValue ; + knora-api:subjectType anything:Thing ; + salsah-gui:guiAttribute "size=80" , "maxlength=255" ; + salsah-gui:guiElement salsah-gui:SimpleText . + +anything:thingHasRegionValue + rdf:type owl:ObjectProperty ; + rdfs:label "has region" ; + rdfs:subPropertyOf knora-api:hasLinkToValue ; + knora-api:isEditable true ; + knora-api:isLinkValueProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:LinkValue ; + knora-api:subjectType anything:ThingWithRegion . + +anything:hasOtherThing + rdf:type owl:ObjectProperty ; + rdfs:label "Another thing" ; + rdfs:subPropertyOf knora-api:hasLinkTo ; + knora-api:isEditable true ; + knora-api:isLinkProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType anything:Thing ; knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Checkbox . + salsah-gui:guiElement salsah-gui:Searchbox . -anything:ThingWithRepresentation +anything:ThingWithRegion rdf:type owl:Class ; - rdfs:comment "A thing with a representation" ; - rdfs:label "Thing with representation" ; + rdfs:comment "A thing with a region" ; + rdfs:label "Thing with region" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:userHasPermission ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty anything:thingHasRegionValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -1472,13 +1740,85 @@ anything:ThingWithRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:attachedToProject ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty anything:thingHasRegion + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true . + +anything:AudioSequenceThing + rdf:type owl:Class ; + rdfs:comment "A Resource representing a subsequence of an audio" ; + rdfs:label "Audio Sequence Thing" ; + rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:isSequenceOf + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasSequenceBounds + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1487,13 +1827,48 @@ anything:ThingWithRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:versionDate ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty knora-api:isSequenceOfValue + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1502,7 +1877,25 @@ anything:ThingWithRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl + ] ; + knora-api:canBeInstantiated true ; + knora-api:isResourceClass true . + +anything:ThingWithRepresentation + rdf:type owl:Class ; + rdfs:comment "A thing with a representation" ; + rdfs:label "Thing with representation" ; + rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1514,14 +1907,40 @@ anything:ThingWithRepresentation owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasRepresentationValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; @@ -1530,12 +1949,16 @@ anything:ThingWithRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasRepresentationValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1544,24 +1967,29 @@ anything:ThingWithRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasStandoffLinkToValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . -anything:hasOtherThingValue - rdf:type owl:ObjectProperty ; - rdfs:label "Another thing" ; - rdfs:subPropertyOf knora-api:hasLinkToValue ; - knora-api:isEditable true ; - knora-api:isLinkValueProperty true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:LinkValue ; - knora-api:subjectType anything:Thing ; - salsah-gui:guiElement salsah-gui:Searchbox . +anything:hasPictureTitle + rdf:type 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 . diff --git a/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl b/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl index 39748cc3f0..9590271821 100644 --- a/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl +++ b/test_data/ontologyR2RV2/anythingThingWithAllLanguages.ttl @@ -19,47 +19,62 @@ anything:Thing rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 4 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasInteger ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty anything:hasBoolean + salsah-gui:guiOrder 0 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasOtherListItem + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasTimeStamp ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 15 ; - owl:minCardinality 0 ; - owl:onProperty anything:isPartOfOtherThingValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty anything:hasUri + owl:onProperty anything:hasDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 0 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocument + owl:onProperty anything:hasListItem + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 10 ; @@ -68,43 +83,43 @@ anything:Thing rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPicture + owl:onProperty anything:hasOtherThingValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasThingDocumentValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 7 ; owl:minCardinality 0 ; - owl:onProperty anything:hasRichtext + owl:onProperty anything:hasUri ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInterval + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 1 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDate + owl:onProperty anything:hasOtherThing + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 15 ; @@ -112,19 +127,19 @@ anything:Thing rdf:type owl:Class ; owl:onProperty anything:isPartOfOtherThing ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasTimeStamp + owl:onProperty anything:hasText ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 11 ; owl:minCardinality 0 ; - owl:onProperty anything:hasText + owl:onProperty anything:hasGeometry ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherListItem + owl:onProperty anything:hasGeoname ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -132,84 +147,69 @@ anything:Thing rdf:type owl:Class ; owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeometry - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty anything:hasDecimal ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 9 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThingValue + owl:onProperty anything:hasInterval ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasListItem + owl:onProperty anything:hasThingDocument ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasGeoname - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty anything:hasThingPictureValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty anything:hasDecimal + owl:onProperty anything:hasRichtext ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 13 ; owl:minCardinality 0 ; - owl:onProperty anything:hasThingPictureValue + owl:onProperty anything:hasThingPicture ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 4 ; - owl:minCardinality 0 ; - owl:onProperty anything:hasInteger + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty anything:hasBoolean + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; + salsah-gui:guiOrder 15 ; owl:minCardinality 0 ; - owl:onProperty anything:hasOtherThing + owl:onProperty anything:isPartOfOtherThingValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:minCardinality 0 ; + owl:onProperty anything:hasThingDocumentValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl index aa6e4b847a..695ea17da3 100644 --- a/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/boxOntologyWithValueObjects.ttl @@ -17,88 +17,88 @@ example-box:Box rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkToValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 0 ; owl:maxCardinality 1 ; owl:onProperty example-box:hasName ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/imagesBild.ttl b/test_data/ontologyR2RV2/imagesBild.ttl index e00bbbe54b..0f93a6ed8a 100644 --- a/test_data/ontologyR2RV2/imagesBild.ttl +++ b/test_data/ontologyR2RV2/imagesBild.ttl @@ -16,55 +16,30 @@ images:bild rdf:type owl:Class ; rdfs:comment "An image of the demo image collection" ; rdfs:label "Image" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty images:bildnr + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty images:negativnummer ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:cardinality 1 ; - owl:onProperty images:titel - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 8 ; - owl:cardinality 1 ; - owl:onProperty images:erfassungsdatum + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; - owl:maxCardinality 1 ; - owl:onProperty images:copyrightValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:maxCardinality 1 ; - owl:onProperty images:urheberValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 4 ; @@ -72,39 +47,34 @@ images:bild rdf:type owl:Class ; owl:onProperty images:jahreszeit ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty images:hatBildformat + salsah-gui:guiOrder 6 ; + owl:cardinality 1 ; + owl:onProperty images:jahr_exakt ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; owl:cardinality 1 ; owl:onProperty images:signatur ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty images:hatBildformatValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:maxCardinality 1 ; + owl:onProperty images:copyrightValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 10 ; owl:cardinality 1 ; - owl:onProperty images:description + owl:onProperty images:bearbeiter ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -112,84 +82,114 @@ images:bild rdf:type owl:Class ; owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty images:negativnummer + salsah-gui:guiOrder 9 ; + owl:cardinality 1 ; + owl:onProperty images:mutationsdatum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:minCardinality 0 ; + owl:onProperty images:hatBildformat + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 13 ; + owl:maxCardinality 1 ; + owl:onProperty images:copyright + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:cardinality 1 ; + owl:onProperty images:jahrzehnt ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 12 ; owl:maxCardinality 1 ; owl:onProperty images:urheber ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 8 ; + owl:cardinality 1 ; + owl:onProperty images:erfassungsdatum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:cardinality 1 ; - owl:onProperty images:mutationsdatum - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 13 ; + salsah-gui:guiOrder 12 ; owl:maxCardinality 1 ; - owl:onProperty images:copyright + owl:onProperty images:urheberValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; + salsah-gui:guiOrder 2 ; owl:cardinality 1 ; - owl:onProperty images:jahr_exakt + owl:onProperty images:bildnr ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 3 ; owl:cardinality 1 ; - owl:onProperty images:jahrzehnt + owl:onProperty images:description ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLinkValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:cardinality 1 ; - owl:onProperty images:bearbeiter + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:minCardinality 0 ; - owl:onProperty images:hatBildformatValue + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty images:titel ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaBook.ttl b/test_data/ontologyR2RV2/incunabulaBook.ttl index 28e95e3216..9c6b3401f6 100644 --- a/test_data/ontologyR2RV2/incunabulaBook.ttl +++ b/test_data/ontologyR2RV2/incunabulaBook.ttl @@ -17,64 +17,59 @@ incunabula:book rdf:type owl:Class ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 7 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:onProperty incunabula:url ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation + salsah-gui:guiOrder 1 ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty incunabula:note + owl:onProperty incunabula:hasAuthor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; + salsah-gui:guiOrder 3 ; owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 4 ; @@ -83,83 +78,88 @@ incunabula:book rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; + salsah-gui:guiOrder 5 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:location + owl:onProperty incunabula:pubdate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 9 ; owl:maxCardinality 1 ; owl:onProperty incunabula:physical_desc ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:location ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:book_comment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 10 ; owl:minCardinality 0 ; - owl:onProperty incunabula:hasAuthor + owl:onProperty incunabula:note ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:description + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl b/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl index 9bf38a2c71..2c8cdc33e8 100644 --- a/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl +++ b/test_data/ontologyR2RV2/incunabulaOntologySimple.ttl @@ -24,73 +24,73 @@ incunabula:book rdf:type owl:Class ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:location + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty incunabula:note + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:pubdate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty incunabula:url ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty incunabula:location ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title + owl:maxCardinality 1 ; + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + owl:maxCardinality 1 ; + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty incunabula:note ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty incunabula:hasAuthor ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty incunabula:book_comment ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; knora-api:resourceIcon "book.gif" . incunabula:url rdf:type owl:DatatypeProperty ; @@ -104,13 +104,25 @@ incunabula:Sideband rdf:type owl:Class ; rdfs:comment "Randleistentyp" ; rdfs:label "Randleiste" ; rdfs:subClassOf knora-api:StillImageRepresentation ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty incunabula:sideband_comment + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; @@ -118,24 +130,12 @@ incunabula:Sideband rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty incunabula:sideband_comment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasStillImageFile ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty incunabula:sbTitle @@ -296,22 +296,6 @@ incunabula:misc rdf:type owl:Class ; rdfs:comment "A fake resource class that only has optional properties" ; rdfs:label "Sonstiges" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty incunabula:miscHasColor @@ -321,12 +305,28 @@ incunabula:misc rdf:type owl:Class ; owl:onProperty incunabula:miscHasGeometry ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBook + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasBook + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] . incunabula:page rdf:type owl:Class ; @@ -335,7 +335,15 @@ incunabula:page rdf:type owl:Class ; rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty incunabula:citation + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFile + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; @@ -343,59 +351,51 @@ incunabula:page rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + owl:onProperty incunabula:pagenum + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty incunabula:page_comment ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFile + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty incunabula:origname + owl:maxCardinality 1 ; + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOf + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty incunabula:origname ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLink ] ; knora-api:resourceIcon "page.gif" . diff --git a/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl index 96b911d5aa..12b7d5c5fa 100644 --- a/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/incunabulaOntologyWithValueObjects.ttl @@ -113,77 +113,72 @@ incunabula:Sideband rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasStillImageFileValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:sideband_comment + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:cardinality 1 ; - owl:onProperty incunabula:sbTitle + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -192,28 +187,33 @@ incunabula:Sideband rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:sideband_comment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:cardinality 1 ; + owl:onProperty incunabula:sbTitle ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; owl:maxCardinality 1 ; owl:onProperty incunabula:description ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasStandoffLinkTo ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -357,35 +357,35 @@ incunabula:misc rdf:type owl:Class ; rdfs:comment "A fake resource class that only has optional properties" ; rdfs:label "Sonstiges" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasBookValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBook + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; @@ -399,13 +399,8 @@ incunabula:misc rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasBookValue + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -419,13 +414,23 @@ incunabula:misc rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasBook ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -435,32 +440,27 @@ incunabula:misc rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 0 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:miscHasColor + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 0 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:miscHasColor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -470,29 +470,34 @@ incunabula:page rdf:type owl:Class ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + salsah-gui:guiOrder 3 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment + salsah-gui:guiOrder 7 ; + owl:cardinality 1 ; + owl:onProperty incunabula:origname ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type 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 [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; @@ -501,13 +506,18 @@ incunabula:page rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; @@ -517,7 +527,17 @@ incunabula:page rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 5 ; @@ -531,99 +551,79 @@ incunabula:page rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty incunabula:hasLeftSidebandValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSidebandValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:page_comment + ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; knora-api:resourceIcon "page.gif" . @@ -670,118 +670,123 @@ incunabula:book rdf:type owl:Class ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty incunabula:hasAuthor + owl:onProperty incunabula:book_comment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 4 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 5 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:pubdate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment + salsah-gui:guiOrder 6 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:location + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 9 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:attachedToUser ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:publisher - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 1 ; owl:minCardinality 1 ; owl:onProperty incunabula:title ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 2 ; owl:minCardinality 0 ; - owl:onProperty incunabula:citation + owl:onProperty incunabula:hasAuthor + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:note + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 7 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:url ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -789,44 +794,29 @@ incunabula:book rdf:type owl:Class ; owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 4 ; + salsah-gui:guiOrder 2 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:url + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:note + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:location + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; knora-api:resourceIcon "book.gif" . -incunabula:miscHasGeometry - rdf:type owl:ObjectProperty ; - rdfs:label "Geometrie" ; - rdfs:subPropertyOf knora-api:hasValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:GeomValue ; - knora-api:subjectType incunabula:misc ; - salsah-gui:guiElement salsah-gui:Geometry . - incunabula:sbTitle rdf:type owl:ObjectProperty ; rdfs:label "Title" ; rdfs:subPropertyOf , knora-api:hasValue ; @@ -837,6 +827,16 @@ incunabula:sbTitle rdf:type owl:ObjectProperty ; salsah-gui:guiAttribute "maxlength=255" , "size=80" ; salsah-gui:guiElement salsah-gui:SimpleText . +incunabula:miscHasGeometry + rdf:type owl:ObjectProperty ; + rdfs:label "Geometrie" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:GeomValue ; + knora-api:subjectType incunabula:misc ; + salsah-gui:guiElement salsah-gui:Geometry . + rdf:type owl:Ontology ; rdfs:label "The incunabula ontology" ; diff --git a/test_data/ontologyR2RV2/incunabulaPage.ttl b/test_data/ontologyR2RV2/incunabulaPage.ttl index 171703ff66..9e4b8bdcd1 100644 --- a/test_data/ontologyR2RV2/incunabulaPage.ttl +++ b/test_data/ontologyR2RV2/incunabulaPage.ttl @@ -16,160 +16,160 @@ incunabula:page rdf:type owl:Class ; rdfs:comment "A page is a part of a book" ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSidebandValue - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 1 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:description + owl:onProperty incunabula:pagenum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 6 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:page_comment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + salsah-gui:guiOrder 10 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 7 ; owl:cardinality 1 ; owl:onProperty incunabula:origname ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:seqnum + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 11 ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 10 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband + owl:onProperty incunabula:hasLeftSidebandValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type 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 [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 6 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:page_comment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSidebandValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOfValue + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 11 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; owl:cardinality 1 ; - owl:onProperty incunabula:partOf + owl:onProperty incunabula:partOfValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl b/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl index 39c07fc469..9a64b3017a 100644 --- a/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/incunabulaPageAndBookWithValueObjects.ttl @@ -10,85 +10,95 @@ incunabula:page rdf:type owl:Class ; rdfs:comment "A page is a part of a book" ; rdfs:label "Page" ; rdfs:subClassOf knora-api:StillImageRepresentation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:creationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 2 ; - owl:cardinality 1 ; - owl:onProperty incunabula:partOfValue + owl:maxCardinality 1 ; + owl:onProperty incunabula:description + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 10 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:hasLeftSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 2 ; owl:cardinality 1 ; - owl:onProperty incunabula:origname + owl:onProperty incunabula:partOfValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSideband + owl:onProperty incunabula:hasRightSidebandValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:cardinality 1 ; + owl:onProperty incunabula:partOf + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 1 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasLeftSideband + owl:onProperty incunabula:pagenum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 3 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:seqnum ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; + salsah-gui:guiOrder 7 ; owl:cardinality 1 ; - owl:onProperty incunabula:partOf + owl:onProperty incunabula:origname ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 10 ; @@ -98,72 +108,62 @@ incunabula:page rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:seqnum + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:pagenum + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 11 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:hasRightSidebandValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:description - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:transcription + owl:onProperty incunabula:hasRightSideband ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 6 ; owl:minCardinality 0 ; owl:onProperty incunabula:page_comment ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 12 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:transcription + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -173,15 +173,10 @@ incunabula:book rdf:type owl:Class ; rdfs:comment "Diese Resource-Klasse beschreibt ein Buch" ; rdfs:label "Book" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:citation - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -191,47 +186,37 @@ incunabula:book rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 12 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:book_comment + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:minCardinality 0 ; - owl:onProperty incunabula:hasAuthor + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 3 ; + salsah-gui:guiOrder 5 ; owl:minCardinality 0 ; - owl:onProperty incunabula:publisher + owl:onProperty incunabula:citation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 10 ; + salsah-gui:guiOrder 12 ; owl:minCardinality 0 ; - owl:onProperty incunabula:note + owl:onProperty incunabula:book_comment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 9 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:physical_desc + salsah-gui:guiOrder 1 ; + owl:minCardinality 1 ; + owl:onProperty incunabula:title ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -239,44 +224,39 @@ incunabula:book rdf:type owl:Class ; owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 2 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:description + salsah-gui:guiOrder 3 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:publisher ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 7 ; + salsah-gui:guiOrder 4 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:url - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 1 ; - owl:minCardinality 1 ; - owl:onProperty incunabula:title - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty incunabula:publoc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:lastModificationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 5 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:pubdate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:description ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; salsah-gui:guiOrder 6 ; @@ -284,19 +264,29 @@ incunabula:book rdf:type owl:Class ; owl:onProperty incunabula:location ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 4 ; - owl:maxCardinality 1 ; - owl:onProperty incunabula:publoc + salsah-gui:guiOrder 10 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:note + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - salsah-gui:guiOrder 5 ; + salsah-gui:guiOrder 7 ; owl:maxCardinality 1 ; - owl:onProperty incunabula:pubdate + owl:onProperty incunabula:url + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 2 ; + owl:minCardinality 0 ; + owl:onProperty incunabula:hasAuthor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -305,18 +295,28 @@ incunabula:book rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + salsah-gui:guiOrder 9 ; + owl:maxCardinality 1 ; + owl:onProperty incunabula:physical_desc ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/knoraApiDateValue.ttl b/test_data/ontologyR2RV2/knoraApiDateValue.ttl index b4876f0c40..73bb6526d1 100644 --- a/test_data/ontologyR2RV2/knoraApiDateValue.ttl +++ b/test_data/ontologyR2RV2/knoraApiDateValue.ttl @@ -16,43 +16,38 @@ knora-api:DateValue rdf:type owl:Class ; rdfs:subClassOf knora-api:DateBase , knora-api:Value ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -62,58 +57,58 @@ knora-api:DateValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:dateValueHasStartEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:dateValueHasCalendar ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:valueHasComment ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasStartYear + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -122,6 +117,11 @@ knora-api:DateValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:dateValueHasEndMonth + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; knora-api:isValueClass true . diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld b/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld index e8ee0e44b5..e94c1ffa04 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.jsonld @@ -1042,6 +1042,18 @@ }, "@id": "knora-api:hasRepresentation" }, + { + "rdfs:label": "Sequence Bounds", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasValue" + }, + "rdfs:comment": "Indicates the bounds of a sequence, i.e. the start and end point in the containing resource.", + "@type": "owl:DatatypeProperty", + "knora-api:objectType": { + "@id": "knora-api:Interval" + }, + "@id": "knora-api:hasSequenceBounds" + }, { "rdfs:label": "has Standoff Link to", "rdfs:subPropertyOf": { @@ -1154,6 +1166,21 @@ }, "@id": "knora-api:isRegionOf" }, + { + "rdfs:label": "is sequence of", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasLinkTo" + }, + "rdfs:comment": "Indicates that this resource is a sequence of a video or audio resource", + "@type": "owl:ObjectProperty", + "knora-api:subjectType": { + "@id": "knora-api:Resource" + }, + "knora-api:objectType": { + "@id": "knora-api:Resource" + }, + "@id": "knora-api:isSequenceOf" + }, { "rdfs:label": "May have more results", "rdfs:comment": "Indicates whether more results may be available for a search query", @@ -1205,7 +1232,7 @@ "rdfs:subPropertyOf": { "@id": "knora-api:hasValue" }, - "rdfs:comment": "Indicates the position of a resource within a sequence", + "rdfs:comment": "Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource.", "@type": "owl:DatatypeProperty", "knora-api:objectType": { "@id": "xsd:integer" diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf b/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf index 488a370983..cbed9c9e0f 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.rdf @@ -119,29 +119,29 @@ 1 - - - + + A resource that can contain a two-dimensional still image file - 1 + 0 - + + Representation (Image) 1 - + + + - A resource that can contain a two-dimensional still image file - Representation (Image) @@ -150,16 +150,16 @@ 0 - + - 0 + 1 - + @@ -168,7 +168,7 @@ 1 - + @@ -184,14 +184,13 @@ - - - - 1 - + 0 + + + @@ -199,38 +198,39 @@ 1 - + - Representation 1 - - - + + + + 1 - + - 0 + 1 - + + Representation Represents something in the world, or an abstract thing @@ -287,9 +287,9 @@ 1 + >0 - + @@ -297,7 +297,9 @@ 1 - + + + @@ -305,16 +307,16 @@ 1 - + 1 + >0 - + @@ -322,42 +324,51 @@ 1 + + + + + + 1 - + - Region - Represents a geometric region of a resource. The geometry is represented currently as JSON string. 1 - + - 1 + 1 - + - - region.gif + Region + Represents a geometric region of a resource. The geometry is represented currently as JSON string. - 0 + 1 - + + + region.gif + + - - + Annotation 0 + >1 - + - Annotation A generic class for representing annotations - 1 + 1 - + @@ -419,20 +428,11 @@ 0 - + - - - 1 - - - - - Representation (Zip) @@ -492,21 +492,12 @@ - - - 0 - - - - - 1 - + @@ -520,10 +511,10 @@ - 1 + 0 - + @@ -532,7 +523,7 @@ 0 - + @@ -541,13 +532,10 @@ 1 - + - Representation (3D) - - + Representation (3D) + + + + + 1 - + - - - - 0 + 1 - + @@ -587,6 +578,8 @@ + 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. - 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. 0 - + - - - A resource containing a text file + + 1 - - - + + A resource containing a text file - Representation (Text) - + + + 1 + + + + + + Representation (Text) + - 1 - + 0 + + + - - - 1 - - - 1 - + - Represents a file containing audio data - Representation (Audio) - + Represents a file containing audio data 1 - - - + + Representation (Audio) + 1 - + + + + + + + 1 + + @@ -725,10 +725,10 @@ Representation (Movie) - 1 + 0 - + @@ -743,10 +743,10 @@ - 1 + 0 - + @@ -759,61 +759,61 @@ - 0 + 1 - + - 0 + 1 - + Represents a generic link object + + Link Object 0 - + - 0 + 1 - + - 1 + 0 - + - - Link Object 1 + >0 - + @@ -821,26 +821,26 @@ 1 - - - + - 0 + 1 - + link.gif - 1 - + 1 + + + @@ -924,6 +924,13 @@ has Standoff Link to + + + + Indicates that this resource is a sequence of a video or audio resource + + is sequence of + @@ -1065,6 +1072,12 @@ Geometry + + + Indicates the bounds of a sequence, i.e. the start and end point in the containing resource. + + Sequence Bounds + @@ -1081,7 +1094,7 @@ - Indicates the position of a resource within a sequence + Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource. Sequence number diff --git a/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl b/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl index 0d877fca45..6e95efbe2b 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl +++ b/test_data/ontologyR2RV2/knoraApiOntologySimple.ttl @@ -4,42 +4,34 @@ @prefix rdfs: . @prefix xsd: . -knora-api:hasMovingImageFile - rdf:type owl:DatatypeProperty ; - rdfs:comment "Connects a Representation to a movie file" ; - rdfs:label "has movie file" ; - rdfs:subPropertyOf knora-api:hasFile ; - knora-api:objectType knora-api:File ; - knora-api:subjectType knora-api:MovingImageRepresentation . - knora-api:TextRepresentation rdf:type owl:Class ; rdfs:comment "A resource containing a text file" ; rdfs:label "Representation (Text)" ; rdfs:subClassOf knora-api:Representation ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasTextFile ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFile + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl ] . knora-api:hasStandoffLinkTo @@ -65,7 +57,7 @@ knora-api:StillImageRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:hasStillImageFile ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -73,19 +65,19 @@ knora-api:StillImageRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFile + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] . knora-api:ListNode rdf:type rdfs:Datatype ; @@ -105,27 +97,27 @@ knora-api:DDDRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:hasDDDFile ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasDDDFile + owl:onProperty knora-api:arkUrl ] . knora-api:AudioRepresentation @@ -135,35 +127,39 @@ knora-api:AudioRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasAudioFile + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasAudioFile ] . knora-api:seqnum rdf:type owl:DatatypeProperty ; - rdfs:comment "Indicates the position of a resource within a sequence" ; + rdfs:comment "Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource." ; rdfs:label "Sequence number" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:objectType xsd:integer . +knora-api:objectType rdf:type rdf:Property ; + rdfs:comment "Specifies the required type of the objects of a property" ; + rdfs:label "Object type" . + knora-api:hasGeometry rdf:type owl:DatatypeProperty ; rdfs:comment "Represents a geometrical shape." ; @@ -176,30 +172,26 @@ knora-api:hasGeometry rdf:type owl:Ontology ; rdfs:label "The knora-api ontology in the simple schema" . -knora-api:objectType rdf:type rdf:Property ; - rdfs:comment "Specifies the required type of the objects of a property" ; - rdfs:label "Object type" . - knora-api:Representation rdf:type owl:Class ; rdfs:comment "A resource that can store a file" ; rdfs:label "Representation" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasFile + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -207,7 +199,7 @@ knora-api:Representation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasFile ] . knora-api:Geom rdf:type rdfs:Datatype ; @@ -220,12 +212,12 @@ knora-api:Region rdf:type owl:Class ; rdfs:label "Region" ; rdfs:subClassOf knora-api:Resource ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasColor + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; @@ -233,7 +225,11 @@ knora-api:Region rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:isRegionOf + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -241,11 +237,7 @@ knora-api:Region rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasColor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 1 ; @@ -253,7 +245,7 @@ knora-api:Region rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:isRegionOf + owl:onProperty knora-api:versionArkUrl ] ; knora-api:resourceIcon "region.gif" . @@ -303,11 +295,26 @@ knora-api:result rdf:type owl:DatatypeProperty ; rdfs:label "result" ; knora-api:objectType xsd:string . +knora-api:hasSequenceBounds + rdf:type owl:DatatypeProperty ; + rdfs:comment "Indicates the bounds of a sequence, i.e. the start and end point in the containing resource." ; + rdfs:label "Sequence Bounds" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:objectType knora-api:Interval . + knora-api:subjectType rdf:type rdf:Property ; rdfs:comment "Specifies the required type of the subjects of a property" ; rdfs:label "Subject type" . +knora-api:isSequenceOf + rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates that this resource is a sequence of a video or audio resource" ; + rdfs:label "is sequence of" ; + rdfs:subPropertyOf knora-api:hasLinkTo ; + knora-api:objectType knora-api:Resource ; + knora-api:subjectType knora-api:Resource . + knora-api:Color rdf:type rdfs:Datatype ; rdfs:comment "Represents a color." ; rdfs:label "Color literal" ; @@ -362,6 +369,18 @@ knora-api:LinkObj rdf:type owl:Class ; rdfs:comment "Represents a generic link object" ; rdfs:label "Link Object" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo @@ -374,18 +393,6 @@ knora-api:LinkObj rdf:type owl:Class ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl @@ -397,17 +404,21 @@ 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 [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -415,11 +426,7 @@ knora-api:XSLTransformation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink + owl:onProperty knora-api:arkUrl ] . knora-api:Date rdf:type rdfs:Datatype ; @@ -535,33 +542,33 @@ knora-api:Annotation rdf:type owl:Class ; rdfs:comment "A generic class for representing annotations" ; rdfs:label "Annotation" ; rdfs:subClassOf knora-api:Resource ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasIncomingLink ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOf - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:isAnnotationOf + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasComment ] . knora-api:versionArkUrl @@ -595,13 +602,13 @@ knora-api:MovingImageRepresentation rdfs:comment "A resource containing moving image data" ; rdfs:label "Representation (Movie)" ; rdfs:subClassOf knora-api:Representation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLink - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -611,13 +618,13 @@ knora-api:MovingImageRepresentation owl:cardinality 1 ; owl:onProperty rdfs:label ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLink + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] . knora-api:arkUrl rdf:type owl:DatatypeProperty ; @@ -682,3 +689,11 @@ knora-api:resourceIcon rdf:type owl:DatatypeProperty ; knora-api:objectType xsd:string ; knora-api:subjectType owl:Class . + +knora-api:hasMovingImageFile + rdf:type owl:DatatypeProperty ; + rdfs:comment "Connects a Representation to a movie file" ; + rdfs:label "has movie file" ; + rdfs:subPropertyOf knora-api:hasFile ; + knora-api:objectType knora-api:File ; + knora-api:subjectType knora-api:MovingImageRepresentation . diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld index f00db85972..13462f6279 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.jsonld @@ -7384,6 +7384,19 @@ }, "@id": "knora-api:hasRepresentationValue" }, + { + "rdfs:label": "Sequence Bounds", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasValue" + }, + "knora-api:isResourceProperty": true, + "rdfs:comment": "Indicates the bounds of a sequence, i.e. the start and end point in the containing resource.", + "@type": "owl:ObjectProperty", + "knora-api:objectType": { + "@id": "knora-api:IntervalValue" + }, + "@id": "knora-api:hasSequenceBounds" + }, { "rdfs:label": "has Standoff Link to", "rdfs:subPropertyOf": { @@ -7706,6 +7719,38 @@ }, "rdfs:comment": "Indicates whether class is a subclass of Resource." }, + { + "rdfs:label": "is sequence of", + "rdfs:subPropertyOf": { + "@id": "knora-api:hasLinkTo" + }, + "knora-api:isResourceProperty": true, + "@type": "owl:ObjectProperty", + "knora-api:objectType": { + "@id": "knora-api:Resource" + }, + "@id": "knora-api:isSequenceOf", + "knora-api:subjectType": { + "@id": "knora-api:Resource" + }, + "knora-api:isLinkProperty": true, + "rdfs:comment": "Indicates that this resource is a sequence of a video or audio resource" + }, + { + "knora-api:isLinkValueProperty": true, + "rdfs:subPropertyOf": { + "@id": "knora-api:hasLinkToValue" + }, + "knora-api:isResourceProperty": true, + "knora-api:subjectType": { + "@id": "knora-api:Resource" + }, + "@type": "owl:ObjectProperty", + "knora-api:objectType": { + "@id": "knora-api:LinkValue" + }, + "@id": "knora-api:isSequenceOfValue" + }, { "rdfs:label": "is shared", "rdfs:comment": "Indicates whether an ontology can be shared by multiple projects", @@ -7906,7 +7951,7 @@ "@id": "knora-api:hasValue" }, "knora-api:isResourceProperty": true, - "rdfs:comment": "Indicates the position of a resource within a sequence", + "rdfs:comment": "Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource.", "@type": "owl:ObjectProperty", "knora-api:objectType": { "@id": "knora-api:IntValue" diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf index 883b7bcb40..42ade7f46b 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.rdf @@ -19,10 +19,11 @@ 1 - + + A text file such as plain Unicode text, LaTeX, TEI/XML, etc. 1 - + - A text file such as plain Unicode text, LaTeX, TEI/XML, etc. true @@ -66,7 +66,7 @@ 1 - + @@ -77,7 +77,7 @@ 1 - + @@ -85,10 +85,10 @@ true - 1 + 1 - + @@ -102,7 +102,7 @@ 1 - + @@ -110,10 +110,10 @@ true - 1 + 1 - + @@ -121,10 +121,10 @@ true - 1 + 1 - + @@ -135,7 +135,7 @@ 1 - + @@ -146,7 +146,7 @@ 1 - + @@ -157,7 +157,7 @@ 1 - + @@ -165,10 +165,10 @@ true - 1 + 1 - + @@ -179,7 +179,7 @@ 1 - + @@ -189,10 +189,21 @@ true - 1 + 1 - + + + + + + + true + 1 + + @@ -212,7 +223,7 @@ 1 - + @@ -220,21 +231,24 @@ true - 1 + 1 - + + true + Represents a reference to a Knora resource in a TextValue true - 1 + 1 - + @@ -245,12 +259,10 @@ 1 - + - true 1 - + @@ -266,13 +278,16 @@ true - 1 + 1 - + + + + - Represents a reference to a Knora resource in a TextValue - - - + + 1 - + - - true - 1 + 1 - + @@ -328,17 +339,6 @@ - - - true - 1 - - - - - true - 1 + 1 - + @@ -368,7 +368,7 @@ 1 - + @@ -379,7 +379,7 @@ 1 - + @@ -387,19 +387,21 @@ true - 1 + 1 - + + true 1 - + @@ -410,7 +412,7 @@ 1 - + @@ -418,10 +420,10 @@ true - 1 + 1 - + @@ -429,10 +431,10 @@ true - 1 + 1 - + @@ -443,7 +445,7 @@ 1 - + @@ -454,18 +456,16 @@ 1 - + - true - 1 + 1 - + @@ -478,7 +478,7 @@ 1 - + @@ -489,7 +489,7 @@ 0 - + @@ -497,10 +497,10 @@ true - 1 + 1 - + @@ -511,7 +511,7 @@ 1 - + @@ -522,7 +522,7 @@ 1 - + @@ -530,10 +530,10 @@ true - 1 + 0 - + @@ -544,23 +544,25 @@ 1 - + - A resource containing moving image data - - - + true 1 - + + A resource containing moving image data + + + 1 - + @@ -577,10 +579,10 @@ true - 1 + 1 - + @@ -591,7 +593,7 @@ 1 - + @@ -599,21 +601,19 @@ true - 1 + 1 - + - true 1 - + @@ -621,10 +621,10 @@ true - 0 + 1 - + @@ -635,7 +635,7 @@ 1 - + @@ -648,7 +648,7 @@ 1 - + @@ -656,10 +656,10 @@ true - 0 + 1 - + @@ -667,10 +667,10 @@ true - 1 + 0 - + @@ -680,10 +680,10 @@ true - 1 + 1 - + @@ -691,41 +691,41 @@ true - 1 + 1 - + - - - true - 1 + 1 - + - + true - 1 + 1 - + + + + 1 - + Represents a date in a TextValue - true true - 1 + 1 - + + true 1 - + @@ -769,7 +769,7 @@ 1 - + @@ -777,10 +777,10 @@ true - 1 + 1 - + @@ -788,10 +788,10 @@ true - 1 + 1 - + @@ -799,10 +799,10 @@ true - 1 + 1 - + @@ -813,7 +813,7 @@ 1 - + @@ -824,7 +824,7 @@ 1 - + @@ -832,10 +832,10 @@ true - 1 + 1 - + @@ -846,7 +846,7 @@ 1 - + @@ -854,10 +854,10 @@ true - 1 + 1 - + @@ -868,7 +868,7 @@ 1 - + @@ -879,7 +879,7 @@ 1 - + @@ -890,7 +890,7 @@ 1 - + @@ -905,7 +905,7 @@ 1 - + @@ -916,7 +916,7 @@ 1 - + @@ -927,10 +927,11 @@ 1 - + + Represents an arbitrary URI in a TextValue 1 - + - Represents an arbitrary URI in a TextValue + + + 1 - + + + + 1 - + @@ -972,16 +978,10 @@ 1 - + - - - - - - 1 - + @@ -997,10 +997,10 @@ true - 1 + 1 - + @@ -1008,10 +1008,10 @@ true - 1 + 1 - + @@ -1022,7 +1022,7 @@ 1 - + @@ -1034,10 +1034,10 @@ true - 1 + 1 - + @@ -1048,7 +1048,7 @@ 1 - + @@ -1059,7 +1059,7 @@ 1 - + @@ -1067,10 +1067,10 @@ true - 1 + 1 - + @@ -1078,10 +1078,10 @@ true - 1 + 1 - + @@ -1092,7 +1092,7 @@ 1 - + @@ -1100,10 +1100,10 @@ true - 1 + 1 - + @@ -1114,7 +1114,7 @@ 1 - + @@ -1122,10 +1122,10 @@ true - 1 + 1 - + @@ -1136,7 +1136,7 @@ 1 - + @@ -1144,10 +1144,10 @@ true - 1 + 1 - + @@ -1158,7 +1158,7 @@ 1 - + @@ -1169,7 +1169,7 @@ 1 - + @@ -1177,10 +1177,10 @@ true - 1 + 1 - + @@ -1188,13 +1188,16 @@ true - 1 + 1 - + + + + 1 - + @@ -1210,10 +1213,10 @@ true - 1 + 1 - + @@ -1224,7 +1227,7 @@ 1 - + @@ -1235,13 +1238,11 @@ 1 - + - - - + Represents a Knora date value 1 - + - Represents a Knora date value - - - true - 1 + 1 - + + + + 1 - + @@ -1289,7 +1289,7 @@ 1 - + @@ -1297,10 +1297,10 @@ true - 1 + 0 - + @@ -1309,10 +1309,10 @@ true - 1 + 0 - + @@ -1326,7 +1326,7 @@ 1 - + @@ -1345,10 +1345,10 @@ true - 1 + 1 - + @@ -1359,7 +1359,7 @@ 0 - + @@ -1370,7 +1370,7 @@ 1 - + @@ -1380,7 +1380,9 @@ >true 1 - + + + @@ -1398,10 +1400,10 @@ true - 0 + 1 - + @@ -1418,12 +1420,10 @@ - true 1 - + @@ -1431,10 +1431,10 @@ true - 0 + 1 - + @@ -1444,28 +1444,28 @@ >true 1 - - - + true - 1 + 1 - + + true 1 - + @@ -1479,31 +1479,31 @@ 1 - + + true true 1 - - - + - true - 1 + true + 0 - + @@ -1513,7 +1513,9 @@ >true 1 - + + + @@ -1523,7 +1525,7 @@ 1 - + @@ -1531,36 +1533,34 @@ true - 0 + 1 - + - true - 1 + 1 - + + Representation (Audio) true - 1 + 1 - + - Representation (Audio) true - 0 + 1 - + @@ -1590,32 +1590,32 @@ 1 - + - - - true - 1 + 0 - + + + + true - 1 + 0 - + @@ -1626,7 +1626,7 @@ 1 - + @@ -1634,10 +1634,10 @@ true - 1 + 1 - + @@ -1645,10 +1645,10 @@ true - 1 + 1 - + @@ -1659,7 +1659,7 @@ 1 - + @@ -1668,10 +1668,10 @@ true - 0 + 1 - + @@ -1682,7 +1682,7 @@ 1 - + @@ -1695,7 +1695,7 @@ 1 - + @@ -1706,7 +1706,7 @@ 1 - + @@ -1714,10 +1714,10 @@ true - 1 + 1 - + @@ -1728,7 +1728,7 @@ 1 - + @@ -1747,31 +1747,24 @@ true - 1 + 1 - + - - - - - - true - 1 + 1 - + - Represents a color in a TextValue 1 - + @@ -1787,37 +1780,44 @@ true - 1 + 1 - + - true + + + true - 1 + 1 - + + + + + Represents a color in a TextValue true - 1 + 1 - + + true 1 - + @@ -1845,16 +1845,16 @@ 1 - + - 1 + 1 - + @@ -1876,22 +1876,22 @@ + Represents a standoff markup tag - 1 + 1 - + - Represents a standoff markup tag - 1 + 1 - + @@ -1900,16 +1900,16 @@ 1 - + - 1 + 1 - + @@ -1919,10 +1919,10 @@ true - 1 + 1 - + @@ -1930,27 +1930,28 @@ true - 0 + 1 - + + + + true - 1 + 1 - + - - - + Representation (Zip) 1 - + - Representation (Zip) true - 1 + 1 - + + + + + + + true + 1 + + + true 1 - + + true 1 - + @@ -2001,7 +2016,7 @@ 1 - + @@ -2012,7 +2027,7 @@ 1 - + @@ -2020,15 +2035,13 @@ true - 1 + 1 - + - true 0 - + @@ -2066,21 +2079,19 @@ true - 1 + 0 - + - true 1 - + @@ -2091,7 +2102,7 @@ 1 - + @@ -2104,27 +2115,27 @@ + + true - 1 + 1 - + - - true - 1 + 1 - + @@ -2135,7 +2146,7 @@ 1 - + @@ -2146,7 +2157,7 @@ 1 - + @@ -2154,10 +2165,10 @@ true - 1 + 1 - + @@ -2166,10 +2177,10 @@ true - 1 + 1 - + @@ -2180,10 +2191,13 @@ 1 - + + + + 1 - + @@ -2202,10 +2216,12 @@ 1 - + + true - - - - true 1 - + - - - 1 - + - - true - 1 - - - - + @@ -2270,7 +2270,7 @@ 1 - + @@ -2278,10 +2278,10 @@ true - 1 + 1 - + @@ -2292,7 +2292,7 @@ 1 - + @@ -2303,18 +2303,7 @@ 1 - - - - - - - true - 1 - - + @@ -2322,10 +2311,10 @@ true - 1 + 1 - + @@ -2333,13 +2322,14 @@ true - 1 + 1 - + + Represents a time interval, e.g. in an audio recording - Represents a time interval, e.g. in an audio recording + + + 1 - + @@ -2370,10 +2362,12 @@ 1 - + + true 1 - + - - - - true true - 1 + 1 - + @@ -2408,7 +2397,18 @@ 1 - + + + + + + + true + 1 + + @@ -2419,7 +2419,7 @@ 1 - + @@ -2427,10 +2427,10 @@ true - 1 + 1 - + @@ -2440,24 +2440,21 @@ true - 1 + 1 - + - - - true - 1 + 1 - + @@ -2468,18 +2465,21 @@ 1 - + + + + true - 1 + 1 - + @@ -2490,7 +2490,7 @@ 1 - + @@ -2501,7 +2501,7 @@ 1 - + @@ -2520,10 +2520,10 @@ true - 1 + 1 - + @@ -2531,16 +2531,13 @@ true - 1 + 1 - + - - - 1 - + @@ -2556,13 +2553,17 @@ true - 1 + 1 - + + + + + Represents a color in HTML format, e.g. "#33eeff" 1 - + @@ -2578,24 +2579,23 @@ true - 1 + 1 - + - Represents a color in HTML format, e.g. "#33eeff" true true - 1 + 1 - + @@ -2608,7 +2608,7 @@ 1 - + @@ -2616,10 +2616,10 @@ true - 1 + 1 - + @@ -2634,16 +2634,14 @@ - true true - 1 + 1 - + @@ -2654,18 +2652,20 @@ 1 - + + true true - 1 + 1 - + @@ -2673,28 +2673,28 @@ true - 1 + 1 - + + Represents a timestamp in a TextValue true - 1 + 1 - + - Represents a timestamp in a TextValue true - 1 + 1 - + @@ -2727,7 +2727,7 @@ 1 - + @@ -2737,10 +2737,10 @@ true - 1 + 1 - + @@ -2751,13 +2751,10 @@ 1 - + - - - 1 - + @@ -2776,21 +2773,18 @@ 1 - + - - - true - 1 + 1 - + @@ -2805,6 +2799,12 @@ + + + + + + 1 - + @@ -2823,7 +2823,7 @@ 1 - + @@ -2831,13 +2831,16 @@ true - 1 + 1 - + + Represents a decimal (floating point) value in a TextValue + true 1 - + - Represents a decimal (floating point) value in a TextValue true - 1 + 1 - + - true @@ -2872,7 +2872,7 @@ 1 - + @@ -2891,29 +2891,29 @@ true - 1 + 1 - + - true - - - true - 1 + 1 - + + true + + + 1 - + @@ -2929,10 +2929,10 @@ true - 1 + 1 - + @@ -2943,7 +2943,7 @@ 1 - + @@ -2954,7 +2954,7 @@ 1 - + @@ -2962,10 +2962,10 @@ true - 1 + 1 - + @@ -2973,10 +2973,10 @@ true - 1 + 1 - + @@ -2988,7 +2988,7 @@ 1 - + @@ -2999,7 +2999,7 @@ 1 - + @@ -3010,7 +3010,7 @@ 1 - + @@ -3018,10 +3018,10 @@ true - 1 + 1 - + @@ -3049,18 +3049,7 @@ 1 - - - - - - - true - 1 - - + @@ -3071,18 +3060,22 @@ 1 - + + Deleted Value + + + true - 1 + 1 - + @@ -3093,26 +3086,22 @@ 1 - + - Deleted Value - - - - Generic representation of a deleted value that can therefore not be displayed true - 1 + 1 - + + Generic representation of a deleted value that can therefore not be displayed 1 - + @@ -3131,7 +3120,7 @@ 1 - + @@ -3144,7 +3133,7 @@ 1 - + @@ -3155,7 +3144,7 @@ 1 - + @@ -3174,26 +3163,13 @@ true - 1 - - - - - - - - true - 1 + 1 - + - - 1 - + - true 1 - - - - - - - true - 0 - - + + + 1 - + + true true - 0 + 1 - + + true 1 - + @@ -3275,10 +3244,10 @@ true - 1 + 1 - + @@ -3297,11 +3266,9 @@ true - 1 - - - + 1 + @@ -3322,7 +3289,7 @@ 1 - + @@ -3333,7 +3300,7 @@ 1 - + @@ -3344,14 +3311,10 @@ 1 - + - A resource that can contain a two-dimensional still image file - - - + A resource that can contain a two-dimensional still image file + + + Representation (Image) + + + 1 + + + + + 1 - + @@ -3381,7 +3357,9 @@ >true 1 - + + + @@ -3391,12 +3369,10 @@ 1 - + - - 0 - + @@ -3412,13 +3388,15 @@ true - 1 + 0 - + + + 1 - + + + + + + + true + 0 + + + Representation (Document) 1 - + - Representation (Document) true - 1 + 0 - + @@ -3457,10 +3446,10 @@ true - 1 + 1 - + @@ -3470,17 +3459,19 @@ >true 1 - + + + true - 1 + 0 - + @@ -3495,6 +3486,15 @@ + + + 1 + + + + + 1 - + @@ -3513,7 +3513,7 @@ 1 - + @@ -3524,10 +3524,10 @@ true - 1 + 1 - + @@ -3535,10 +3535,10 @@ true - 0 + 1 - + @@ -3548,13 +3548,9 @@ >true 1 - - - + - true 1 - - - - - - - true - 0 - - + + true + true 1 - - - - - - - - - 1 - - + + true 1 - + + + 1 - + - - 1 + + 1 - + @@ -3640,7 +3622,7 @@ 1 - + @@ -3649,7 +3631,7 @@ 1 - + @@ -3658,7 +3640,7 @@ 1 - + @@ -3667,7 +3649,7 @@ 1 - + @@ -3676,7 +3658,7 @@ 1 - + @@ -3685,10 +3667,12 @@ 1 - + + true 1 - + - true 1 - + The base class of classes representing Knora values - - - Represents a knora-base value type in a TextValue - true 1 - + + + + 1 + + + + + + + true - 1 + 1 - + + Represents a knora-base value type in a TextValue true - 1 + 1 - + @@ -3763,7 +3752,7 @@ 1 - + @@ -3771,15 +3760,13 @@ true - 1 + 1 - + - true 1 - + @@ -3798,22 +3785,23 @@ 1 - + - true - 1 + 1 - + + true 1 - + @@ -3836,6 +3824,18 @@ + + + + true + 1 + + + + + @@ -3862,16 +3862,14 @@ - true true - 1 + 0 - + @@ -3882,7 +3880,7 @@ 1 - + @@ -3890,19 +3888,23 @@ true - 0 + 1 - + + true - 1 + true + 1 - + @@ -3910,10 +3912,10 @@ true - 0 + 1 - + @@ -3921,19 +3923,21 @@ true - 1 - + 1 + + + true - 1 + 1 - + @@ -3944,7 +3948,7 @@ 1 - + @@ -3955,16 +3959,18 @@ 1 - + + true 1 + >0 - + @@ -3975,7 +3981,7 @@ 1 - + @@ -3985,102 +3991,96 @@ >true 1 - - - + - true - 0 + true + 1 - + - true - 1 + 1 - + + true true - 1 + 0 - + + Represents a generic link object + link.gif true - 1 + 1 - + - Represents a generic link object - link.gif true - 1 + 1 - + - Link Object true - 0 + 1 - + + Link Object - true - 1 + 1 - + - true - 1 + 0 - + @@ -4115,10 +4115,10 @@ true - 1 + 1 - + @@ -4126,10 +4126,10 @@ true - 1 + 1 - + @@ -4140,7 +4140,7 @@ 1 - + @@ -4148,27 +4148,24 @@ true - 1 + 1 - + - true - 1 + 1 - + - true 1 - + @@ -4187,7 +4184,7 @@ 1 - + @@ -4195,13 +4192,14 @@ true - 1 + 1 - + + 1 - + + true 1 - + @@ -4231,32 +4231,32 @@ 1 - + - Represents an arbitrary-precision decimal value true - 1 + 1 - + + Represents an arbitrary-precision decimal value true - 1 + 0 - + @@ -4265,16 +4265,7 @@ 1 - - - - - - - 0 - - + @@ -4284,15 +4275,17 @@ 1 - + - 1 - + 0 + + + @@ -4306,19 +4299,19 @@ - 0 + 1 - + - 1 + 1 - + @@ -4336,7 +4329,7 @@ 1 - + @@ -4345,26 +4338,26 @@ 0 - + - Resource 1 - + + Resource 1 - + @@ -4373,7 +4366,7 @@ 1 - + @@ -4382,17 +4375,15 @@ 1 - + - 1 - - - + 1 + @@ -4400,7 +4391,16 @@ 1 - + + + + + + + 1 + + @@ -4422,10 +4422,10 @@ true - 0 + 1 - + @@ -4433,19 +4433,10 @@ true - 1 - - - - - - - 1 - + @@ -4453,23 +4444,24 @@ true - 1 - + 1 + + + true - 1 + 0 - + - A resource that can store a file 1 - + @@ -4492,6 +4484,7 @@ + A resource that can store a file + Representation true - 1 + 1 - + @@ -4525,15 +4519,14 @@ + true 1 - - - + @@ -4547,30 +4540,6 @@ - Representation - - - true - 1 - - - - - - - - - true - 1 - - - - - 1 - + @@ -4615,27 +4584,23 @@ - true - - - true 1 - + + + - Region 1 - + @@ -4643,22 +4608,26 @@ true - 1 + 1 - + - region.gif + true + + + true - 1 + 1 - + @@ -4666,30 +4635,33 @@ true - 0 + 1 - + + true 1 - + - true + Region - 1 + true + 1 - + @@ -4699,11 +4671,10 @@ >true 1 - - - + + region.gif 1 - + @@ -4730,10 +4701,10 @@ true - 1 + 1 - + @@ -4741,13 +4712,15 @@ true - 1 + 1 - + + true 1 - + @@ -4764,20 +4737,16 @@ 1 - + - true - true 1 - + @@ -4788,19 +4757,16 @@ 1 - + - Represents a geometric region of a resource. The geometry is represented currently as JSON string. - true - 1 + 1 - + @@ -4808,10 +4774,10 @@ true - 1 + 1 - + @@ -4824,17 +4790,20 @@ + true true - 1 + 1 - + + Represents a geometric region of a resource. The geometry is represented currently as JSON string. 1 - + @@ -4853,19 +4822,16 @@ 0 - + - - - 1 - + @@ -4873,10 +4839,10 @@ true - 1 + 0 - + @@ -4884,13 +4850,15 @@ true - 1 + 1 - + + + 1 - + + true - 1 + 1 - + @@ -4920,7 +4889,7 @@ 1 - + @@ -4935,6 +4904,17 @@ + + + true + 1 + + + + + 1 - + @@ -4953,10 +4933,11 @@ 1 - + + Represents a geometrical objects as JSON string 1 - + @@ -4990,34 +4971,28 @@ - Represents a geometrical objects as JSON string + true true - 1 + 1 - + - true - true - 1 + 1 - + - - - Represents a timestamp true - 1 + 1 - + + + true - 1 + 1 - + @@ -5058,13 +5035,10 @@ 1 - + - - true 1 - + @@ -5094,22 +5068,22 @@ 1 - + - true - 1 + 1 - + + 1 - + + + + + true + + + true + 1 + + @@ -5136,10 +5123,10 @@ true - 1 + 1 - + @@ -5150,10 +5137,11 @@ 1 - + + 1 - + @@ -5172,13 +5160,10 @@ 1 - + - - - Represents an integer value 1 - + + Represents a timestamp + + 1 - + + + + + Represents an integer value + + + true + 1 + + + 1 - + - 1 - + @@ -5231,7 +5231,7 @@ 1 - + @@ -5239,10 +5239,10 @@ true - 1 + 1 - + @@ -5253,7 +5253,7 @@ 1 - + @@ -5265,7 +5265,7 @@ 1 - + @@ -5276,12 +5276,10 @@ 1 - + - true 1 - + + true true - 1 + 1 - + @@ -5311,7 +5311,7 @@ 1 - + @@ -5322,7 +5322,7 @@ 1 - + @@ -5330,10 +5330,10 @@ true - 1 + 1 - + @@ -5346,18 +5346,7 @@ 1 - - - - - - - true - 1 - - + @@ -5368,18 +5357,16 @@ 1 - + - true 1 - + @@ -5387,10 +5374,10 @@ true - 1 + 1 - + @@ -5401,43 +5388,40 @@ 1 - + - - - - 1 + true + 1 - + true - 1 + >true + 1 - + - true true - 1 + 1 - + @@ -5448,7 +5432,7 @@ 1 - + @@ -5459,10 +5443,13 @@ 1 - + + + + 1 - + + true 1 - + @@ -5490,7 +5479,7 @@ 1 - + @@ -5507,21 +5496,21 @@ - true 1 - + - 1 + true + 1 - + @@ -5532,7 +5521,18 @@ 1 - + + + + + + + true + 1 + + @@ -5552,10 +5552,12 @@ - 1 + true + 1 - + @@ -5566,7 +5568,7 @@ 1 - + @@ -5575,7 +5577,7 @@ 1 - + @@ -5586,10 +5588,11 @@ 1 - + + 1 - + - true 1 - + - - true - 1 + 1 - + - true - 1 + 1 - + @@ -5639,30 +5635,33 @@ true - 1 + 1 - + + A reification node that describes direct links between resources true - 1 + 1 - + - 1 + true + 1 - + @@ -5673,7 +5672,7 @@ 1 - + @@ -5684,11 +5683,10 @@ 1 - + - A reification node that describes direct links between resources - 1 + true + 1 - + @@ -5724,10 +5724,10 @@ true - 1 + 1 - + @@ -5738,10 +5738,12 @@ + true 1 - + @@ -5752,7 +5754,7 @@ 1 - + @@ -5763,7 +5765,7 @@ 1 - + @@ -5774,17 +5776,7 @@ 1 - - - - - A file containing a two-dimensional still image - - - 1 - - + @@ -5795,18 +5787,19 @@ 1 - + + A file containing a two-dimensional still image true - 1 + 1 - + @@ -5817,7 +5810,7 @@ 1 - + @@ -5825,21 +5818,19 @@ true - 1 + 1 - + - true 1 - + @@ -5848,7 +5839,7 @@ 1 - + @@ -5859,7 +5850,7 @@ 1 - + @@ -5870,12 +5861,10 @@ 1 - + - true 1 - + + true 1 - + + + + 1 - + + + + + + + 1 + + @@ -5931,9 +5934,6 @@ - - - @@ -5954,7 +5954,18 @@ 1 - + + + + + + + true + 1 + + @@ -5965,7 +5976,7 @@ 1 - + @@ -5976,10 +5987,13 @@ 1 - + + This represents some 3D-object with mesh data, point cloud, etc. + true 1 - + - This represents some 3D-object with mesh data, point cloud, etc. - true 1 - + @@ -6020,10 +6031,10 @@ true - 1 + 1 - + @@ -6031,10 +6042,10 @@ true - 1 + 1 - + @@ -6042,10 +6053,10 @@ true - 1 + 1 - + @@ -6053,10 +6064,10 @@ true - 1 + 1 - + @@ -6067,7 +6078,7 @@ 1 - + @@ -6089,18 +6100,7 @@ 1 - - - - - - - true - 1 - - + @@ -6113,10 +6113,10 @@ true - 1 + 1 - + @@ -6127,7 +6127,7 @@ 1 - + @@ -6135,10 +6135,10 @@ true - 1 + 1 - + @@ -6157,13 +6157,15 @@ true - 1 + 1 - + + true 1 - + + 1 - + + 1 - + - true true - 1 + 1 - + - - + Represents an integer value in a TextValue 1 - + @@ -6230,11 +6231,10 @@ 1 - + - Represents an integer value in a TextValue Represents a flat or hierarchical list @@ -6260,10 +6260,10 @@ true - 1 + 1 - + @@ -6271,10 +6271,10 @@ true - 1 + 1 - + @@ -6285,7 +6285,7 @@ 1 - + @@ -6296,7 +6296,7 @@ 1 - + @@ -6307,18 +6307,19 @@ 1 - + + Represents an audio file true - 1 + 1 - + @@ -6326,14 +6327,13 @@ true - 1 + 1 - + - Represents an audio file 1 - + @@ -6374,7 +6374,7 @@ 1 - + @@ -6385,7 +6385,7 @@ 1 - + @@ -6400,6 +6400,8 @@ + true 1 - + - true 1 - + @@ -6433,10 +6433,10 @@ true - 1 + 0 - + @@ -6444,15 +6444,13 @@ true - 1 + 0 - + - true 1 - - - - - - - true - 1 - - + @@ -6486,7 +6473,6 @@ - Generic representation of a deleted resource that can therefore not be displayed 1 - + - - - true - 1 - - - 0 - + - + true - Deleted Resource 1 - + @@ -6549,18 +6526,19 @@ 1 - + + Generic representation of a deleted resource that can therefore not be displayed true - 1 + 1 - + @@ -6568,13 +6546,15 @@ true - 0 + 1 - + + + Deleted Resource 1 - + @@ -6603,47 +6583,44 @@ >true 1 - - - + true - 0 + 1 - + - - - true true - 1 + 1 - + + true 1 - + - Representation (Text) + + 0 - + - A resource containing a text file true - 1 + 1 - + + true 1 - + @@ -6696,7 +6674,7 @@ 1 - + @@ -6707,11 +6685,22 @@ 1 - + - + + + true + 1 + + + + + + Representation (Text) 1 - + + A resource containing a text file + true - 1 + 0 - + @@ -6738,10 +6729,10 @@ true - 1 + 0 - + @@ -6751,7 +6742,18 @@ >true 1 - + + + + + + + + 1 + + + @@ -6761,7 +6763,7 @@ 1 - + @@ -6769,10 +6771,10 @@ true - 1 + 1 - + @@ -6793,19 +6795,17 @@ >true 1 - - - + true - 0 + 1 - + @@ -6813,10 +6813,10 @@ true - 0 + 1 - + @@ -6828,10 +6828,10 @@ true - 1 + 1 - + @@ -6842,7 +6842,7 @@ 1 - + @@ -6853,7 +6853,7 @@ 1 - + @@ -6872,10 +6872,10 @@ true - 1 + 1 - + @@ -6883,10 +6883,10 @@ true - 1 + 1 - + @@ -6897,10 +6897,13 @@ 1 - + + + + 1 - + @@ -6930,13 +6933,10 @@ 1 - + - - - 1 - + @@ -6955,18 +6955,7 @@ 1 - - - - - - - true - 1 - - + @@ -6974,17 +6963,15 @@ true - 1 + 1 - + true - - 1 - + + + 1 - + @@ -7014,7 +7003,7 @@ 1 - + @@ -7025,7 +7014,7 @@ 1 - + @@ -7036,7 +7025,7 @@ 1 - + @@ -7047,43 +7036,44 @@ 1 - + Represents an internal reference in a TextValue - true - 1 + 1 - + + - true - 1 + 1 - + + true 1 - + + 1 - + - true @@ -7105,12 +7094,10 @@ 1 - + - - 1 - + - Represents a boolean in a TextValue + + + Represents a boolean in a TextValue true - 1 + 1 - + @@ -7149,10 +7138,10 @@ true - 1 + 1 - + @@ -7170,20 +7159,17 @@ - true true - 1 + 1 - + - 1 - + @@ -7199,13 +7185,15 @@ true - 1 + 1 - + + true true - 1 + 1 - + + - - 1 - + + + Represents a moving image file + + + true + 1 + + + + + true - 1 + 1 - + + true 1 - + @@ -7293,7 +7295,7 @@ 1 - + @@ -7308,27 +7310,28 @@ - true true - 1 + 1 - + + + + true - 1 + 1 - + @@ -7339,21 +7342,18 @@ 1 - + - - - true - 1 + 1 - + @@ -7372,10 +7372,10 @@ true - 1 + 1 - + @@ -7386,7 +7386,7 @@ 1 - + @@ -7394,10 +7394,10 @@ true - 1 + 1 - + @@ -7405,28 +7405,28 @@ true - 1 + 1 - + - true true - 1 + 1 - + + true 1 - + @@ -7445,7 +7445,7 @@ 1 - + @@ -7453,10 +7453,10 @@ true - 1 + 1 - + @@ -7467,7 +7467,7 @@ 1 - + @@ -7489,7 +7489,7 @@ 1 - + @@ -7497,10 +7497,10 @@ true - 1 + 1 - + @@ -7526,9 +7526,6 @@ - - - 1 - + @@ -7544,10 +7541,10 @@ true - 1 + 1 - + @@ -7555,10 +7552,10 @@ true - 1 + 1 - + @@ -7566,13 +7563,16 @@ true - 1 + 1 - + + + + 1 - + @@ -7588,10 +7588,10 @@ - 1 + 1 - + @@ -7627,7 +7627,7 @@ 1 - + @@ -7640,7 +7640,6 @@ - - 1 + 1 - + + 1 - + - true - 0 + 1 - + + 1 - + @@ -7700,7 +7700,7 @@ 1 - + @@ -7711,7 +7711,7 @@ 1 - + @@ -7722,7 +7722,7 @@ 1 - + @@ -7730,21 +7730,31 @@ true - 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. true + 1 + + + + + + + 1 - + @@ -7754,32 +7764,36 @@ >true 1 - + + + + true 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. 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 - + @@ -7798,7 +7812,7 @@ 1 - + @@ -7809,21 +7823,18 @@ 0 - + - 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 - 1 + 1 - + @@ -7831,30 +7842,43 @@ true - 1 + 1 - + + true 1 + + + + + + true + 1 - + + + true - 0 + 1 - + @@ -7865,20 +7889,16 @@ 1 - + - - - true 1 - + @@ -7889,7 +7909,7 @@ 1 - + @@ -7904,6 +7924,8 @@ + true 1 - + - true 1 - + @@ -7935,7 +7955,7 @@ 1 - + @@ -7946,7 +7966,7 @@ 1 - + @@ -7957,7 +7977,7 @@ 1 - + @@ -7968,16 +7988,18 @@ 1 - + + true 1 - + @@ -7988,10 +8010,11 @@ 1 - + + - + + true - 1 + 1 - + - - 1 - + @@ -8077,7 +8099,7 @@ 1 - + @@ -8092,39 +8114,6 @@ - - - true - 1 - - - - - - - - true - 1 - - - - - - - - true - 1 - - - - - - - 1 - - - - - - true - - - true + 1 - + @@ -8176,7 +8152,7 @@ 1 - + @@ -8184,24 +8160,24 @@ true - 1 + 1 - + + true - - true - 1 + 1 - + @@ -8212,10 +8188,12 @@ 1 - + + + A generic class for representing annotations true @@ -8223,10 +8201,10 @@ true - 1 + 1 - + @@ -8237,29 +8215,28 @@ 1 - + - Annotation true - 1 + 0 - + - true - 1 - + 1 + + + @@ -8269,10 +8246,11 @@ 1 - + + Annotation 1 - + @@ -8289,10 +8267,10 @@ true - 0 + 1 - + @@ -8303,7 +8281,16 @@ 1 - + + + + + + + 1 + + @@ -8311,10 +8298,10 @@ true - 1 + 1 - + @@ -8322,24 +8309,24 @@ true - 0 + 1 - + + true 1 + >0 - + - true + true true - 1 + 1 - + - 1 + true + 1 - + - 1 + true + 1 - + @@ -8391,14 +8384,23 @@ + + + 1 + + + + + true - 1 + 1 - + @@ -8408,9 +8410,7 @@ >true 1 - - - + @@ -8452,49 +8452,42 @@ >true - true - 1 - - - - - - - - 0 + 1 - + + true 1 - + - 1 + true + 1 - + - 1 + 0 - + @@ -8505,7 +8498,7 @@ 1 - + @@ -8513,19 +8506,10 @@ true - 1 - - - - - - - - 1 + 1 - + @@ -8536,7 +8520,7 @@ 1 - + @@ -8558,7 +8542,7 @@ 1 - + @@ -8569,7 +8553,7 @@ 1 - + @@ -8578,18 +8562,16 @@ 1 - + - true 1 - + @@ -8611,18 +8593,16 @@ 1 - + - true 1 - + @@ -8630,10 +8610,19 @@ true - 1 + 1 - + + + + + + + 1 + + @@ -8653,7 +8642,18 @@ 1 - + + + + + + + true + 1 + + @@ -8672,7 +8672,7 @@ - Indicates the position of a resource within a sequence + Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource. true @@ -8765,6 +8765,19 @@ true + + Indicates that this resource is a sequence of a video or audio resource + true + + + true + + + + is sequence of + @@ -8926,6 +8939,17 @@ has Representation + + + + true + + + + true + Points to a LinkValue reification describing a link between two resources @@ -9031,6 +9055,14 @@ + + + Indicates the bounds of a sequence, i.e. the start and end point in the containing resource. + true + + Sequence Bounds + 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. diff --git a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl index 979f5cda3e..4002275e44 100644 --- a/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/knoraApiOntologyWithValueObjects.ttl @@ -16,23 +16,28 @@ knora-api:DDDFileValue rdfs:subClassOf knora-api:FileValue ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -41,13 +46,13 @@ knora-api:DDDFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -56,8 +61,8 @@ knora-api:DDDFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -67,27 +72,22 @@ knora-api:DDDFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; knora-api:isValueClass true . @@ -104,21 +104,13 @@ knora-api:StandoffTag owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; @@ -126,7 +118,7 @@ knora-api:StandoffTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -138,7 +130,15 @@ knora-api:StandoffTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; knora-api:isStandoffClass true . @@ -150,47 +150,51 @@ knora-api:DDDRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasDDDFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -199,32 +203,28 @@ knora-api:DDDRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasDDDFileValue + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -233,17 +233,11 @@ knora-api:DDDRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; knora-api:isResourceClass true . -knora-api:mappingHasName - rdf:type owl:DatatypeProperty ; - rdfs:comment "Represents the name of a mapping" ; - rdfs:label "Name of a mapping (will be part of the mapping's Iri)" ; - knora-api:objectType xsd:string . - knora-api:DeletedValue rdf:type owl:Class ; rdfs:comment "Generic representation of a deleted value that can therefore not be displayed" ; @@ -252,17 +246,17 @@ knora-api:DeletedValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -272,28 +266,23 @@ knora-api:DeletedValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:valueAsString ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -302,20 +291,31 @@ knora-api:DeletedValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:isValueClass true . +knora-api:mappingHasName + rdf:type owl:DatatypeProperty ; + rdfs:comment "Represents the name of a mapping" ; + rdfs:label "Name of a mapping (will be part of the mapping's Iri)" ; + knora-api:objectType xsd:string . + knora-api:standoffTagHasEndParentIndex rdf:type owl:DatatypeProperty ; rdfs:comment "The next knora-api:standoffTagHasStartIndex of the end parent tag of a standoff tag." ; @@ -346,97 +346,97 @@ knora-api:TextValue rdf:type owl:Class ; rdfs:subClassOf knora-api:Value ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasMarkup + owl:onProperty knora-api:textValueHasLanguage ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:textValueHasMarkup ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasMaxStandoffStartIndex + owl:onProperty knora-api:textValueAsXml ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasLanguage + owl:onProperty knora-api:textValueHasMapping ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:textValueHasStandoff ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueHasMapping + owl:onProperty knora-api:textValueHasMaxStandoffStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:textValueAsHtml ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:textValueHasStandoff - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueAsXml - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:textValueAsHtml + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString + ] ; knora-api:isValueClass true . knora-api:IntBase rdf:type owl:Class ; @@ -478,10 +478,6 @@ knora-api:Annotation rdf:type owl:Class ; owl:cardinality 1 ; owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -490,21 +486,17 @@ knora-api:Annotation rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOf + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -514,16 +506,21 @@ knora-api:Annotation rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty knora-api:isAnnotationOfValue + owl:onProperty knora-api:hasComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -532,8 +529,16 @@ knora-api:Annotation rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:isAnnotationOfValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:isAnnotationOf ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -542,18 +547,18 @@ knora-api:Annotation rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -562,13 +567,8 @@ knora-api:Annotation rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true . @@ -594,27 +594,24 @@ knora-api:hasStandoffLinkToValue knora-api:LinkValue rdf:type owl:Class ; rdfs:comment "A reification node that describes direct links between resources" ; rdfs:subClassOf knora-api:Value , rdf:Statement ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasSourceIri - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:linkValueHasSource ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasTarget + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:valueHasComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -626,14 +623,10 @@ knora-api:LinkValue rdf:type owl:Class ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:linkValueHasTargetIri - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -643,38 +636,45 @@ knora-api:LinkValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:hasPermissions ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:linkValueHasTarget + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteComment ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:linkValueHasTargetIri + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:linkValueHasSourceIri + ] ; knora-api:isValueClass true . knora-api:stillImageFileValueHasDimY @@ -685,6 +685,14 @@ knora-api:stillImageFileValueHasDimY knora-api:objectType xsd:integer ; knora-api:subjectType knora-api:StillImageFileValue . +knora-api:hasSequenceBounds + rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates the bounds of a sequence, i.e. the start and end point in the containing resource." ; + rdfs:label "Sequence Bounds" ; + rdfs:subPropertyOf knora-api:hasValue ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:IntervalValue . + knora-api:Representation rdf:type owl:Class ; rdfs:comment "A resource that can store a file" ; @@ -693,62 +701,57 @@ knora-api:Representation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -756,28 +759,33 @@ knora-api:Representation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; knora-api:isResourceClass true . @@ -785,6 +793,11 @@ knora-api:StandoffDataTypeTag rdf:type owl:Class ; rdfs:comment "Represents a knora-base value type in a TextValue" ; rdfs:subClassOf knora-api:StandoffTag ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -792,8 +805,8 @@ knora-api:StandoffDataTypeTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -803,37 +816,32 @@ knora-api:StandoffDataTypeTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -852,37 +860,37 @@ knora-api:TextFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -892,40 +900,47 @@ knora-api:TextFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; knora-api:isValueClass true . +knora-api:isLinkProperty + rdf:type owl:AnnotationProperty ; + rdfs:comment "Indicates whether a property points to a resource" ; + rdfs:label "is link property" ; + knora-api:objectType xsd:boolean ; + knora-api:subjectType owl:ObjectProperty . + knora-api:fileValueHasFilename rdf:type owl:DatatypeProperty ; rdfs:comment "The name of the file that a file value represents." ; @@ -934,13 +949,6 @@ knora-api:fileValueHasFilename knora-api:objectType xsd:string ; knora-api:subjectType knora-api:FileValue . -knora-api:isLinkProperty - rdf:type owl:AnnotationProperty ; - rdfs:comment "Indicates whether a property points to a resource" ; - rdfs:label "is link property" ; - knora-api:objectType xsd:boolean ; - knora-api:subjectType owl:ObjectProperty . - knora-api:canBeInstantiated rdf:type owl:AnnotationProperty ; rdfs:comment "Indicates whether a resource class can be instantiated via the Knora API." ; @@ -954,28 +962,23 @@ knora-api:ArchiveRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -984,27 +987,28 @@ knora-api:ArchiveRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deleteDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasArchiveFileValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1013,33 +1017,37 @@ knora-api:ArchiveRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasArchiveFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; knora-api:isResourceClass true . @@ -1049,8 +1057,8 @@ knora-api:StandoffIntervalTag rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:IntervalBase ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1059,43 +1067,43 @@ knora-api:StandoffIntervalTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:intervalValueHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1104,8 +1112,8 @@ knora-api:StandoffIntervalTag ] ; rdfs:subClassOf [ rdf:type 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 . @@ -1123,64 +1131,65 @@ knora-api:DocumentFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:isDeleted + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:documentFileValueHasDimX + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:documentFileValueHasDimY ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:documentFileValueHasPageCount + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:documentFileValueHasDimX - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:documentFileValueHasDimY + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1190,23 +1199,22 @@ knora-api:DocumentFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:documentFileValueHasPageCount + ] ; knora-api:isValueClass true . knora-api:intervalValueHasEnd @@ -1229,13 +1237,13 @@ knora-api:DocumentRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1245,32 +1253,37 @@ knora-api:DocumentRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasDocumentFileValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; @@ -1284,27 +1297,22 @@ knora-api:DocumentRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1314,7 +1322,7 @@ knora-api:DocumentRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:creationDate ] ; knora-api:isResourceClass true . @@ -1335,57 +1343,57 @@ knora-api:IntValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:intValueAsInt ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intValueAsInt + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:versionArkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1395,12 +1403,12 @@ knora-api:IntValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type 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 . @@ -1411,7 +1419,7 @@ knora-api:StandoffDecimalTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1421,37 +1429,37 @@ knora-api:StandoffDecimalTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:decimalValueAsDecimal ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1461,7 +1469,7 @@ knora-api:StandoffDecimalTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:decimalValueAsDecimal + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -1527,8 +1535,8 @@ knora-api:ArchiveFileValue rdfs:subClassOf knora-api:FileValue ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1538,37 +1546,32 @@ knora-api:ArchiveFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1578,27 +1581,32 @@ knora-api:ArchiveFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:fileValueAsUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; knora-api:isValueClass true . @@ -1607,17 +1615,27 @@ knora-api:ListValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteComment + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1627,12 +1645,12 @@ knora-api:ListValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; @@ -1640,38 +1658,28 @@ knora-api:ListValue rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:valueHasUUID ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; knora-api:isValueClass true . @@ -1679,6 +1687,11 @@ knora-api:StandoffIntegerTag rdf:type owl:Class ; rdfs:comment "Represents an integer value in a TextValue" ; rdfs:subClassOf knora-api:IntBase , knora-api:StandoffDataTypeTag ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1686,54 +1699,49 @@ knora-api:StandoffIntegerTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:intValueAsInt ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; knora-api:isStandoffClass true . knora-api:objectType rdf:type rdf:Property ; @@ -1777,97 +1785,97 @@ knora-api:StandoffDateTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:dateValueHasCalendar ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasStartEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasCalendar + owl:onProperty knora-api:dateValueHasStartYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndMonth + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -1879,36 +1887,42 @@ knora-api:StillImageRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToUser ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasStillImageFileValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty rdfs:label + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1918,22 +1932,21 @@ knora-api:StillImageRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasStillImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1942,28 +1955,23 @@ knora-api:StillImageRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:arkUrl ] ; knora-api:isResourceClass true . @@ -1995,35 +2003,44 @@ knora-api:StandoffInternalReferenceTag rdf:type owl:Class ; rdfs:comment "Represents an internal reference in a TextValue" ; rdfs:subClassOf knora-api:StandoffDataTypeTag , knora-api:ValueBase ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasInternalReference + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2032,23 +2049,14 @@ knora-api:StandoffInternalReferenceTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasInternalReference + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasUUID ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; knora-api:isStandoffClass true . knora-api:isStandoffClass @@ -2058,33 +2066,44 @@ knora-api:isStandoffClass knora-api:objectType xsd:boolean ; knora-api:subjectType owl:Class . +knora-api:hasMovingImageFileValue + rdf:type owl:ObjectProperty ; + rdfs:comment "Connects a Representation to a movie file" ; + rdfs:label "has movie file" ; + rdfs:subPropertyOf knora-api:hasFileValue ; + knora-api:isEditable true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:MovingImageFileValue ; + knora-api:subjectType knora-api:MovingImageRepresentation ; + salsah-gui:guiElement salsah-gui:Fileupload . + knora-api:ColorValue rdf:type owl:Class ; rdfs:comment "Represents a color in HTML format, e.g. \"#33eeff\"" ; rdfs:subClassOf knora-api:Value , knora-api:ColorBase ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2094,12 +2113,12 @@ knora-api:ColorValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2108,41 +2127,36 @@ knora-api:ColorValue rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:colorValueAsColor + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:colorValueAsColor ] ; knora-api:isValueClass true . -knora-api:hasMovingImageFileValue - rdf:type owl:ObjectProperty ; - rdfs:comment "Connects a Representation to a movie file" ; - rdfs:label "has movie file" ; - rdfs:subPropertyOf knora-api:hasFileValue ; - knora-api:isEditable true ; - knora-api:isResourceProperty true ; - knora-api:objectType knora-api:MovingImageFileValue ; - knora-api:subjectType knora-api:MovingImageRepresentation ; - salsah-gui:guiElement salsah-gui:Fileupload . +knora-api:valueCreationDate + rdf:type owl:DatatypeProperty ; + rdfs:subPropertyOf knora-api:valueHas ; + knora-api:objectType xsd:dateTimeStamp ; + knora-api:subjectType knora-api:Value . knora-api:StillImageFileValue rdf:type owl:Class ; @@ -2151,17 +2165,17 @@ knora-api:StillImageFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2170,31 +2184,32 @@ knora-api:StillImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:stillImageFileValueHasDimY + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasDimX + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasIIIFBaseUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2204,21 +2219,21 @@ knora-api:StillImageFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:stillImageFileValueHasDimY + owl:onProperty knora-api:stillImageFileValueHasDimX ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2228,21 +2243,14 @@ knora-api:StillImageFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueCreationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:stillImageFileValueHasIIIFBaseUrl ] ; knora-api:isValueClass true . -knora-api:valueCreationDate - rdf:type owl:DatatypeProperty ; - rdfs:subPropertyOf knora-api:valueHas ; - knora-api:objectType xsd:dateTimeStamp ; - knora-api:subjectType knora-api:Value . - knora-api:mayHaveMoreResults rdf:type owl:DatatypeProperty ; rdfs:comment "Indicates whether more results may be available for a search query" ; @@ -2270,7 +2278,7 @@ knora-api:hasAudioFileValue salsah-gui:guiElement salsah-gui:Fileupload . knora-api:seqnum rdf:type owl:ObjectProperty ; - rdfs:comment "Indicates the position of a resource within a sequence" ; + rdfs:comment "Indicates the position of a resource within a compound object. Typically used to indicate the order of pages within a book or similar resource." ; rdfs:label "Sequence number" ; rdfs:subPropertyOf knora-api:hasValue ; knora-api:isResourceProperty true ; @@ -2310,22 +2318,27 @@ knora-api:MovingImageFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2335,52 +2348,47 @@ knora-api:MovingImageFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deletedBy ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; knora-api:isValueClass true . @@ -2395,6 +2403,16 @@ knora-api:hasTextFileValue knora-api:subjectType knora-api:TextRepresentation ; salsah-gui:guiElement salsah-gui:Fileupload . +knora-api:isSequenceOf + rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates that this resource is a sequence of a video or audio resource" ; + rdfs:label "is sequence of" ; + rdfs:subPropertyOf knora-api:hasLinkTo ; + knora-api:isLinkProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:Resource ; + knora-api:subjectType knora-api:Resource . + knora-api:listValueAsListNode rdf:type owl:ObjectProperty ; rdfs:comment "Represents a reference to a hierarchical list node." ; @@ -2407,50 +2425,45 @@ knora-api:StandoffBooleanTag rdf:type owl:Class ; rdfs:comment "Represents a boolean in a TextValue" ; rdfs:subClassOf knora-api:BooleanBase , knora-api:StandoffDataTypeTag ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:booleanValueAsBoolean ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2460,7 +2473,12 @@ knora-api:StandoffBooleanTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:booleanValueAsBoolean + owl:onProperty knora-api:standoffTagHasStartIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; knora-api:isStandoffClass true . @@ -2469,74 +2487,70 @@ knora-api:AudioRepresentation rdfs:comment "Represents a file containing audio data" ; rdfs:label "Representation (Audio)" ; rdfs:subClassOf knora-api:Representation ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasAudioFileValue - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2546,17 +2560,21 @@ knora-api:AudioRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasAudioFileValue ] ; knora-api:isResourceClass true . @@ -2567,13 +2585,8 @@ knora-api:MovingImageRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2582,47 +2595,47 @@ knora-api:MovingImageRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasMovingImageFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasMovingImageFileValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasStandoffLinkToValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2632,27 +2645,32 @@ knora-api:MovingImageRepresentation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; knora-api:isResourceClass true . @@ -2663,6 +2681,14 @@ knora-api:valueHasUUID knora-api:objectType xsd:string ; knora-api:subjectType knora-api:Value . +knora-api:isSequenceOfValue + rdf:type owl:ObjectProperty ; + rdfs:subPropertyOf knora-api:hasLinkToValue ; + knora-api:isLinkValueProperty true ; + knora-api:isResourceProperty true ; + knora-api:objectType knora-api:LinkValue ; + knora-api:subjectType knora-api:Resource . + knora-api:standoffTagHasStart rdf:type owl:DatatypeProperty ; knora-api:objectType xsd:integer ; @@ -2680,27 +2706,27 @@ knora-api:DeletedResource rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2710,57 +2736,57 @@ knora-api:DeletedResource rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser ] ; knora-api:isResourceClass true . @@ -2788,11 +2814,6 @@ knora-api:AudioFileValue owl:maxCardinality 1 ; owl:onProperty knora-api:deleteComment ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -2801,22 +2822,22 @@ knora-api:AudioFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2836,17 +2857,22 @@ knora-api:AudioFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:fileValueHasFilename ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2856,7 +2882,7 @@ knora-api:AudioFileValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + owl:onProperty knora-api:attachedToUser ] ; knora-api:isValueClass true . @@ -2940,7 +2966,7 @@ knora-api:StandoffTimeTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2949,28 +2975,28 @@ knora-api:StandoffTimeTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:timeValueAsTimeStamp + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -2980,12 +3006,12 @@ knora-api:StandoffTimeTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:timeValueAsTimeStamp ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3011,55 +3037,55 @@ knora-api:Value rdf:type owl:Class ; rdfs:subClassOf knora-api:ValueBase ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:valueAsString ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:versionArkUrl ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deletedBy + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:valueHasUUID ] ; knora-api:isValueClass true . @@ -3074,13 +3100,13 @@ knora-api:StandoffUriTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3089,38 +3115,38 @@ knora-api:StandoffUriTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:uriValueAsUri ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:uriValueAsUri + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -3205,73 +3231,73 @@ knora-api:BooleanValue rdfs:subClassOf knora-api:Value , knora-api:BooleanBase ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:booleanValueAsBoolean + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:booleanValueAsBoolean ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; knora-api:isValueClass true . @@ -3283,52 +3309,61 @@ knora-api:XSLTransformation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasTextFileValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3338,36 +3373,27 @@ knora-api:XSLTransformation rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFileValue + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:lastModificationDate ] ; knora-api:isResourceClass true . @@ -3393,7 +3419,17 @@ knora-api:StandoffColorTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:colorValueAsColor + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3403,22 +3439,22 @@ knora-api:StandoffColorTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:colorValueAsColor + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3432,18 +3468,8 @@ knora-api:StandoffColorTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; - rdfs:subClassOf [ rdf:type 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 . @@ -3465,13 +3491,6 @@ knora-api:ListNode rdf:type owl:Class ; owl:onProperty knora-api:attachedToProject ] . -knora-api:isLinkValueProperty - rdf:type owl:AnnotationProperty ; - rdfs:comment "Indicates whether a property points to a link value (reification)" ; - rdfs:label "is link value property" ; - knora-api:objectType xsd:boolean ; - knora-api:subjectType owl:ObjectProperty . - knora-api:dateValueHasStartDay rdf:type owl:DatatypeProperty ; rdfs:comment "Represents the start day of a date value." ; @@ -3480,6 +3499,13 @@ knora-api:dateValueHasStartDay knora-api:objectType xsd:integer ; knora-api:subjectType knora-api:DateBase . +knora-api:isLinkValueProperty + rdf:type owl:AnnotationProperty ; + rdfs:comment "Indicates whether a property points to a link value (reification)" ; + rdfs:label "is link value property" ; + knora-api:objectType xsd:boolean ; + knora-api:subjectType owl:ObjectProperty . + knora-api:geonameValueAsGeonameCode rdf:type owl:DatatypeProperty ; rdfs:comment "Represents the literal Geoname code of a GeonameValue." ; @@ -3530,26 +3556,27 @@ knora-api:GeomValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueCreationDate ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:geometryValueAsGeometry + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3559,63 +3586,62 @@ knora-api:GeomValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:deleteComment ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:geometryValueAsGeometry ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:isValueClass true . knora-api:Resource rdf:type owl:Class ; rdfs:comment "Represents something in the world, or an abstract thing" ; rdfs:label "Resource" ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; @@ -3623,51 +3649,51 @@ knora-api:Resource rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:attachedToProject + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:hasPermissions ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:hasStandoffLinkToValue ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; knora-api:isResourceClass true . @@ -3714,18 +3740,18 @@ knora-api:TextRepresentation rdfs:subClassOf knora-api:Representation ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3734,72 +3760,72 @@ knora-api:TextRepresentation ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasTextFileValue + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkTo ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:lastModificationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:hasTextFileValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:isDeleted ] ; knora-api:isResourceClass true . @@ -3860,17 +3886,17 @@ knora-api:StandoffLinkTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3879,19 +3905,24 @@ knora-api:StandoffLinkTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -3901,15 +3932,10 @@ knora-api:StandoffLinkTag owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasLink ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -3921,12 +3947,13 @@ knora-api:FileValue rdf:type owl:Class ; rdfs:subClassOf knora-api:Value ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueAsUrl + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3936,17 +3963,20 @@ knora-api:FileValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueHasUUID ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueHasFilename + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:fileValueAsUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3956,26 +3986,22 @@ knora-api:FileValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:fileValueHasFilename + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -3989,8 +4015,8 @@ knora-api:FileValue rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; knora-api:isValueClass true . @@ -4020,7 +4046,7 @@ knora-api:UriValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4030,22 +4056,22 @@ knora-api:UriValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4055,37 +4081,37 @@ knora-api:UriValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:versionArkUrl ] ; knora-api:isValueClass true . @@ -4101,15 +4127,10 @@ knora-api:DecimalValue rdf:type owl:Class ; rdfs:comment "Represents an arbitrary-precision decimal value" ; rdfs:subClassOf knora-api:DecimalBase , knora-api:Value ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4119,17 +4140,12 @@ knora-api:DecimalValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4139,12 +4155,7 @@ knora-api:DecimalValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4156,20 +4167,35 @@ knora-api:DecimalValue owl:cardinality 1 ; owl:onProperty knora-api:valueHasUUID ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:deleteComment ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:isValueClass true . @@ -4199,11 +4225,6 @@ knora-api:isPartOf rdf:type owl:ObjectProperty ; knora-api:objectType knora-api:Resource ; knora-api:subjectType knora-api:Resource . -knora-api:subjectType - rdf:type rdf:Property ; - rdfs:comment "Specifies the required type of the subjects of a property" ; - rdfs:label "Subject type" . - knora-api:booleanValueAsBoolean rdf:type owl:DatatypeProperty ; rdfs:comment "Represents the literal boolean value of a BooleanValue." ; @@ -4212,38 +4233,33 @@ knora-api:booleanValueAsBoolean knora-api:objectType xsd:boolean ; knora-api:subjectType knora-api:BooleanBase . +knora-api:subjectType + rdf:type rdf:Property ; + rdfs:comment "Specifies the required type of the subjects of a property" ; + rdfs:label "Subject type" . + knora-api:DateValue rdf:type owl:Class ; rdfs:comment "Represents a Knora date value" ; rdfs:subClassOf knora-api:DateBase , knora-api:Value ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:dateValueHasEndEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartEra + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartDay + owl:cardinality 1 ; + owl:onProperty knora-api:dateValueHasStartYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4253,47 +4269,52 @@ knora-api:DateValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasStartYear + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:dateValueHasStartMonth ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:dateValueHasCalendar ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:onProperty knora-api:dateValueHasEndMonth ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:dateValueHasStartEra ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4303,27 +4324,32 @@ knora-api:DateValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth + owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:dateValueHasEndDay + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; knora-api:isValueClass true . @@ -4349,12 +4375,7 @@ knora-api:IntervalValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4364,27 +4385,27 @@ knora-api:IntervalValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasEnd + owl:onProperty knora-api:intervalValueHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4393,33 +4414,38 @@ knora-api:IntervalValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:onProperty knora-api:intervalValueHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:intervalValueHasStart + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:valueCreationDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; knora-api:isValueClass true . @@ -4436,17 +4462,17 @@ knora-api:standoffTagHasLink knora-api:objectType knora-api:Resource ; knora-api:subjectType knora-api:StandoffLinkTag . +knora-api:deleteComment + rdf:type owl:DatatypeProperty ; + rdfs:comment "A comment explaining why a resource or value was marked as deleted" ; + knora-api:objectType xsd:string . + knora-api:creationDate rdf:type owl:DatatypeProperty ; rdfs:comment "Indicates when a resource was created" ; knora-api:objectType xsd:dateTimeStamp ; knora-api:subjectType knora-api:Resource . -knora-api:deleteComment - rdf:type owl:DatatypeProperty ; - rdfs:comment "A comment explaining why a resource or value was marked as deleted" ; - knora-api:objectType xsd:string . - knora-api:standoffTagHasEndParent rdf:type owl:ObjectProperty ; knora-api:objectType knora-api:StandoffTag ; @@ -4490,20 +4516,15 @@ knora-api:isRegionOfValue knora-api:TimeValue rdf:type owl:Class ; rdfs:comment "Represents a timestamp" ; rdfs:subClassOf knora-api:Value , knora-api:TimeBase ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4513,27 +4534,27 @@ knora-api:TimeValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:timeValueAsTimeStamp + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:timeValueAsTimeStamp ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4542,19 +4563,24 @@ knora-api:TimeValue rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:userHasPermission ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:valueCreationDate + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -4586,15 +4612,23 @@ knora-api:LinkObj rdf:type owl:Class ; rdfs:comment "Represents a generic link object" ; rdfs:label "Link Object" ; rdfs:subClassOf knora-api:Resource ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasLinkToValue + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label + owl:onProperty knora-api:versionArkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4604,84 +4638,76 @@ knora-api:LinkObj rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasComment + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; owl:onProperty knora-api:hasStandoffLinkTo ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasLinkTo + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasLinkToValue - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasLinkTo + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToProject ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:maxCardinality 1 ; + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToProject + owl:onProperty knora-api:attachedToUser ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteDate ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; @@ -4709,25 +4735,20 @@ knora-api:intValueAsInt knora-api:GeonameValue rdf:type owl:Class ; rdfs:subClassOf knora-api:Value ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:versionArkUrl - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:isDeleted + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:valueCreationDate + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueAsString ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:valueHasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4737,46 +4758,51 @@ knora-api:GeonameValue rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:onProperty knora-api:valueHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:geonameValueAsGeonameCode + owl:maxCardinality 1 ; + owl:onProperty knora-api:isDeleted ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:valueCreationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:valueHasComment + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:cardinality 1 ; + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:valueAsString + owl:cardinality 1 ; + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:geonameValueAsGeonameCode ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:cardinality 1 ; + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:valueHasUUID + owl:onProperty knora-api:versionArkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:arkUrl ] ; knora-api:isValueClass true . @@ -4784,62 +4810,62 @@ knora-api:DateBase rdf:type owl:Class ; rdfs:subClassOf knora-api:ValueBase ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndYear + owl:onProperty knora-api:dateValueHasEndEra + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasEndMonth ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:dateValueHasCalendar ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:dateValueHasStartMonth + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty knora-api:dateValueHasStartDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:dateValueHasEndEra + owl:onProperty knora-api:dateValueHasEndYear ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndMonth + owl:onProperty knora-api:dateValueHasEndDay ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:dateValueHasStartYear ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasEndDay - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; owl:onProperty knora-api:dateValueHasStartEra - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:dateValueHasStartMonth ] . knora-api:Region rdf:type 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 [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasGeometry + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:deleteComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:userHasPermission + owl:onProperty knora-api:attachedToUser + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasGeometry ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality 1 ; - owl:onProperty knora-api:isRegionOf - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasStandoffLinkToValue + owl:onProperty knora-api:hasColor ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4853,12 +4879,12 @@ knora-api:Region rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:versionDate + owl:onProperty knora-api:deleteDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasPermissions + owl:maxCardinality 1 ; + owl:onProperty knora-api:versionDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -4872,61 +4898,61 @@ knora-api:Region rdf:type owl:Class ; ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:lastModificationDate - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:cardinality 1 ; - owl:onProperty knora-api:hasColor + owl:cardinality 1 ; + owl:onProperty knora-api:creationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:creationDate + owl:onProperty knora-api:arkUrl + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty knora-api:hasComment ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteComment + owl:onProperty knora-api:deletedBy ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:attachedToUser + owl:minCardinality 0 ; + owl:onProperty knora-api:hasStandoffLinkToValue ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:arkUrl + owl:onProperty knora-api:userHasPermission ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:isDeleted ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty knora-api:isRegionOf + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty rdfs:label - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty knora-api:hasComment + owl:onProperty knora-api:hasPermissions ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:minCardinality 0 ; - owl:onProperty knora-api:hasIncomingLinkValue + owl:cardinality 1 ; + owl:onProperty rdfs:label ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:deleteDate + owl:onProperty knora-api:lastModificationDate ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:deletedBy + owl:minCardinality 0 ; + owl:onProperty knora-api:hasIncomingLinkValue ] ; knora-api:canBeInstantiated true ; knora-api:isResourceClass true ; diff --git a/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl b/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl index 25fb9118ab..755025a002 100644 --- a/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl +++ b/test_data/ontologyR2RV2/standoffOntologyWithValueObjects.ttl @@ -13,52 +13,52 @@ standoff:StandoffParagraphTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -68,53 +68,53 @@ standoff:StandoffTableCellTag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type 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 . @@ -125,37 +125,42 @@ standoff:StandoffBlockquoteTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -167,11 +172,6 @@ standoff:StandoffBlockquoteTag owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasEnd ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID - ] ; knora-api:isStandoffClass true . standoff:StandoffRootTag @@ -181,17 +181,22 @@ standoff:StandoffRootTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxCardinality 1 ; @@ -199,18 +204,18 @@ standoff:StandoffRootTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -220,17 +225,12 @@ standoff:StandoffRootTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -241,22 +241,17 @@ standoff:StandoffCiteTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -265,8 +260,8 @@ standoff:StandoffCiteTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -276,17 +271,22 @@ standoff:StandoffCiteTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; knora-api:isStandoffClass true . @@ -301,13 +301,13 @@ standoff:StandoffHeader4Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -316,18 +316,18 @@ standoff:StandoffHeader4Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -336,13 +336,13 @@ standoff:StandoffHeader4Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -358,13 +358,13 @@ standoff:StandoffVisualTag rdfs:subClassOf knora-api:StandoffTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -374,37 +374,37 @@ standoff:StandoffVisualTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type 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 . @@ -414,28 +414,23 @@ standoff:StandoffSubscriptTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -450,17 +445,22 @@ standoff:StandoffSubscriptTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; knora-api:isStandoffClass true . @@ -470,8 +470,17 @@ standoff:StandoffHyperlinkTag rdfs:subClassOf knora-api:StandoffUriTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty standoff:standoffHyperlinkTagHasTarget + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -481,17 +490,17 @@ standoff:StandoffHyperlinkTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:uriValueAsUri + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -506,16 +515,7 @@ standoff:StandoffHyperlinkTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty standoff:standoffHyperlinkTagHasTarget + owl:onProperty knora-api:uriValueAsUri ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -524,8 +524,8 @@ standoff:StandoffHyperlinkTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -536,27 +536,22 @@ standoff:StandoffTableRowTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -566,53 +561,48 @@ standoff:StandoffTableRowTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; - knora-api:isStandoffClass true . - -standoff:StandoffHeader3Tag - rdf:type owl:Class ; - rdfs:comment "Represents a header of level 3 in a TextValue" ; - rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; + knora-api:isStandoffClass true . + +standoff:StandoffHeader3Tag + rdf:type owl:Class ; + rdfs:comment "Represents a header of level 3 in a TextValue" ; + rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -622,12 +612,12 @@ standoff:StandoffHeader3Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -637,7 +627,17 @@ standoff:StandoffHeader3Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; knora-api:isStandoffClass true . @@ -645,11 +645,6 @@ standoff:StandoffBoldTag rdf:type owl:Class ; rdfs:comment "Represents bold text in a TextValue" ; rdfs:subClassOf standoff:StandoffVisualTag ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -658,27 +653,32 @@ standoff:StandoffBoldTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -687,13 +687,13 @@ standoff:StandoffBoldTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -704,12 +704,12 @@ standoff:StandoffLineTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -719,27 +719,27 @@ standoff:StandoffLineTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -748,8 +748,8 @@ standoff:StandoffLineTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -760,17 +760,17 @@ standoff:StandoffBrTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -780,32 +780,32 @@ standoff:StandoffBrTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -820,19 +820,14 @@ standoff:StandoffPreTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasStartParent ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -841,17 +836,17 @@ standoff:StandoffPreTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -860,8 +855,13 @@ standoff:StandoffPreTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -869,25 +869,20 @@ standoff:StandoffTableTag rdf:type owl:Class ; rdfs:comment "Represents a table in a TextValue" ; rdfs:subClassOf standoff:StandoffStructuralTag ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -897,27 +892,32 @@ standoff:StandoffTableTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; knora-api:isStandoffClass true . @@ -925,6 +925,11 @@ standoff:StandoffHeader2Tag rdf:type owl:Class ; rdfs:comment "Represents a header of level 2 in a TextValue" ; rdfs:subClassOf standoff:StandoffStructuralTag ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; @@ -937,8 +942,8 @@ standoff:StandoffHeader2Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -952,28 +957,23 @@ standoff:StandoffHeader2Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; owl:onProperty knora-api:standoffTagHasStartParent ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -983,23 +983,18 @@ standoff:StandoffSuperscriptTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1013,23 +1008,28 @@ standoff:StandoffSuperscriptTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndIndex ] ; knora-api:isStandoffClass true . @@ -1039,38 +1039,38 @@ standoff:StandoffItalicTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1084,8 +1084,8 @@ standoff:StandoffItalicTag ] ; rdfs:subClassOf [ rdf:type 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 . @@ -1095,8 +1095,8 @@ standoff:StandoffTableBodyTag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1106,37 +1106,37 @@ standoff:StandoffTableBodyTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1152,27 +1152,27 @@ standoff:StandoffHeader1Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1182,22 +1182,22 @@ standoff:StandoffHeader1Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -1205,11 +1205,6 @@ standoff:StandoffStructuralTag rdf:type owl:Class ; rdfs:comment "Represents structural markup information in a TextValue" ; rdfs:subClassOf knora-api:StandoffTag ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex - ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1222,38 +1217,43 @@ standoff:StandoffStructuralTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -1264,12 +1264,7 @@ standoff:StandoffListElementTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex - ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1279,22 +1274,27 @@ standoff:StandoffListElementTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1304,12 +1304,12 @@ standoff:StandoffListElementTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; knora-api:isStandoffClass true . @@ -1319,28 +1319,28 @@ standoff:StandoffStrikethroughTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1359,13 +1359,13 @@ standoff:StandoffStrikethroughTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -1376,7 +1376,7 @@ standoff:StandoffUnorderedListTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1386,27 +1386,27 @@ standoff:StandoffUnorderedListTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1415,13 +1415,13 @@ standoff:StandoffUnorderedListTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -1432,13 +1432,18 @@ standoff:StandoffHeader6Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasStart ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + knora-api:isInherited true ; + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID + ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; @@ -1447,7 +1452,7 @@ standoff:StandoffHeader6Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1457,28 +1462,23 @@ standoff:StandoffHeader6Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; owl:onProperty knora-api:standoffTagHasEnd ] ; - rdfs:subClassOf [ rdf:type owl:Restriction ; - knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent - ] ; knora-api:isStandoffClass true . standoff:StandoffUnderlineTag @@ -1487,18 +1487,18 @@ standoff:StandoffUnderlineTag rdfs:subClassOf standoff:StandoffVisualTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1507,33 +1507,33 @@ standoff:StandoffUnderlineTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParent ] ; knora-api:isStandoffClass true . @@ -1543,18 +1543,18 @@ standoff:StandoffCodeTag rdfs:subClassOf standoff:StandoffStructuralTag ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1563,33 +1563,33 @@ standoff:StandoffCodeTag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type 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 . @@ -1605,47 +1605,47 @@ standoff:StandoffOrderedListTag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStart + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:onProperty knora-api:standoffTagHasStartIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasStart ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParent + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; knora-api:isStandoffClass true . @@ -1662,17 +1662,17 @@ standoff:StandoffHeader5Tag rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndIndex + owl:onProperty knora-api:standoffTagHasStartParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartIndex + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasStartParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParentIndex + owl:onProperty knora-api:standoffTagHasEndIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; @@ -1681,33 +1681,33 @@ standoff:StandoffHeader5Tag ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasEnd + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasOriginalXMLID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:cardinality 1 ; - owl:onProperty knora-api:standoffTagHasUUID + owl:maxCardinality 1 ; + owl:onProperty knora-api:standoffTagHasEndParent ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasStartParent + owl:onProperty knora-api:standoffTagHasEndParentIndex ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasOriginalXMLID + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasUUID ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; knora-api:isInherited true ; - owl:maxCardinality 1 ; - owl:onProperty knora-api:standoffTagHasEndParentIndex + owl:cardinality 1 ; + owl:onProperty knora-api:standoffTagHasEnd ] ; rdfs:subClassOf [ rdf:type 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 . diff --git a/webapi/scripts/fuseki-init-knora-test.sh b/webapi/scripts/fuseki-init-knora-test.sh index c75e15aeda..2f32dd8b3c 100755 --- a/webapi/scripts/fuseki-init-knora-test.sh +++ b/webapi/scripts/fuseki-init-knora-test.sh @@ -35,3 +35,5 @@ upload-graph ../../test_data/ontologies/webern-onto.ttl http://www.knora.org/ont upload-graph ../../test_data/all_data/webern-data.ttl http://www.knora.org/data/0806/webern upload-graph ../../test_data/ontologies/freetest-onto.ttl http://www.knora.org/ontology/0001/freetest upload-graph ../../test_data/all_data/freetest-data.ttl http://www.knora.org/data/0001/freetest +upload-graph ../../test_data/ontologies/sequences-onto.ttl http://www.knora.org/ontology/0001/sequences +upload-graph ../../test_data/all_data/sequences-data.ttl http://www.knora.org/data/0001/sequences 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 adfc62546d..f3a9b77655 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/OntologyConstants.scala @@ -213,13 +213,16 @@ object OntologyConstants { val ObjectDatatypeConstraint: IRI = KnoraBasePrefixExpansion + "objectDatatypeConstraint" val StandoffParentClassConstraint: IRI = KnoraBasePrefixExpansion + "standoffParentClassConstraint" - val LinkObj: IRI = KnoraBasePrefixExpansion + "LinkObj" - val HasLinkTo: IRI = KnoraBasePrefixExpansion + "hasLinkTo" - val HasLinkToValue: IRI = KnoraBasePrefixExpansion + "hasLinkToValue" - val IsPartOf: IRI = KnoraBasePrefixExpansion + "isPartOf" - val IsPartOfValue: IRI = KnoraBasePrefixExpansion + "isPartOfValue" - val Region: IRI = KnoraBasePrefixExpansion + "Region" - val IsRegionOf: IRI = KnoraBasePrefixExpansion + "isRegionOf" + val LinkObj: IRI = KnoraBasePrefixExpansion + "LinkObj" + val HasLinkTo: IRI = KnoraBasePrefixExpansion + "hasLinkTo" + val HasLinkToValue: IRI = KnoraBasePrefixExpansion + "hasLinkToValue" + val IsPartOf: IRI = KnoraBasePrefixExpansion + "isPartOf" + val IsPartOfValue: IRI = KnoraBasePrefixExpansion + "isPartOfValue" + val IsSequenceOf: IRI = KnoraBasePrefixExpansion + "isSequenceOf" + val IsSequenceOfValue: IRI = KnoraBasePrefixExpansion + "isSequenceOfValue" + val HasSequenceBounds: IRI = KnoraBasePrefixExpansion + "hasSequenceBounds" + val Region: IRI = KnoraBasePrefixExpansion + "Region" + val IsRegionOf: IRI = KnoraBasePrefixExpansion + "isRegionOf" val Value: IRI = KnoraBasePrefixExpansion + "Value" val ValueHas: IRI = KnoraBasePrefixExpansion + "valueHas" @@ -828,6 +831,9 @@ object OntologyConstants { val IsPartOf: IRI = KnoraApiV2PrefixExpansion + "isPartOf" val IsPartOfValue: IRI = KnoraApiV2PrefixExpansion + "isPartOfValue" + val IsSequenceOf: IRI = KnoraApiV2PrefixExpansion + "isSequenceOf" + val IsSequenceOfValue: IRI = KnoraApiV2PrefixExpansion + "isSequenceOfValue" + val HasSequenceBounds: IRI = KnoraApiV2PrefixExpansion + "hasSequenceBounds" val IsRegionOf: IRI = KnoraApiV2PrefixExpansion + "isRegionOf" val IsRegionOfValue: IRI = KnoraApiV2PrefixExpansion + "isRegionOfValue" val HasGeometry: IRI = KnoraApiV2PrefixExpansion + "hasGeometry" @@ -978,11 +984,14 @@ object OntologyConstants { val HasLinkTo: IRI = KnoraApiV2PrefixExpansion + "hasLinkTo" val HasIncomingLink: IRI = KnoraApiV2PrefixExpansion + "hasIncomingLink" - val IsPartOf: IRI = KnoraApiV2PrefixExpansion + "isPartOf" - val IsRegionOf: IRI = KnoraApiV2PrefixExpansion + "isRegionOf" - val HasGeometry: IRI = KnoraApiV2PrefixExpansion + "hasGeometry" - val HasColor: IRI = KnoraApiV2PrefixExpansion + "hasColor" - val HasComment: IRI = KnoraApiV2PrefixExpansion + "hasComment" + val IsPartOf: IRI = KnoraApiV2PrefixExpansion + "isPartOf" + val IsRegionOf: IRI = KnoraApiV2PrefixExpansion + "isRegionOf" + val IsSequenceOf: IRI = KnoraApiV2PrefixExpansion + "isSequenceOf" + val IsSequenceOfValue: IRI = KnoraApiV2PrefixExpansion + "isSequenceOfValue" + val HasSequenceBounds: IRI = KnoraApiV2PrefixExpansion + "hasSequenceBounds" + val HasGeometry: IRI = KnoraApiV2PrefixExpansion + "hasGeometry" + val HasColor: IRI = KnoraApiV2PrefixExpansion + "hasColor" + val HasComment: IRI = KnoraApiV2PrefixExpansion + "hasComment" val HasFile: IRI = KnoraApiV2PrefixExpansion + "hasFile" diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala index 865fb0e30a..ec925cf69e 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala @@ -6,12 +6,14 @@ package org.knora.webapi.messages.admin.responder.usersmessages import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport -import org.knora.webapi._ import dsp.errors.BadRequestException import dsp.errors.DataConversionException +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.User._ +import org.knora.webapi._ import org.knora.webapi.messages.OntologyConstants -import org.knora.webapi.messages.StringFormatter import org.knora.webapi.messages.ResponderRequest.KnoraRequestADM +import org.knora.webapi.messages.StringFormatter import org.knora.webapi.messages.admin.responder.KnoraResponseADM import org.knora.webapi.messages.admin.responder.groupsmessages.GroupADM import org.knora.webapi.messages.admin.responder.groupsmessages.GroupsADMJsonProtocol @@ -24,7 +26,6 @@ import org.knora.webapi.messages.v1.responder.usermessages._ import spray.json._ import java.util.UUID -import dsp.valueobjects.User._ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersPayloadsADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersPayloadsADM.scala index 3ebe3cc461..fad9d68bfb 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersPayloadsADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersPayloadsADM.scala @@ -6,6 +6,7 @@ package org.knora.webapi.messages.admin.responder.usersmessages import dsp.valueobjects.Iri.UserIri +import dsp.valueobjects.LanguageCode import dsp.valueobjects.User._ /** diff --git a/webapi/src/main/scala/org/knora/webapi/package.scala b/webapi/src/main/scala/org/knora/webapi/package.scala index 1a6739a172..3cc393934a 100644 --- a/webapi/src/main/scala/org/knora/webapi/package.scala +++ b/webapi/src/main/scala/org/knora/webapi/package.scala @@ -11,7 +11,7 @@ package object webapi { * The version of `knora-base` and of the other built-in ontologies that this version of Knora requires. * Must be the same as the object of `knora-base:ontologyVersion` in the `knora-base` ontology being used. */ - val KnoraBaseVersion: String = "knora-base v23" + val KnoraBaseVersion: String = "knora-base v24" /** * `IRI` is a synonym for `String`, used to improve code readability. diff --git a/webapi/src/main/scala/org/knora/webapi/responders/v2/OntologyResponderV2.scala b/webapi/src/main/scala/org/knora/webapi/responders/v2/OntologyResponderV2.scala index fa72dfed49..b38c42e502 100644 --- a/webapi/src/main/scala/org/knora/webapi/responders/v2/OntologyResponderV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/responders/v2/OntologyResponderV2.scala @@ -945,6 +945,7 @@ class OntologyResponderV2(responderData: ResponderData) extends Responder(respon allBaseClassIris = allBaseClassIris.toSet, cacheData = cacheData ) + .fold(e => throw e.head, v => v) // Check that the class definition doesn't refer to any non-shared ontologies in other projects. _ = Cache.checkOntologyReferencesInClassDef( @@ -1361,6 +1362,7 @@ class OntologyResponderV2(responderData: ResponderData) extends Responder(respon cacheData = cacheData, existingLinkPropsToKeep = existingReadClassInfo.linkProperties ) + .fold(e => throw e.head, v => v) // Check that the class definition doesn't refer to any non-shared ontologies in other projects. _ = Cache.checkOntologyReferencesInClassDef( @@ -1612,6 +1614,7 @@ class OntologyResponderV2(responderData: ResponderData) extends Responder(respon allBaseClassIris = allBaseClassIris.toSet, cacheData = cacheData ) + .fold(e => throw e.head, v => v) // Check that the class definition doesn't refer to any non-shared ontologies in other projects. _ = Cache.checkOntologyReferencesInClassDef( diff --git a/webapi/src/main/scala/org/knora/webapi/responders/v2/ResourcesResponderV2.scala b/webapi/src/main/scala/org/knora/webapi/responders/v2/ResourcesResponderV2.scala index 6b04b0ca31..76e399fc6f 100644 --- a/webapi/src/main/scala/org/knora/webapi/responders/v2/ResourcesResponderV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/responders/v2/ResourcesResponderV2.scala @@ -1525,13 +1525,10 @@ class ResourcesResponderV2(responderData: ResponderData) extends ResponderWithSt .toString() ) - resourceRequestResponse: SparqlExtendedConstructResponse <- appActor - .ask( - SparqlExtendedConstructRequest( - sparql = resourceRequestSparql - ) - ) - .mapTo[SparqlExtendedConstructResponse] + resourceRequestResponse: SparqlExtendedConstructResponse <- + appActor + .ask(SparqlExtendedConstructRequest(sparql = resourceRequestSparql)) + .mapTo[SparqlExtendedConstructResponse] // separate resources and values mainResourcesAndValueRdfData: ConstructResponseUtilV2.MainResourcesAndValueRdfData = @@ -1579,19 +1576,17 @@ class ResourcesResponderV2(responderData: ResponderData) extends ResponderWithSt for { - mainResourcesAndValueRdfData: ConstructResponseUtilV2.MainResourcesAndValueRdfData <- getResourcesFromTriplestore( - resourceIris = - resourceIris, - preview = false, - withDeleted = withDeleted, - propertyIri = propertyIri, - valueUuid = valueUuid, - versionDate = versionDate, - queryStandoff = - queryStandoff, - requestingUser = - requestingUser - ) + mainResourcesAndValueRdfData: ConstructResponseUtilV2.MainResourcesAndValueRdfData <- + getResourcesFromTriplestore( + resourceIris = resourceIris, + preview = false, + withDeleted = withDeleted, + propertyIri = propertyIri, + valueUuid = valueUuid, + versionDate = versionDate, + queryStandoff = queryStandoff, + requestingUser = requestingUser + ) // If we're querying standoff, get XML-to standoff mappings. mappingsAsMap: Map[IRI, MappingAndXSLTransformation] <- diff --git a/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/Cardinalities.scala b/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/Cardinalities.scala index 6df4b1900e..7a0b9c074e 100644 --- a/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/Cardinalities.scala +++ b/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/Cardinalities.scala @@ -9,9 +9,9 @@ import akka.actor.ActorRef import akka.http.scaladsl.util.FastFuture import akka.pattern._ import akka.util.Timeout -import org.knora.webapi.InternalSchema import dsp.errors.BadRequestException import dsp.errors.InconsistentRepositoryDataException +import org.knora.webapi.InternalSchema import org.knora.webapi.messages.IriConversions._ import org.knora.webapi.messages.OntologyConstants import org.knora.webapi.messages.OntologyConstants.KnoraBase @@ -178,6 +178,7 @@ object Cardinalities { .filter(_.isLinkProp) // we are only interested in link properties .map(_.entityInfoContent.propertyIri) // turn whatever is left back to a propertyIri ) + .fold(e => throw e.head, v => v) // Check that the class definition doesn't refer to any non-shared ontologies in other projects. _ = Cache.checkOntologyReferencesInClassDef( @@ -341,6 +342,7 @@ object Cardinalities { .filter(_.isLinkProp) // we are only interested in link properties .map(_.entityInfoContent.propertyIri) // turn whatever is left back to a propertyIri ) + .fold(e => throw e.head, v => v) // Check that the class definition doesn't refer to any non-shared ontologies in other projects. _ = Cache.checkOntologyReferencesInClassDef( diff --git a/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/OntologyHelpers.scala b/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/OntologyHelpers.scala index bf08af82c2..de1c0fb0ee 100644 --- a/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/OntologyHelpers.scala +++ b/webapi/src/main/scala/org/knora/webapi/responders/v2/ontology/OntologyHelpers.scala @@ -31,11 +31,15 @@ import org.knora.webapi.messages.v2.responder.ontologymessages._ import org.knora.webapi.messages.v2.responder.standoffmessages.StandoffDataTypeClasses import org.knora.webapi.responders.v2.ontology.Cache.OntologyCacheData import org.knora.webapi.settings.KnoraSettingsImpl +import zio.prelude.Validation import java.time.Instant import scala.collection.immutable import scala.concurrent.ExecutionContext import scala.concurrent.Future +import scala.util.Failure +import scala.util.Success +import scala.util.Try object OntologyHelpers { @@ -774,144 +778,180 @@ object OntologyHelpers { * @param cacheData the ontology cache. * @param existingLinkPropsToKeep the link properties that are already defined on the class and that * will be kept after the update. - * @return the updated class definition, and the cardinalities resulting from inheritance. + * @return A Validation containing either a Throwable or the updated class definition, and the cardinalities resulting from inheritance. */ def checkCardinalitiesBeforeAddingAndIfNecessaryAddLinkValueProperties( internalClassDef: ClassInfoContentV2, allBaseClassIris: Set[SmartIri], cacheData: OntologyCacheData, existingLinkPropsToKeep: Set[SmartIri] = Set.empty - )(implicit stringFormatter: StringFormatter): (ClassInfoContentV2, Map[SmartIri, KnoraCardinalityInfo]) = { - // If the class has cardinalities, check that the properties are already defined as Knora properties. - - val propertyDefsForDirectCardinalities: Set[ReadPropertyInfoV2] = internalClassDef.directCardinalities.keySet.map { - propertyIri => - if ( - !isKnoraResourceProperty( - propertyIri, - cacheData - ) || propertyIri.toString == OntologyConstants.KnoraBase.ResourceProperty || propertyIri.toString == OntologyConstants.KnoraBase.HasValue - ) { - throw NotFoundException(s"Invalid property for cardinality: <${propertyIri.toOntologySchema(ApiV2Complex)}>") - } - - cacheData.ontologies(propertyIri.getOntologyFromEntity).properties(propertyIri) - } + )(implicit + stringFormatter: StringFormatter + ): Validation[Throwable, (ClassInfoContentV2, Map[SmartIri, KnoraCardinalityInfo])] = { + for { + // If the class has cardinalities, check that the properties are already defined as Knora properties. + propertyDefsForDirectCardinalities <- { + Validation + .validateAll(internalClassDef.directCardinalities.keySet.map { propertyIri => + if ( + propertyIri.toString == OntologyConstants.KnoraBase.ResourceProperty || propertyIri.toString == OntologyConstants.KnoraBase.HasValue + ) + Validation.fail( + BadRequestException( + s"Invalid property for cardinality: <${propertyIri.toOntologySchema(ApiV2Complex)}> - must not use this built-in property directly." + ) + ) + else if (!isKnoraResourceProperty(propertyIri, cacheData)) + Validation.fail( + NotFoundException( + s"Invalid property for cardinality: <${propertyIri.toOntologySchema(ApiV2Complex)}> - not found in ontology cache." + ) + ) + else { + Validation.succeed(cacheData.ontologies(propertyIri.getOntologyFromEntity).properties(propertyIri)) + } + }.toList) + .map(_.toSet) + } - val existingLinkValuePropsToKeep = existingLinkPropsToKeep.map(_.fromLinkPropToLinkValueProp) - val newLinkPropsInClass: Set[SmartIri] = propertyDefsForDirectCardinalities - .filter(_.isLinkProp) - .map(_.entityInfoContent.propertyIri) -- existingLinkPropsToKeep - val newLinkValuePropsInClass: Set[SmartIri] = propertyDefsForDirectCardinalities - .filter(_.isLinkValueProp) - .map(_.entityInfoContent.propertyIri) -- existingLinkValuePropsToKeep - - // Don't allow link value prop cardinalities to be included in the request. - - if (newLinkValuePropsInClass.nonEmpty) { - throw BadRequestException( - s"In class ${internalClassDef.classIri.toOntologySchema(ApiV2Complex)}, cardinalities have been submitted for one or more link value properties: ${newLinkValuePropsInClass - .map(_.toOntologySchema(ApiV2Complex)) - .mkString(", ")}. Just submit the link properties, and the link value properties will be included automatically." - ) - } + existingLinkValuePropsToKeep = existingLinkPropsToKeep.map(_.fromLinkPropToLinkValueProp) + newLinkPropsInClass: Set[SmartIri] = propertyDefsForDirectCardinalities + .filter(_.isLinkProp) + .map(_.entityInfoContent.propertyIri) -- existingLinkPropsToKeep + newLinkValuePropsInClass: Set[SmartIri] = propertyDefsForDirectCardinalities + .filter(_.isLinkValueProp) + .map(_.entityInfoContent.propertyIri) -- existingLinkValuePropsToKeep + + // Don't allow link value prop cardinalities to be included in the request. + _ <- if (newLinkValuePropsInClass.nonEmpty) { + Validation.fail( + BadRequestException( + s"In class ${internalClassDef.classIri.toOntologySchema(ApiV2Complex)}, cardinalities have been submitted for one or more link value properties: ${newLinkValuePropsInClass + .map(_.toOntologySchema(ApiV2Complex)) + .mkString(", ")}. Just submit the link properties, and the link value properties will be included automatically." + ) + ) + } else { Validation.succeed(()) } + + // Add a link value prop cardinality for each new link prop cardinality. + + linkValuePropCardinalitiesToAdd <- + Validation.fromTry(Try(newLinkPropsInClass.map { linkPropIri => + val linkValuePropIri = linkPropIri.fromLinkPropToLinkValueProp + + // Ensure that the link value prop exists. + cacheData + .ontologies(linkValuePropIri.getOntologyFromEntity) + .properties + .getOrElse( + linkValuePropIri, + throw NotFoundException(s"Link value property <$linkValuePropIri> not found") + ) - // Add a link value prop cardinality for each new link prop cardinality. + linkValuePropIri -> internalClassDef.directCardinalities(linkPropIri) + }.toMap)) - val linkValuePropCardinalitiesToAdd: Map[SmartIri, KnoraCardinalityInfo] = newLinkPropsInClass.map { linkPropIri => - val linkValuePropIri = linkPropIri.fromLinkPropToLinkValueProp + classDefWithAddedLinkValueProps: ClassInfoContentV2 = + internalClassDef.copy( + directCardinalities = internalClassDef.directCardinalities ++ linkValuePropCardinalitiesToAdd + ) - // Ensure that the link value prop exists. - cacheData - .ontologies(linkValuePropIri.getOntologyFromEntity) - .properties - .getOrElse(linkValuePropIri, throw NotFoundException(s"Link value property <$linkValuePropIri> not found")) + // Get the cardinalities that the class can inherit. If the ontology of the base class can't be found, it's assumed to be an external ontology (p.ex. foaf). - linkValuePropIri -> internalClassDef.directCardinalities(linkPropIri) - }.toMap + cardinalitiesAvailableToInherit: Map[SmartIri, KnoraCardinalityInfo] = + classDefWithAddedLinkValueProps.subClassOf.flatMap { baseClassIri: SmartIri => + val ontology = cacheData.ontologies.getOrElse(baseClassIri.getOntologyFromEntity, None) + ontology match { + case ontology: ReadOntologyV2 => ontology.classes(baseClassIri).allCardinalities + case _ => None + } + }.toMap - val classDefWithAddedLinkValueProps: ClassInfoContentV2 = internalClassDef.copy( - directCardinalities = internalClassDef.directCardinalities ++ linkValuePropCardinalitiesToAdd - ) + // Check that the cardinalities directly defined on the class are compatible with any inheritable + // cardinalities, and let directly-defined cardinalities override cardinalities in base classes. + + cardinalitiesForClassWithInheritance <- + Validation.fromTry( + Try( + overrideCardinalities( + classIri = internalClassDef.classIri, + thisClassCardinalities = classDefWithAddedLinkValueProps.directCardinalities, + inheritableCardinalities = cardinalitiesAvailableToInherit, + allSubPropertyOfRelations = cacheData.subPropertyOfRelations, + errorSchema = ApiV2Complex, + errorFun = { msg: String => + throw BadRequestException( + msg + ) + } + ) + ) + ) - // Get the cardinalities that the class can inherit. If the ontology of the base class can't be found, it's assumed to be an external ontology (p.ex. foaf). + // Check that the class is a subclass of all the classes that are subject class constraints of the Knora resource properties in its cardinalities. - val cardinalitiesAvailableToInherit: Map[SmartIri, KnoraCardinalityInfo] = - classDefWithAddedLinkValueProps.subClassOf.flatMap { baseClassIri: SmartIri => - val ontology = cacheData.ontologies.getOrElse(baseClassIri.getOntologyFromEntity, None) - ontology match { - case ontology: ReadOntologyV2 => ontology.classes(baseClassIri).allCardinalities - case _ => None + knoraResourcePropertyIrisInCardinalities = + cardinalitiesForClassWithInheritance.keySet.filter { propertyIri => + isKnoraResourceProperty( + propertyIri = propertyIri, + cacheData = cacheData + ) } - }.toMap - - // Check that the cardinalities directly defined on the class are compatible with any inheritable - // cardinalities, and let directly-defined cardinalities override cardinalities in base classes. - - val cardinalitiesForClassWithInheritance: Map[SmartIri, KnoraCardinalityInfo] = overrideCardinalities( - classIri = internalClassDef.classIri, - thisClassCardinalities = classDefWithAddedLinkValueProps.directCardinalities, - inheritableCardinalities = cardinalitiesAvailableToInherit, - allSubPropertyOfRelations = cacheData.subPropertyOfRelations, - errorSchema = ApiV2Complex, - errorFun = { msg: String => - throw BadRequestException(msg) - } - ) - - // Check that the class is a subclass of all the classes that are subject class constraints of the Knora resource properties in its cardinalities. - - val knoraResourcePropertyIrisInCardinalities = cardinalitiesForClassWithInheritance.keySet.filter { propertyIri => - isKnoraResourceProperty( - propertyIri = propertyIri, - cacheData = cacheData - ) - } - - val allClassCardinalityKnoraPropertyDefs: Map[SmartIri, PropertyInfoContentV2] = - knoraResourcePropertyIrisInCardinalities.map { propertyIri => - propertyIri -> cacheData.ontologies(propertyIri.getOntologyFromEntity).properties(propertyIri).entityInfoContent - }.toMap - - checkSubjectClassConstraintsViaCardinalities( - internalClassDef = classDefWithAddedLinkValueProps, - allBaseClassIris = allBaseClassIris, - allClassCardinalityKnoraPropertyDefs = allClassCardinalityKnoraPropertyDefs, - errorSchema = ApiV2Complex, - errorFun = { msg: String => - throw BadRequestException(msg) - } - ) - // It cannot have cardinalities both on property P and on a subproperty of P. - - val maybePropertyAndSubproperty: Option[(SmartIri, SmartIri)] = findPropertyAndSubproperty( - propertyIris = cardinalitiesForClassWithInheritance.keySet, - subPropertyOfRelations = cacheData.subPropertyOfRelations - ) + allClassCardinalityKnoraPropertyDefs: Map[SmartIri, PropertyInfoContentV2] = + knoraResourcePropertyIrisInCardinalities.map { propertyIri => + propertyIri -> cacheData + .ontologies(propertyIri.getOntologyFromEntity) + .properties(propertyIri) + .entityInfoContent + }.toMap - maybePropertyAndSubproperty match { - case Some((basePropertyIri, propertyIri)) => - throw BadRequestException( - s"Class <${classDefWithAddedLinkValueProps.classIri.toOntologySchema(ApiV2Complex)}> has a cardinality on property <${basePropertyIri - .toOntologySchema(ApiV2Complex)}> and on its subproperty <${propertyIri.toOntologySchema(ApiV2Complex)}>" - ) + _ <- Validation.fromTry( + Try( + checkSubjectClassConstraintsViaCardinalities( + internalClassDef = classDefWithAddedLinkValueProps, + allBaseClassIris = allBaseClassIris, + allClassCardinalityKnoraPropertyDefs = allClassCardinalityKnoraPropertyDefs, + errorSchema = ApiV2Complex, + errorFun = { msg: String => + throw BadRequestException(msg) + } + ) + ) + ) - case None => () - } + // It cannot have cardinalities both on property P and on a subproperty of P. + + _ <- findPropertyAndSubproperty( + propertyIris = cardinalitiesForClassWithInheritance.keySet, + subPropertyOfRelations = cacheData.subPropertyOfRelations + ) match { + case Some((basePropertyIri, propertyIri)) => + Validation.fail( + BadRequestException( + s"Class <${classDefWithAddedLinkValueProps.classIri.toOntologySchema(ApiV2Complex)}> has a cardinality on property <${basePropertyIri + .toOntologySchema(ApiV2Complex)}> and on its subproperty <${propertyIri.toOntologySchema(ApiV2Complex)}>" + ) + ) - // Check for invalid cardinalities on boolean properties. - checkForInvalidBooleanCardinalities( - classIri = internalClassDef.classIri, - directCardinalities = internalClassDef.directCardinalities, - allPropertyDefs = cacheData.allPropertyDefs, - schemaForErrors = ApiV2Complex, - errorFun = { msg: String => - throw BadRequestException(msg) - } - ) + case None => Validation.succeed(()) + } - (classDefWithAddedLinkValueProps, cardinalitiesForClassWithInheritance) + // Check for invalid cardinalities on boolean properties. + _ <- Validation.fromTry( + Try( + checkForInvalidBooleanCardinalities( + classIri = internalClassDef.classIri, + directCardinalities = internalClassDef.directCardinalities, + allPropertyDefs = cacheData.allPropertyDefs, + schemaForErrors = ApiV2Complex, + errorFun = { msg: String => + throw BadRequestException(msg) + } + ) + ) + ) + } yield (classDefWithAddedLinkValueProps, cardinalitiesForClassWithInheritance) } /** diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala index 84ae4d2280..ca8b14af30 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala @@ -8,10 +8,12 @@ package org.knora.webapi.routing.admin import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.PathMatcher import akka.http.scaladsl.server.Route +import dsp.errors.BadRequestException +import dsp.valueobjects.Iri.UserIri +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.User._ import io.swagger.annotations._ import org.knora.webapi.annotation.ApiMayChange -import dsp.errors.BadRequestException - import org.knora.webapi.messages.admin.responder.usersmessages.UsersADMJsonProtocol._ import org.knora.webapi.messages.admin.responder.usersmessages._ import org.knora.webapi.messages.util.KnoraSystemInstances @@ -24,8 +26,6 @@ import zio.prelude.Validation import java.util.UUID import javax.ws.rs.Path import scala.concurrent.Future -import dsp.valueobjects.Iri.UserIri -import dsp.valueobjects.User._ object UsersRouteADM { val UsersBasePath: PathMatcher[Unit] = PathMatcher("admin" / "users") diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala index 3c96787526..cb3e45d14a 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala @@ -11,7 +11,11 @@ import akka.http.scaladsl.server.PathMatcher import akka.http.scaladsl.server.Route import dsp.constants.SalsahGui import dsp.errors.BadRequestException +import dsp.errors.ValidationException +import dsp.schema.domain.CreatePropertyCommand +import dsp.schema.domain.{SmartIri => SmartIriV3} import dsp.valueobjects.Iri._ +import dsp.valueobjects.LangString import dsp.valueobjects.Schema._ import dsp.valueobjects.V2 import org.knora.webapi.ApiV2Complex @@ -20,6 +24,7 @@ import org.knora.webapi.messages.IriConversions._ import org.knora.webapi.messages.OntologyConstants import org.knora.webapi.messages.SmartIri import org.knora.webapi.messages.admin.responder.usersmessages.UserADM +import org.knora.webapi.messages.store.triplestoremessages.BooleanLiteralV2 import org.knora.webapi.messages.store.triplestoremessages.SmartIriLiteralV2 import org.knora.webapi.messages.store.triplestoremessages.StringLiteralV2 import org.knora.webapi.messages.util.rdf.JsonLDDocument @@ -860,6 +865,139 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) settings = settings, log = log ) + + // get gui related values from request and validate them by making value objects from it + + // get ontology info from request + inputOntology: InputOntologyV2 = InputOntologyV2.fromJsonLD(requestDoc) + propertyUpdateInfo: PropertyUpdateInfo = OntologyUpdateHelper.getPropertyDef(inputOntology) + propertyInfoContent: PropertyInfoContentV2 = propertyUpdateInfo.propertyInfoContent + + // get the (optional) gui element + maybeGuiElement: Option[SmartIri] = + propertyInfoContent.predicates + .get(SalsahGui.External.GuiElementProp.toSmartIri) + .map { predicateInfoV2: PredicateInfoV2 => + predicateInfoV2.objects.head match { + case guiElement: SmartIriLiteralV2 => guiElement.value.toOntologySchema(InternalSchema) + case other => throw BadRequestException(s"Unexpected object for salsah-gui:guiElement: $other") + } + } + + // validate the gui element by creating value object + validatedGuiElement = maybeGuiElement match { + case Some(guiElement) => GuiElement.make(guiElement.toString()).map(Some(_)) + case None => Validation.succeed(None) + } + + // get the gui attribute(s) + maybeGuiAttributes: List[String] = + propertyInfoContent.predicates + .get(SalsahGui.External.GuiAttribute.toSmartIri) + .map { predicateInfoV2: PredicateInfoV2 => + predicateInfoV2.objects.map { + case guiAttribute: StringLiteralV2 => guiAttribute.value + case other => throw BadRequestException(s"Unexpected object for salsah-gui:guiAttribute: $other") + }.toList + } + .getOrElse(List()) + + // validate the gui attributes by creating value objects + guiAttributes = maybeGuiAttributes.map(guiAttribute => GuiAttribute.make(guiAttribute)) + + validatedGuiAttributes = Validation.validateAll(guiAttributes).map(_.toSet) + + // validate the combination of gui element and gui attribute by creating a GuiObject value object + guiObject = Validation + .validate(validatedGuiAttributes, validatedGuiElement) + .flatMap(values => GuiObject.make(values._1, values._2)) + + ontologyIri = + Validation.succeed(SmartIriV3(inputOntology.ontologyMetadata.ontologyIri.toString())) + lastModificationDate = Validation.succeed(propertyUpdateInfo.lastModificationDate) + propertyIri = Validation.succeed(SmartIriV3(propertyInfoContent.propertyIri.toString())) + subjectType = propertyInfoContent.predicates.get( + OntologyConstants.KnoraBase.SubjectClassConstraint.toSmartIri + ) match { + case None => Validation.succeed(None) + case Some(value) => + value.objects.head match { + case objectType: SmartIriLiteralV2 => + Validation.succeed( + Some( + SmartIriV3(objectType.value.toOntologySchema(InternalSchema).toString()) + ) + ) + case other => + Validation.fail(ValidationException(s"Unexpected subject type for $other")) + } + } + objectType = + propertyInfoContent.predicates.get(OntologyConstants.KnoraApiV2Complex.ObjectType.toSmartIri) match { + case None => Validation.fail(ValidationException(s"Object type cannot be empty.")) + case Some(value) => + value.objects.head match { + case objectType: SmartIriLiteralV2 => + Validation.succeed( + SmartIriV3(objectType.value.toOntologySchema(InternalSchema).toString()) + ) + case other => Validation.fail(ValidationException(s"Unexpected object type for $other")) + } + } + label = propertyInfoContent.predicates.get(OntologyConstants.Rdfs.Label.toSmartIri) match { + case None => Validation.fail(ValidationException("Label missing")) + case Some(value) => + value.objects.head match { + case StringLiteralV2(value, Some(language)) => LangString.makeFromStrings(language, value) + case StringLiteralV2(_, None) => + Validation.fail(ValidationException("Label missing the language tag")) + case _ => Validation.fail(ValidationException("Unexpected Type for Label")) + } + } + comment = propertyInfoContent.predicates.get(OntologyConstants.Rdfs.Comment.toSmartIri) match { + case None => Validation.succeed(None) + case Some(value) => + value.objects.head match { + case StringLiteralV2(value, Some(language)) => + LangString.makeFromStrings(language, value).map(Some(_)) + case StringLiteralV2(_, None) => + Validation.fail(ValidationException("Comment missing the language tag")) + case _ => Validation.fail(ValidationException("Unexpected Type for Comment")) + } + } + superProperties = + propertyInfoContent.subPropertyOf.toList.map(smartIri => SmartIriV3(smartIri.toString())) match { + case Nil => Validation.fail(ValidationException("SuperProperties cannot be empty.")) + case superProps => Validation.succeed(superProps) + } + + createPropertyCommand: CreatePropertyCommand = + Validation + .validate( + ontologyIri, + lastModificationDate, + propertyIri, + subjectType, + objectType, + label, + comment, + superProperties, + guiObject + ) + .flatMap(values => + CreatePropertyCommand.make( + values._1, + values._2, + values._3, + values._4, + values._5, + values._6, + values._7, + values._8, + values._9 + ) + ) + .fold(e => throw e.head, v => v) } yield requestMessage RouteUtilV2.runRdfRouteWithFuture( diff --git a/webapi/src/main/scala/org/knora/webapi/store/triplestore/upgrade/RepositoryUpdatePlan.scala b/webapi/src/main/scala/org/knora/webapi/store/triplestore/upgrade/RepositoryUpdatePlan.scala index ac27fdab72..e9c4ddb1bc 100644 --- a/webapi/src/main/scala/org/knora/webapi/store/triplestore/upgrade/RepositoryUpdatePlan.scala +++ b/webapi/src/main/scala/org/knora/webapi/store/triplestore/upgrade/RepositoryUpdatePlan.scala @@ -50,7 +50,8 @@ object RepositoryUpdatePlan { PluginForKnoraBaseVersion(versionNumber = 20, plugin = new UpgradePluginPR2018(log)), PluginForKnoraBaseVersion(versionNumber = 21, plugin = new UpgradePluginPR2079(log)), PluginForKnoraBaseVersion(versionNumber = 22, plugin = new UpgradePluginPR2081(log)), - PluginForKnoraBaseVersion(versionNumber = 23, plugin = new UpgradePluginPR2094(log)) + PluginForKnoraBaseVersion(versionNumber = 23, plugin = new UpgradePluginPR2094(log)), + PluginForKnoraBaseVersion(versionNumber = 24, plugin = new NoopPlugin) // PR 2076 // KEEP IT ON THE BOTTOM // From "versionNumber = 6" don't use prBasedVersionString! ) 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 266aed7bd4..6c4c060b71 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 @@ -5,11 +5,14 @@ import akka.http.scaladsl.model._ import akka.http.scaladsl.model.headers.Accept import akka.http.scaladsl.model.headers.BasicHttpCredentials import akka.http.scaladsl.testkit.RouteTestTimeout +import dsp.constants.SalsahGui +import dsp.errors.AssertionException +import dsp.valueobjects.LangString +import dsp.valueobjects.LanguageCode import org.knora.webapi._ import org.knora.webapi.e2e.ClientTestDataCollector import org.knora.webapi.e2e.TestDataFileContent import org.knora.webapi.e2e.TestDataFilePath -import dsp.errors.AssertionException import org.knora.webapi.http.directives.DSPApiDirectives import org.knora.webapi.messages.IriConversions._ import org.knora.webapi.messages.OntologyConstants @@ -17,6 +20,7 @@ import org.knora.webapi.messages.SmartIri import org.knora.webapi.messages.StringFormatter import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.messages.util.rdf._ +import org.knora.webapi.messages.v2.responder.ontologymessages.Cardinality import org.knora.webapi.messages.v2.responder.ontologymessages.InputOntologyV2 import org.knora.webapi.messages.v2.responder.ontologymessages.TestResponseParsingModeV2 import org.knora.webapi.models._ @@ -33,7 +37,6 @@ import java.nio.file.Path import java.nio.file.Paths import java.time.Instant import scala.concurrent.ExecutionContextExecutor -import dsp.constants.SalsahGui object OntologyV2R2RSpec { private val anythingUserProfile = SharedTestDataADM.anythingAdminUser @@ -1419,7 +1422,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "anything" : "${SharedOntologyTestDataADM.ANYTHING_ONTOLOGY_IRI_LocalHost}#" | } |} - """.stripMargin + """.stripMargin CollectClientTestData("create-class-without-cardinalities-request", params) @@ -1603,7 +1606,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "anything" : "${SharedOntologyTestDataADM.ANYTHING_ONTOLOGY_IRI_LocalHost}#" | } |} - """.stripMargin + """.stripMargin CollectClientTestData("create-link-property-request", params) @@ -1661,7 +1664,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "anything" : "${SharedOntologyTestDataADM.ANYTHING_ONTOLOGY_IRI_LocalHost}#" | } |} - """.stripMargin + """.stripMargin CollectClientTestData("add-cardinalities-to-class-nothing-request", params) @@ -2559,8 +2562,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "rdfs": "${OntologyConstants.Rdfs.RdfsPrefixExpansion}", | "knora-api": "${OntologyConstants.KnoraApiV2Complex.KnoraApiV2PrefixExpansion}" | } - |} - """.stripMargin + |}""".stripMargin Post("/v2/ontologies", HttpEntity(RdfMediaTypes.`application/ld+json`, createOntologyJson)) ~> addCredentials( BasicHttpCredentials(superUsername, password) @@ -2617,8 +2619,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "xsd" : "http://www.w3.org/2001/XMLSchema#", | "useless" : "${uselessIri.get}#" | } - |} - """.stripMargin + |}""".stripMargin // Convert the submitted JSON-LD to an InputOntologyV2, without SPARQL-escaping, so we can compare it to the response. val paramsAsInput: InputOntologyV2 = @@ -2905,8 +2906,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "xsd" : "http://www.w3.org/2001/XMLSchema#", | "anything" : "${SharedOntologyTestDataADM.ANYTHING_ONTOLOGY_IRI_LocalHost}#" | } - |} - """.stripMargin + |}""".stripMargin Post( "/v2/ontologies/cardinalities", @@ -2957,8 +2957,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "xsd" : "http://www.w3.org/2001/XMLSchema#", | "anything" : "${SharedOntologyTestDataADM.ANYTHING_ONTOLOGY_IRI_LocalHost}#" | } - |} - """.stripMargin + |}""".stripMargin Put("/v2/ontologies/cardinalities", HttpEntity(RdfMediaTypes.`application/ld+json`, params)) ~> addCredentials( BasicHttpCredentials(anythingUsername, password) @@ -2977,13 +2976,19 @@ class OntologyV2R2RSpec extends R2RSpec { "create a class with two cardinalities, use one in data, and allow only removal of the cardinality for the property not used in data" in { // Create a class with no cardinalities. + val label = LangString.make(LanguageCode.en, "A Blue Free Test class").fold(e => throw e.head, v => v) + val comment = Some( + LangString + .make(LanguageCode.en, "A Blue Free Test class used for testing cardinalities") + .fold(e => throw e.head, v => v) + ) val createClassRequestJson = CreateClassRequest .make( ontologyName = "freetest", lastModificationDate = freetestLastModDate, className = "BlueFreeTestClass", - label = LangString("en", "A Blue Free Test class"), - comment = Some(LangString("en", "A Blue Free Test class used for testing cardinalities")) + label = label, + comment = comment ) .value @@ -3001,7 +3006,12 @@ class OntologyV2R2RSpec extends R2RSpec { } // Create a text property. - + val label1 = LangString.make(LanguageCode.en, "blue test text property").fold(e => throw e.head, v => v) + val comment1 = Some( + LangString + .make(LanguageCode.en, "A blue test text property") + .fold(e => throw e.head, v => v) + ) val createTestTextPropRequestJson = CreatePropertyRequest .make( @@ -3010,8 +3020,8 @@ class OntologyV2R2RSpec extends R2RSpec { propertyName = "hasBlueTestTextProp", subjectClassName = Some("BlueFreeTestClass"), propertyType = PropertyValueType.TextValue, - label = LangString("en", "blue test text property"), - comment = Some(LangString("en", "A blue test text property")) + label = label1, + comment = comment1 ) .value @@ -3030,7 +3040,12 @@ class OntologyV2R2RSpec extends R2RSpec { } // Create an integer property. - + val label2 = LangString.make(LanguageCode.en, "blue test integer property").fold(e => throw e.head, v => v) + val comment2 = Some( + LangString + .make(LanguageCode.en, "A blue test integer property") + .fold(e => throw e.head, v => v) + ) val createTestIntegerPropRequestJson = CreatePropertyRequest .make( ontologyName = "freetest", @@ -3038,8 +3053,8 @@ class OntologyV2R2RSpec extends R2RSpec { propertyName = "hasBlueTestIntProp", subjectClassName = Some("BlueFreeTestClass"), propertyType = PropertyValueType.IntValue, - label = LangString("en", "blue test integer property"), - comment = Some(LangString("en", "A blue test integer property")) + label = label2, + comment = comment2 ) .value @@ -3188,8 +3203,7 @@ class OntologyV2R2RSpec extends R2RSpec { | "xsd" : "http://www.w3.org/2001/XMLSchema#", | "freetest" : "${SharedOntologyTestDataADM.FREETEST_ONTOLOGY_IRI_LocalHost}#" | } - |} - """.stripMargin + |}""".stripMargin CollectClientTestData("candeletecardinalities-true-request", params) @@ -3224,13 +3238,19 @@ class OntologyV2R2RSpec extends R2RSpec { "create two classes with the same property, use one in data, and allow removal of the cardinality for the property not used in data" in { // Create TestClassOne with no cardinalities. + val label = LangString.make(LanguageCode.en, "Test class number one").fold(e => throw e.head, v => v) + val comment = Some( + LangString + .make(LanguageCode.en, "A test class used for testing cardinalities") + .fold(e => throw e.head, v => v) + ) val createClassRequestJsonOne = CreateClassRequest .make( ontologyName = "freetest", lastModificationDate = freetestLastModDate, className = "TestClassOne", - label = LangString("en", "Test class number one"), - comment = Some(LangString("en", "A test class used for testing cardinalities")) + label = label, + comment = comment ) .value @@ -3248,13 +3268,19 @@ class OntologyV2R2RSpec extends R2RSpec { } // Create TestClassTwo with no cardinalities + val label1 = LangString.make(LanguageCode.en, "Test class number two").fold(e => throw e.head, v => v) + val comment1 = Some( + LangString + .make(LanguageCode.en, "A test class used for testing cardinalities") + .fold(e => throw e.head, v => v) + ) val createClassRequestJsonTwo = CreateClassRequest .make( ontologyName = "freetest", lastModificationDate = freetestLastModDate, className = "TestClassTwo", - label = LangString("en", "Test class number two"), - comment = Some(LangString("en", "A test class used for testing cardinalities")) + label = label1, + comment = comment1 ) .value @@ -3272,6 +3298,12 @@ class OntologyV2R2RSpec extends R2RSpec { } // Create a text property hasTestTextProp. + val label2 = LangString.make(LanguageCode.en, "Test int property").fold(e => throw e.head, v => v) + val comment2 = Some( + LangString + .make(LanguageCode.en, "A test int property") + .fold(e => throw e.head, v => v) + ) val createPropRequestJson = CreatePropertyRequest .make( ontologyName = "freetest", @@ -3279,8 +3311,8 @@ class OntologyV2R2RSpec extends R2RSpec { propertyName = "hasIntProp", subjectClassName = None, propertyType = PropertyValueType.IntValue, - label = LangString("en", "Test int property"), - comment = Some(LangString("en", "A test int property")) + label = label2, + comment = comment2 ) .value @@ -3534,12 +3566,13 @@ class OntologyV2R2RSpec extends R2RSpec { } "create a class w/o comment" in { + val label = LangString.make(LanguageCode.en, "Test label").fold(e => throw e.head, v => v) val request = CreateClassRequest .make( ontologyName = "freetest", lastModificationDate = freetestLastModDate, className = "testClass", - label = LangString("en", "Test label"), + label = label, comment = None ) .value @@ -3559,6 +3592,7 @@ class OntologyV2R2RSpec extends R2RSpec { } "create a property w/o comment" in { + val label = LangString.make(LanguageCode.en, "Test label").fold(e => throw e.head, v => v) val request = CreatePropertyRequest .make( ontologyName = "freetest", @@ -3566,7 +3600,7 @@ class OntologyV2R2RSpec extends R2RSpec { propertyName = "testProperty", subjectClassName = None, propertyType = PropertyValueType.IntValue, - label = LangString("en", "Test label"), + label = label, comment = None ) .value @@ -3586,6 +3620,274 @@ class OntologyV2R2RSpec extends R2RSpec { } } + "create a class that is a sequence of a video resource" in { + + val videoResourceIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#VideoResource".toSmartIri + val videoSequenceIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#VideoSequence".toSmartIri + val isSequenceOfVideoPropertyIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#isSequenceOfVideo".toSmartIri + + // create VideoResource class + val createVideoClassRequest = CreateClassRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "VideoResource", + subClassOf = Some("knora-api:MovingImageRepresentation") + ) + .value + + Post( + "/v2/ontologies/classes", + HttpEntity(RdfMediaTypes.`application/ld+json`, createVideoClassRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + assert(status == StatusCodes.OK, response.toString) + + val responseString = responseAs[String] + val responseJsonDoc = responseToJsonLDDocument(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + assert(responseAsInput.classes.keySet.contains(videoResourceIri)) + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // create VideoSequence class + val createSequenceClassRequest = CreateClassRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "VideoSequence" + ) + .value + + Post( + "/v2/ontologies/classes", + HttpEntity(RdfMediaTypes.`application/ld+json`, createSequenceClassRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + assert(status == StatusCodes.OK, response.toString) + + val responseString = responseAs[String] + val responseJsonDoc = responseToJsonLDDocument(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + assert(responseAsInput.classes.keySet.contains(videoSequenceIri)) + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // create isSequenceOfVideo property + val sequenceOfPropertyRequest = CreatePropertyRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + propertyName = "isSequenceOfVideo", + subjectClassName = None, + propertyType = PropertyValueType.Resource, + subPropertyOf = Some("knora-api:isSequenceOf") + ) + .value + + Post( + "/v2/ontologies/properties", + HttpEntity(RdfMediaTypes.`application/ld+json`, sequenceOfPropertyRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + + val response = responseAs[String] + assert(status == StatusCodes.OK, response) + val responseJsonDoc = JsonLDUtil.parseJsonLD(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // add cardinality to class + val addCardinalitiesRequestJson = AddCardinalitiesRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "VideoSequence", + restrictions = List( + Restriction( + CardinalityRestriction.CardinalityOne, + onProperty = Property(ontology = "freetest", property = "isSequenceOfVideo") + ), + Restriction( + CardinalityRestriction.CardinalityOne, + onProperty = Property(ontology = "knora-api", property = "hasSequenceBounds") + ) + ) + ) + .value + + Post( + "/v2/ontologies/cardinalities", + HttpEntity(RdfMediaTypes.`application/ld+json`, addCardinalitiesRequestJson) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + val responseStr = responseAs[String] + assert(status == StatusCodes.OK, responseStr) + val responseJsonDoc = JsonLDUtil.parseJsonLD(responseStr) + + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // check the ontology to see if all worked as it should + val url = URLEncoder.encode(s"http://0.0.0.0:3333/ontology/0001/freetest/v2", "UTF-8") + Get( + s"/v2/ontologies/allentities/${url}" + ) ~> ontologiesPath ~> check { + val responseStr: String = responseAs[String] + assert(status == StatusCodes.OK, response.toString) + val responseJsonDoc = JsonLDUtil.parseJsonLD(responseStr) + + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + + assert(responseAsInput.classes.keySet.contains(videoResourceIri)) + assert(responseAsInput.classes.keySet.contains(videoSequenceIri)) + val videoSequenceCardinalities = responseAsInput.classes + .getOrElse(videoSequenceIri, throw new AssertionError(s"Class $videoSequenceIri not found")) + .directCardinalities + assert(videoSequenceCardinalities.keySet.contains(isSequenceOfVideoPropertyIri)) + val cardinality = videoSequenceCardinalities.get(isSequenceOfVideoPropertyIri).get.cardinality + assert(cardinality == Cardinality.MustHaveOne) + } + + } + + "create a class that is a sequence of an audio resource" in { + + val audioResourceIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#AudioResource".toSmartIri + val audioSequenceIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#AudioSequence".toSmartIri + val isSequenceOfAudioPropertyIri = "http://0.0.0.0:3333/ontology/0001/freetest/v2#isSequenceOfAudio".toSmartIri + + // create AudioResource class + val createAudioClassRequest = CreateClassRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "AudioResource", + subClassOf = Some("knora-api:AudioRepresentation") + ) + .value + + Post( + "/v2/ontologies/classes", + HttpEntity(RdfMediaTypes.`application/ld+json`, createAudioClassRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + assert(status == StatusCodes.OK, response.toString) + + val responseString = responseAs[String] + val responseJsonDoc = responseToJsonLDDocument(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + assert(responseAsInput.classes.keySet.contains(audioResourceIri)) + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // create AudioSequence class + val createSequenceClassRequest = CreateClassRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "AudioSequence" + ) + .value + + Post( + "/v2/ontologies/classes", + HttpEntity(RdfMediaTypes.`application/ld+json`, createSequenceClassRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + assert(status == StatusCodes.OK, response.toString) + + val responseString = responseAs[String] + val responseJsonDoc = responseToJsonLDDocument(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + assert(responseAsInput.classes.keySet.contains(audioSequenceIri)) + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // create isSequenceOfAudio property + val sequenceOfPropertyRequest = CreatePropertyRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + propertyName = "isSequenceOfAudio", + subjectClassName = None, + propertyType = PropertyValueType.Resource, + subPropertyOf = Some("knora-api:isSequenceOf") + ) + .value + + Post( + "/v2/ontologies/properties", + HttpEntity(RdfMediaTypes.`application/ld+json`, sequenceOfPropertyRequest) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + + val response = responseAs[String] + assert(status == StatusCodes.OK, response) + val responseJsonDoc = JsonLDUtil.parseJsonLD(response) + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // add cardinality to class + val addCardinalitiesRequestJson = AddCardinalitiesRequest + .make( + ontologyName = "freetest", + lastModificationDate = freetestLastModDate, + className = "AudioSequence", + restrictions = List( + Restriction( + CardinalityRestriction.CardinalityOne, + onProperty = Property(ontology = "freetest", property = "isSequenceOfAudio") + ), + Restriction( + CardinalityRestriction.CardinalityOne, + onProperty = Property(ontology = "knora-api", property = "hasSequenceBounds") + ) + ) + ) + .value + + Post( + "/v2/ontologies/cardinalities", + HttpEntity(RdfMediaTypes.`application/ld+json`, addCardinalitiesRequestJson) + ) ~> addCredentials(BasicHttpCredentials(anythingUsername, password)) ~> ontologiesPath ~> check { + val responseStr = responseAs[String] + assert(status == StatusCodes.OK, responseStr) + val responseJsonDoc = JsonLDUtil.parseJsonLD(responseStr) + + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + freetestLastModDate = responseAsInput.ontologyMetadata.lastModificationDate.get + } + + // check the ontology to see if all worked as it should + val url = URLEncoder.encode(s"http://0.0.0.0:3333/ontology/0001/freetest/v2", "UTF-8") + Get( + s"/v2/ontologies/allentities/${url}" + ) ~> ontologiesPath ~> check { + val responseStr: String = responseAs[String] + assert(status == StatusCodes.OK, response.toString) + val responseJsonDoc = JsonLDUtil.parseJsonLD(responseStr) + + val responseAsInput: InputOntologyV2 = + InputOntologyV2.fromJsonLD(responseJsonDoc, parsingMode = TestResponseParsingModeV2).unescape + + assert(responseAsInput.classes.keySet.contains(audioResourceIri)) + assert(responseAsInput.classes.keySet.contains(audioSequenceIri)) + val audioSequenceCardinalities = responseAsInput.classes + .getOrElse(audioSequenceIri, throw new AssertionError(s"Class $audioSequenceIri not found")) + .directCardinalities + assert(audioSequenceCardinalities.keySet.contains(isSequenceOfAudioPropertyIri)) + val cardinality = audioSequenceCardinalities.get(isSequenceOfAudioPropertyIri).get.cardinality + assert(cardinality == Cardinality.MustHaveOne) + } + } "not create a property with invalid gui attribute" in { val params = s"""{ diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala index f507dc3f80..2a74f8c365 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala @@ -81,6 +81,14 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { RdfDataObject( path = "test_data/ontologies/freetest-onto.ttl", name = "http://www.knora.org/ontology/0001/freetest" + ), + RdfDataObject( + path = "test_data/ontologies/sequences-onto.ttl", + name = "http://www.knora.org/ontology/0001/sequences" + ), + RdfDataObject( + path = "test_data/all_data/sequences-data.ttl", + name = "http://www.knora.org/data/0001/sequences" ) ) @@ -92,6 +100,18 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { // Collects client test data private val clientTestDataCollector = new ClientTestDataCollector(settings) + private def collectClientTestData(fileName: String, fileContent: String, fileExtension: String = "json"): Unit = + clientTestDataCollector.addFile( + TestDataFileContent( + filePath = TestDataFilePath( + directoryPath = clientTestDataPath, + filename = fileName, + fileExtension = fileExtension + ), + text = fileContent + ) + ) + private def successResponse(message: String): String = s"""{ | "knora-api:result" : "$message", @@ -208,16 +228,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { ) compareJSONLDForResourcesResponse(expectedJSONLD = expectedAnswerJSONLD, receivedJSONLD = responseAsString) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "resource-preview", - fileExtension = "json" - ), - text = responseAsString - ) - ) + collectClientTestData("resource-preview", responseAsString) } "perform a resource request for the book 'Reise ins Heilige Land' using the simple schema (specified by an HTTP header) in JSON-LD" in { @@ -507,16 +518,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { ) compareJSONLDForResourcesResponse(expectedJSONLD = expectedAnswerJSONLD, receivedJSONLD = responseAsString) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "testding", - fileExtension = "json" - ), - text = responseAsString - ) - ) + collectClientTestData("testding", responseAsString) // Check that the resource corresponds to the ontology. instanceChecker.check( @@ -539,16 +541,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { ) compareJSONLDForResourcesResponse(expectedJSONLD = expectedAnswerJSONLD, receivedJSONLD = responseAsString) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "thing-with-picture", - fileExtension = "json" - ), - text = responseAsString - ) - ) + collectClientTestData("thing-with-picture", responseAsString) // Check that the resource corresponds to the ontology. instanceChecker.check( @@ -724,16 +717,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { val response: HttpResponse = singleAwaitingRequest(request) val responseAsString = responseToString(response) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "resource-graph", - fileExtension = "json" - ), - text = responseAsString - ) - ) + collectClientTestData("resource-graph", responseAsString) assert(response.status == StatusCodes.OK, responseAsString) val parsedReceivedJsonLD = JsonLDUtil.parseJsonLD(responseAsString) @@ -980,16 +964,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-values-request", - fileExtension = "json" - ), - text = createResourceWithValues - ) - ) + collectClientTestData("create-resource-with-values-request", createResourceWithValues) val request = Post( s"$baseApiUrl/v2/resources", @@ -1098,7 +1073,6 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { // Check that the value is correct in the simple schema. val resourceSimpleAsJsonLD: JsonLDDocument = JsonLDUtil.parseJsonLD(resourceSimpleGetResponseAsString) - println(resourceSimpleAsJsonLD.body) val foafName: String = resourceSimpleAsJsonLD.body.requireString("http://0.0.0.0:3333/ontology/0001/freetest/simple/v2#hasFoafName") assert(foafName == "this is a foaf name") @@ -1146,16 +1120,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-creation-date", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-with-custom-creation-date", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1202,16 +1167,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { val customIRI: IRI = SharedTestDataADM.customResourceIRI val jsonLDEntity = createResourceWithCustomIRI(customIRI) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-IRI-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-with-custom-IRI-request", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1233,7 +1189,6 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLDEntity) ) ~> addCredentials(BasicHttpCredentials(anythingUserEmail, password)) val response: HttpResponse = singleAwaitingRequest(request) - println(responseToString(response)) assert(response.status == StatusCodes.BadRequest, response.toString) } @@ -1245,7 +1200,6 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { HttpEntity(RdfMediaTypes.`application/ld+json`, jsonLDEntity) ) ~> addCredentials(BasicHttpCredentials(anythingUserEmail, password)) val response: HttpResponse = singleAwaitingRequest(request) - println(responseToString(response)) assert(response.status == StatusCodes.BadRequest, response.toString) } @@ -1311,16 +1265,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { val customValueIRI: IRI = SharedTestDataADM.customValueIRI val jsonLDEntity = createResourceWithCustomValueIRI(customValueIRI) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-value-IRI-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-with-custom-value-IRI-request", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1367,16 +1312,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-value-UUID-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-with-custom-value-UUID-request", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1427,16 +1363,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-value-creationDate-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-with-custom-value-creationDate-request", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1498,15 +1425,9 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-with-custom-resourceIRI-creationDate-ValueIri-ValueUUID-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) + collectClientTestData( + "create-resource-with-custom-resourceIRI-creationDate-ValueIri-ValueUUID-request", + jsonLDEntity ) val request = Post( @@ -1580,16 +1501,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "create-resource-as-user", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("create-resource-as-user", jsonLDEntity) val request = Post( s"$baseApiUrl/v2/resources", @@ -1676,16 +1588,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "update-resource-metadata-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("update-resource-metadata-request", jsonLDEntity) val updateRequest = Put( s"$baseApiUrl/v2/resources", @@ -1703,16 +1606,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { ) ) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "update-resource-metadata-response", - fileExtension = "json" - ), - text = updateResponseAsString - ) - ) + collectClientTestData("update-resource-metadata-response", jsonLDEntity) val previewRequest = Get( s"$baseApiUrl/v2/resourcespreview/$aThingIriEncoded" @@ -1764,16 +1658,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "update-resource-metadata-request-with-last-mod-date", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("update-resource-metadata-request-with-last-mod-date", jsonLDEntity) val updateRequest = Put( s"$baseApiUrl/v2/resources", @@ -1793,16 +1678,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { ) ) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "update-resource-metadata-response-with-last-mod-date", - fileExtension = "json" - ), - text = updateResponseAsString - ) - ) + collectClientTestData("update-resource-metadata-response-with-last-mod-date", jsonLDEntity) val previewRequest = Get( s"$baseApiUrl/v2/resourcespreview/$aThingIriEncoded" @@ -1848,16 +1724,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "delete-resource-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("delete-resource-request", jsonLDEntity) val updateRequest = Post( s"$baseApiUrl/v2/resources/delete", @@ -1868,16 +1735,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { assert(updateResponse.status == StatusCodes.OK, updateResponseAsString) assert(JsonParser(updateResponseAsString) == JsonParser(successResponse("Resource marked as deleted"))) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "delete-resource-response", - fileExtension = "json" - ), - text = updateResponseAsString - ) - ) + collectClientTestData("delete-resource-response", jsonLDEntity) val previewRequest = Get( s"$baseApiUrl/v2/resourcespreview/$aThingIriEncoded" @@ -1892,16 +1750,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { val responseType = previewJsonLD.requireString("@type") responseType should equal(OntologyConstants.KnoraApiV2Complex.DeletedResource) - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "deleted-resource-preview-response", - fileExtension = "json" - ), - text = previewResponseAsString - ) - ) + collectClientTestData("deleted-resource-preview-response", jsonLDEntity) } "mark a resource as deleted, supplying a custom delete date" in { @@ -1926,16 +1775,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "delete-resource-with-custom-delete-date-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("delete-resource-with-custom-delete-date-request", jsonLDEntity) val updateRequest = Post( s"$baseApiUrl/v2/resources/delete", @@ -2128,16 +1968,7 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { | } |}""".stripMargin - clientTestDataCollector.addFile( - TestDataFileContent( - filePath = TestDataFilePath( - directoryPath = clientTestDataPath, - filename = "erase-resource-request", - fileExtension = "json" - ), - text = jsonLDEntity - ) - ) + collectClientTestData("erase-resource-request", jsonLDEntity) val updateRequest = Post( s"$baseApiUrl/v2/resources/erase", @@ -2401,6 +2232,176 @@ class ResourcesRouteV2E2ESpec extends E2ESpec(ResourcesRouteV2E2ESpec.config) { val editValueResponseDoc = responseToJsonLDDocument(editValueResponse) assert(editValueResponse.status == StatusCodes.OK, responseToString(editValueResponse)) } + + "correctly load and request resources that have a isSequenceOf relation to a video resource" in { + val cred = BasicHttpCredentials(anythingUserEmail, password) + val valUrl = s"$baseApiUrl/v2/values" + val resUrl = s"$baseApiUrl/v2/resources" + + // get the video resource + val videoResourceIri = URLEncoder.encode("http://rdfh.ch/0001/video-01", "UTF-8") + val videoGetRequest = Get(s"$resUrl/$videoResourceIri") ~> addCredentials(cred) + val videoResponse = singleAwaitingRequest(videoGetRequest) + assert(videoResponse.status == StatusCodes.OK) + + // get the sequence reource pointing to the video resource + val sequenceResourceIri = URLEncoder.encode("http://rdfh.ch/0001/video-sequence-01", "UTF-8") + val sequenceGetRequest = Get(s"$resUrl/$sequenceResourceIri") ~> addCredentials(cred) + val sequenceResponse = singleAwaitingRequest(sequenceGetRequest) + assert(sequenceResponse.status == StatusCodes.OK) + + // get the isSequenceOfValue property on the sequence resource + val sequenceOfUuid = "6CKp1AmZT1SRHYeSOUaJjA" + val sequenceOfRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceOfUuid") ~> addCredentials(cred) + val sequenceOfResponse = singleAwaitingRequest(sequenceOfRequest) + assert(sequenceOfResponse.status == StatusCodes.OK) + + // get the hasSequenceBounds property on the sequence resource + val sequenceBoundsUuid = "vEDim4wvSfGnhSvX6fXcaA" + val sequenceBoundsRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceBoundsUuid") ~> addCredentials(cred) + val sequenceBoundsResponse = singleAwaitingRequest(sequenceBoundsRequest) + assert(sequenceBoundsResponse.status == StatusCodes.OK) + } + + "correctly create and request additional resources that have a isSequenceOf relation to a video resource" in { + val cred = BasicHttpCredentials(anythingUserEmail, password) + val valUrl = s"$baseApiUrl/v2/values" + val resUrl = s"$baseApiUrl/v2/resources" + + // create another sequence of the video resource + val createSequenceJson: String = + """{ + | "@type" : "sequences:VideoSequence", + | "knora-api:isSequenceOfValue" : { + | "@type" : "knora-api:LinkValue", + | "knora-api:linkValueHasTargetIri" : { + | "@id" : "http://rdfh.ch/0001/video-01" + | } + | }, + | "knora-api:hasSequenceBounds" : { + | "@type" : "knora-api:IntervalValue", + | "knora-api:intervalValueHasEnd" : { + | "@type" : "xsd:decimal", + | "@value" : "3.4" + | }, + | "knora-api:intervalValueHasStart" : { + | "@type" : "xsd:decimal", + | "@value" : "1.2" + | } + | }, + | "knora-api:attachedToProject" : { + | "@id" : "http://rdfh.ch/projects/0001" + | }, + | "rdfs:label" : "second sequence", + | "@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#", + | "sequences" : "http://0.0.0.0:3333/ontology/0001/sequences/v2#" + | } + |}""".stripMargin + + val createSequenceRequest = + Post(resUrl, HttpEntity(RdfMediaTypes.`application/ld+json`, createSequenceJson)) ~> addCredentials(cred) + val createSequenceResponse = singleAwaitingRequest(createSequenceRequest) + val createSequenceResponseAsString = responseToString(createSequenceResponse) + assert(createSequenceResponse.status == StatusCodes.OK, createSequenceResponse.toString) + val createSequenceResponseBody = responseToJsonLDDocument(createSequenceResponse).body + val sequenceResourceIri = URLEncoder.encode(createSequenceResponseBody.requireString(JsonLDKeywords.ID), "UTF-8") + + // get the newly created sequence reource + val sequenceGetRequest = Get(s"$resUrl/$sequenceResourceIri") ~> addCredentials(cred) + val sequenceResponse = singleAwaitingRequest(sequenceGetRequest) + assert(sequenceResponse.status == StatusCodes.OK) + val getSequenceResponseBody = responseToJsonLDDocument(sequenceResponse).body + val sequenceOfUuid = getSequenceResponseBody + .requireObject(OntologyConstants.KnoraApiV2Complex.IsSequenceOfValue) + .requireString(OntologyConstants.KnoraApiV2Complex.ValueHasUUID) + val sequenceBoundsUuid = getSequenceResponseBody + .requireObject(OntologyConstants.KnoraApiV2Complex.HasSequenceBounds) + .requireString(OntologyConstants.KnoraApiV2Complex.ValueHasUUID) + + // get the isSequenceOfValue property on the sequence resource + val sequenceOfRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceOfUuid") ~> addCredentials(cred) + val sequenceOfResponse = singleAwaitingRequest(sequenceOfRequest) + assert(sequenceOfResponse.status == StatusCodes.OK) + + // get the hasSequenceBounds property on the sequence resource + val sequenceBoundsRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceBoundsUuid") ~> addCredentials(cred) + val sequenceBoundsResponse = singleAwaitingRequest(sequenceBoundsRequest) + assert(sequenceBoundsResponse.status == StatusCodes.OK) + } + + "correctly create and request resources that have a isSequenceOf-subproperty relation to an audio resource" in { + val cred = BasicHttpCredentials(anythingUserEmail, password) + val valUrl = s"$baseApiUrl/v2/values" + val resUrl = s"$baseApiUrl/v2/resources" + + // create another sequence of the video resource + val createSequenceJson: String = + """{ + | "@type" : "sequences:AudioSequence", + | "sequences:isAnnotatedSequenceOfAudioValue" : { + | "@type" : "knora-api:LinkValue", + | "knora-api:linkValueHasTargetIri" : { + | "@id" : "http://rdfh.ch/0001/audio-01" + | } + | }, + | "sequences:hasCustomSequenceBounds" : { + | "@type" : "knora-api:IntervalValue", + | "knora-api:intervalValueHasEnd" : { + | "@type" : "xsd:decimal", + | "@value" : "14.2" + | }, + | "knora-api:intervalValueHasStart" : { + | "@type" : "xsd:decimal", + | "@value" : "9.9" + | } + | }, + | "knora-api:attachedToProject" : { + | "@id" : "http://rdfh.ch/projects/0001" + | }, + | "rdfs:label" : "custom audio sequence", + | "@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#", + | "sequences" : "http://0.0.0.0:3333/ontology/0001/sequences/v2#" + | } + |}""".stripMargin + + val createSequenceRequest = + Post(resUrl, HttpEntity(RdfMediaTypes.`application/ld+json`, createSequenceJson)) ~> addCredentials(cred) + val createSequenceResponse = singleAwaitingRequest(createSequenceRequest) + val createSequenceResponseAsString = responseToString(createSequenceResponse) + assert(createSequenceResponse.status == StatusCodes.OK, createSequenceResponse.toString) + val createSequenceResponseBody = responseToJsonLDDocument(createSequenceResponse).body + val sequenceResourceIri = URLEncoder.encode(createSequenceResponseBody.requireString(JsonLDKeywords.ID), "UTF-8") + + // get the newly created sequence reource + val sequenceGetRequest = Get(s"$resUrl/$sequenceResourceIri") ~> addCredentials(cred) + val sequenceResponse = singleAwaitingRequest(sequenceGetRequest) + assert(sequenceResponse.status == StatusCodes.OK) + val getSequenceResponseBody = responseToJsonLDDocument(sequenceResponse).body + val sequenceOfUuid = getSequenceResponseBody + .requireObject("http://0.0.0.0:3333/ontology/0001/sequences/v2#isAnnotatedSequenceOfAudioValue") + .requireString(OntologyConstants.KnoraApiV2Complex.ValueHasUUID) + val sequenceBoundsUuid = getSequenceResponseBody + .requireObject("http://0.0.0.0:3333/ontology/0001/sequences/v2#hasCustomSequenceBounds") + .requireString(OntologyConstants.KnoraApiV2Complex.ValueHasUUID) + + // get the isSequenceOfValue property on the sequence resource + val sequenceOfRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceOfUuid") ~> addCredentials(cred) + val sequenceOfResponse = singleAwaitingRequest(sequenceOfRequest) + assert(sequenceOfResponse.status == StatusCodes.OK) + + // get the hasSequenceBounds property on the sequence resource + val sequenceBoundsRequest = Get(s"$valUrl/$sequenceResourceIri/$sequenceBoundsUuid") ~> addCredentials(cred) + val sequenceBoundsResponse = singleAwaitingRequest(sequenceBoundsRequest) + assert(sequenceBoundsResponse.status == StatusCodes.OK) + } } } diff --git a/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala b/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala index cc940b3d32..1c1dae469f 100644 --- a/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala +++ b/webapi/src/test/scala/org/knora/webapi/models/OntologyModels.scala @@ -5,6 +5,9 @@ package org.knora.webapi.models +import dsp.valueobjects.LangString +import dsp.valueobjects.LanguageCode + import java.time.Instant import scala.annotation.tailrec @@ -14,7 +17,7 @@ object Comments { case Some(value) => s""" | "rdfs:comment" : { - | "@language" : "${value.language}", + | "@language" : "${value.language.value}", | "@value" : "${value.value}" | }, |""".stripMargin @@ -22,19 +25,32 @@ object Comments { } } -final case class LangString(language: String, value: String) - sealed abstract case class CreateClassRequest private (value: String) object CreateClassRequest { + + /** + * Makes a CreateClassRequest (JSON-LD). + * + * @param ontologyName the ontology name + * @param lastModificationDate the LMD of the ontology + * @param className name of the class to be created + * @param label the label of the class + * @param comment the comment of the class + * @param subClassOf optional superclass. defaults to "knora-api:Resource". (Needs to be of format `PREFIX:ResourceName`) + * + * @return a JSON-LD representation of the request wrapped in a CreateClassRequest object + */ def make( ontologyName: String, lastModificationDate: Instant, className: String, - label: LangString, - comment: Option[LangString] + label: LangString = LangString.unsafeMake(LanguageCode.en, "Label"), + comment: Option[LangString] = None, + subClassOf: Option[String] = None ): CreateClassRequest = { val ontologyId = s"http://0.0.0.0:3333/ontology/0001/$ontologyName/v2" val maybeComment: String = Comments.handleOptionalComment(comment) + val superClass = subClassOf.getOrElse("knora-api:Resource") val value = s"""{ | "@id" : "$ontologyId", @@ -47,13 +63,13 @@ object CreateClassRequest { | "@id" : "$ontologyName:$className", | "@type" : "owl:Class", | "rdfs:label" : { - | "@language" : "${label.language}", + | "@language" : "${label.language.value}", | "@value" : "${label.value}" | }, | $maybeComment | "rdfs:subClassOf" : [ | { - | "@id": "knora-api:Resource" + | "@id": "$superClass" | } | ] | } ], @@ -81,6 +97,12 @@ object PropertyValueType { case object IntValue extends PropertyValueType { val value = "knora-api:IntValue" } + case object LinkValue extends PropertyValueType { + val value = "knora-api:LinkValue" + } + case object Resource extends PropertyValueType { + val value = "knora-api:Resource" + } } sealed abstract case class CreatePropertyRequest private (value: String) @@ -91,8 +113,9 @@ object CreatePropertyRequest { propertyName: String, subjectClassName: Option[String], propertyType: PropertyValueType, - label: LangString, - comment: Option[LangString] + label: LangString = LangString.unsafeMake(LanguageCode.en, "Label"), + comment: Option[LangString] = None, + subPropertyOf: Option[String] = None ): CreatePropertyRequest = { val LocalHost_Ontology = "http://0.0.0.0:3333/ontology" val ontologyId = LocalHost_Ontology + s"/0001/$ontologyName/v2" @@ -106,6 +129,7 @@ object CreatePropertyRequest { |""".stripMargin case None => "" } + val superProperty = subPropertyOf.getOrElse("knora-api:hasValue") val value = s"""{ | "@id" : "$ontologyId", @@ -123,11 +147,11 @@ object CreatePropertyRequest { | }, | $maybeComment | "rdfs:label" : { - | "@language" : "${label.language}", + | "@language" : "${label.language.value}", | "@value" : "${label.value}" | }, | "rdfs:subPropertyOf" : { - | "@id" : "knora-api:hasValue" + | "@id" : "$superProperty" | } | } ], | "@context" : { @@ -161,6 +185,10 @@ object CardinalityRestriction { val cardinality = "owl:minCardinality" val value = 0 } + case object CardinalityOne extends CardinalityRestriction { + val cardinality = "owl:cardinality" + val value = 1 + } } final case class Property(ontology: String, property: String) diff --git a/webapi/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala index b1bae1f752..23025b4047 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala @@ -9,13 +9,14 @@ import akka.actor.Status.Failure import akka.testkit.ImplicitSender import com.typesafe.config.Config import com.typesafe.config.ConfigFactory -import dsp.valueobjects.User._ -import dsp.valueobjects.V2 -import org.knora.webapi._ import dsp.errors.BadRequestException import dsp.errors.DuplicateValueException import dsp.errors.ForbiddenException import dsp.errors.NotFoundException +import dsp.valueobjects.LanguageCode +import dsp.valueobjects.User._ +import dsp.valueobjects.V2 +import org.knora.webapi._ import org.knora.webapi.messages.StringFormatter import org.knora.webapi.messages.admin.responder.groupsmessages.GroupMembersGetRequestADM import org.knora.webapi.messages.admin.responder.groupsmessages.GroupMembersGetResponseADM @@ -218,7 +219,7 @@ class UsersResponderADMSpec extends CoreSpec(UsersResponderADMSpec.config) with familyName = FamilyName.make("Duck").fold(e => throw e.head, v => v), password = Password.make("test").fold(e => throw e.head, v => v), status = UserStatus.make(true).fold(error => throw error.head, value => value), - lang = LanguageCode.make("en").fold(e => throw e.head, v => v), + lang = LanguageCode.en, systemAdmin = SystemAdmin.make(false).fold(e => throw e.head, v => v) ), requestingUser = SharedTestDataADM.anonymousUser, @@ -242,7 +243,7 @@ class UsersResponderADMSpec extends CoreSpec(UsersResponderADMSpec.config) with familyName = FamilyName.make("Duck").fold(e => throw e.head, v => v), password = Password.make("test").fold(e => throw e.head, v => v), status = UserStatus.make(true).fold(error => throw error.head, value => value), - lang = LanguageCode.make("en").fold(e => throw e.head, v => v), + lang = LanguageCode.en, systemAdmin = SystemAdmin.make(false).fold(e => throw e.head, v => v) ), SharedTestDataADM.anonymousUser, @@ -260,7 +261,7 @@ class UsersResponderADMSpec extends CoreSpec(UsersResponderADMSpec.config) with familyName = FamilyName.make("Duck").fold(e => throw e.head, v => v), password = Password.make("test").fold(e => throw e.head, v => v), status = UserStatus.make(true).fold(error => throw error.head, value => value), - lang = LanguageCode.make("en").fold(e => throw e.head, v => v), + lang = LanguageCode.en, systemAdmin = SystemAdmin.make(false).fold(e => throw e.head, v => v) ), SharedTestDataADM.anonymousUser, diff --git a/webapi/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala b/webapi/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala index 1315541aea..d45cc3b765 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala +++ b/webapi/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala @@ -6493,6 +6493,175 @@ class OntologyResponderV2Spec extends CoreSpec() with ImplicitSender { } } + "create the class anything:DifferentVideoSequenceThing with a isSequenceOf relation to anything:VideoThing" in { + + val videoThingIri = AnythingOntologyIri.makeEntityIri("VideoThing") + + // Create sequence class + val sequenceClassIri = AnythingOntologyIri.makeEntityIri("DifferentVideoSequenceThing") + val sequenceClassInfoContent = ClassInfoContentV2( + classIri = sequenceClassIri, + predicates = Map( + OntologyConstants.Rdf.Type.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdf.Type.toSmartIri, + objects = Seq(SmartIriLiteralV2(OntologyConstants.Owl.Class.toSmartIri)) + ), + OntologyConstants.Rdfs.Label.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdfs.Label.toSmartIri, + objects = Seq(StringLiteralV2("Different Video Sequence Thing", Some("en"))) + ) + ), + subClassOf = Set(OntologyConstants.KnoraApiV2Complex.Resource.toSmartIri), + ontologySchema = ApiV2Complex + ) + + appActor ! CreateClassRequestV2( + classInfoContent = sequenceClassInfoContent, + lastModificationDate = anythingLastModDate, + apiRequestID = UUID.randomUUID, + requestingUser = anythingAdminUser + ) + + expectMsgPF(timeout) { case msg: ReadOntologyV2 => + val externalOntology = msg.toOntologySchema(ApiV2Complex) + val metadata = externalOntology.ontologyMetadata + val newAnythingLastModDate = metadata.lastModificationDate.getOrElse( + throw AssertionException(s"${metadata.ontologyIri} has no last modification date") + ) + anythingLastModDate = newAnythingLastModDate + } + + // Create property sequenceOf + val sequenceOfPropertyIri = AnythingOntologyIri.makeEntityIri("sequenceOf") + val sequenceOfPropertyInfoContent = PropertyInfoContentV2( + propertyIri = sequenceOfPropertyIri, + predicates = Map( + OntologyConstants.Rdf.Type.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdf.Type.toSmartIri, + objects = Seq(SmartIriLiteralV2(OntologyConstants.Owl.ObjectProperty.toSmartIri)) + ), + OntologyConstants.KnoraApiV2Complex.SubjectType.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.KnoraApiV2Complex.SubjectType.toSmartIri, + objects = Seq(SmartIriLiteralV2(sequenceClassIri)) + ), + OntologyConstants.KnoraApiV2Complex.ObjectType.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.KnoraApiV2Complex.ObjectType.toSmartIri, + objects = Seq(SmartIriLiteralV2(videoThingIri)) + ), + OntologyConstants.Rdfs.Label.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdfs.Label.toSmartIri, + objects = Seq(StringLiteralV2("is sequence of", Some("en"))) + ), + SalsahGui.External.GuiElementProp.toSmartIri -> PredicateInfoV2( + predicateIri = SalsahGui.External.GuiElementProp.toSmartIri, + objects = Seq(SmartIriLiteralV2("http://api.knora.org/ontology/salsah-gui/v2#Searchbox".toSmartIri)) + ) + ), + subPropertyOf = Set(OntologyConstants.KnoraBase.IsSequenceOf.toSmartIri), + ontologySchema = ApiV2Complex + ) + + appActor ! CreatePropertyRequestV2( + propertyInfoContent = sequenceOfPropertyInfoContent, + lastModificationDate = anythingLastModDate, + apiRequestID = UUID.randomUUID, + requestingUser = anythingAdminUser + ) + + expectMsgPF(timeout) { case msg: ReadOntologyV2 => + val externalOntology = msg.toOntologySchema(ApiV2Complex) + assert(externalOntology.properties.size == 1) + val property = externalOntology.properties(sequenceOfPropertyIri) + // check that sequenceOf is a subproperty of knora-api:isSequenceOf + property.entityInfoContent.subPropertyOf.contains( + OntologyConstants.KnoraApiV2Complex.IsSequenceOf.toSmartIri + ) should ===(true) + val metadata = externalOntology.ontologyMetadata + val newAnythingLastModDate = metadata.lastModificationDate.getOrElse( + throw AssertionException(s"${metadata.ontologyIri} has no last modification date") + ) + assert(newAnythingLastModDate.isAfter(anythingLastModDate)) + anythingLastModDate = newAnythingLastModDate + } + + // Check that the corresponding sequenceOfValue was created + val sequenceOfValuePropertyIri = AnythingOntologyIri.makeEntityIri("sequenceOfValue") + val sequenceOfValuePropGetRequest = PropertiesGetRequestV2( + propertyIris = Set(sequenceOfValuePropertyIri), + allLanguages = true, + requestingUser = anythingAdminUser + ) + appActor ! sequenceOfValuePropGetRequest + + expectMsgPF(timeout) { case msg: ReadOntologyV2 => + val externalOntology = msg.toOntologySchema(ApiV2Complex) + assert(externalOntology.properties.size == 1) + val property = externalOntology.properties(sequenceOfValuePropertyIri) + // check that sequenceOfValue is a subproperty of knora-api:isSequenceOfValue + property.entityInfoContent.subPropertyOf.contains( + OntologyConstants.KnoraApiV2Complex.IsSequenceOfValue.toSmartIri + ) should ===(true) + val metadata = externalOntology.ontologyMetadata + val newAnythingLastModDate = metadata.lastModificationDate.getOrElse( + throw AssertionException(s"${metadata.ontologyIri} has no last modification date") + ) + anythingLastModDate = newAnythingLastModDate + } + + // Create property sequenceBounds + val sequenceBoundsPropertyIri = AnythingOntologyIri.makeEntityIri("sequenceBounds") + val sequenceBoundsPropertyInfoContent = PropertyInfoContentV2( + propertyIri = sequenceBoundsPropertyIri, + predicates = Map( + OntologyConstants.Rdf.Type.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdf.Type.toSmartIri, + objects = Seq(SmartIriLiteralV2(OntologyConstants.Owl.ObjectProperty.toSmartIri)) + ), + OntologyConstants.KnoraApiV2Complex.SubjectType.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.KnoraApiV2Complex.SubjectType.toSmartIri, + objects = Seq(SmartIriLiteralV2(sequenceClassIri)) + ), + OntologyConstants.KnoraApiV2Complex.ObjectType.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.KnoraApiV2Complex.ObjectType.toSmartIri, + objects = Seq(SmartIriLiteralV2(OntologyConstants.KnoraBase.IntervalValue.toSmartIri)) + ), + OntologyConstants.Rdfs.Label.toSmartIri -> PredicateInfoV2( + predicateIri = OntologyConstants.Rdfs.Label.toSmartIri, + objects = Seq(StringLiteralV2("has sequence bounds", Some("en"))) + ), + SalsahGui.External.GuiElementProp.toSmartIri -> PredicateInfoV2( + predicateIri = SalsahGui.External.GuiElementProp.toSmartIri, + objects = Seq(SmartIriLiteralV2("http://api.knora.org/ontology/salsah-gui/v2#Interval".toSmartIri)) + ) + ), + subPropertyOf = Set(OntologyConstants.KnoraBase.HasSequenceBounds.toSmartIri), + ontologySchema = ApiV2Complex + ) + + appActor ! CreatePropertyRequestV2( + propertyInfoContent = sequenceBoundsPropertyInfoContent, + lastModificationDate = anythingLastModDate, + apiRequestID = UUID.randomUUID, + requestingUser = anythingAdminUser + ) + + expectMsgPF(timeout) { case msg: ReadOntologyV2 => + val externalOntology = msg.toOntologySchema(ApiV2Complex) + assert(externalOntology.properties.size == 1) + val property = externalOntology.properties(sequenceBoundsPropertyIri) + // check that sequenceBounds is a subproperty of knora-api:hasSequenceBounds + property.entityInfoContent.subPropertyOf.contains( + OntologyConstants.KnoraApiV2Complex.HasSequenceBounds.toSmartIri + ) should ===(true) + val metadata = externalOntology.ontologyMetadata + val newAnythingLastModDate = metadata.lastModificationDate.getOrElse( + throw AssertionException(s"${metadata.ontologyIri} has no last modification date") + ) + assert(newAnythingLastModDate.isAfter(anythingLastModDate)) + anythingLastModDate = newAnythingLastModDate + } + } + "not load an ontology that has no knora-base:attachedToProject" in { val invalidOnto = List( RdfDataObject(