Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
feat(ontology): Allow adding new property to a resource class in use …
…(DSP-1629) (#1859)

* feat(ontology): check if class is in use only if given minCardinality greater than 0 or cardinality=1

* docs(ontology): improve docs

* refactor(ontology): clean up

* fix (ontology): correct the test ontology

* test (ontology): test for adding cardinality for a new property of a class in use

* docs(ontology) clean up

* fix (ontology): test data
  • Loading branch information
SepidehAlassi committed May 18, 2021
1 parent ce9ba3a commit 061875e
Show file tree
Hide file tree
Showing 41 changed files with 14,963 additions and 11,989 deletions.
8 changes: 4 additions & 4 deletions docs/03-apis/api-v2/ontology-information.md
Expand Up @@ -1449,8 +1449,8 @@ the property definition, submit the request without those predicates.
### Adding Cardinalities to a Class
This operation is not permitted if the class is used in data, or if it
has a subclass.
If the class is used in data or if it
has a subclass, it is not allowed to add cardinalities `owl:minCardinality` greater than 0 or `owl:cardinality 1` to the class.
```
HTTP POST to http://host/v2/ontologies/cardinalities
Expand All @@ -1464,7 +1464,7 @@ HTTP POST to http://host/v2/ontologies/cardinalities
"@type" : "xsd:dateTimeStamp",
"@value" : "ONTOLOGY_LAST_MODIFICATION_DATE"
},
"@graph" : [ {
"@graph" : [
{
"@id" : "CLASS_IRI",
"@type" : "owl:Class",
Expand All @@ -1476,7 +1476,7 @@ HTTP POST to http://host/v2/ontologies/cardinalities
}
}
}
} ],
],
"@context" : {
"knora-api" : "http://api.knora.org/ontology/knora-api/v2#",
"owl" : "http://www.w3.org/2002/07/owl#",
Expand Down
2 changes: 1 addition & 1 deletion test_data/ontologies/anything-onto.ttl
Expand Up @@ -634,7 +634,7 @@
rdf:type owl:Restriction ;
owl:onProperty :hasBlueThingValue ;
owl:minCardinality "0"^^xsd:nonNegativeInteger ;
salsah-gui:guiOrder "16"^^xsd:nonNegativeInteger
salsah-gui:guiOrder "63"^^xsd:nonNegativeInteger
] ;

rdfs:comment """Diese Resource-Klasse beschreibt ein blaues Ding"""@de ;
Expand Down
120 changes: 67 additions & 53 deletions test_data/ontologyR2RV2/allOntologyMetadata.ttl
@@ -1,68 +1,82 @@
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://0.0.0.0:3333/ontology/0001/anything/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp;
rdfs:label "The anything ontology" .
<http://0.0.0.0:3333/ontology/0001/something/v2>
a owl:Ontology ;
rdfs:label "The something ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> .

<http://0.0.0.0:3333/ontology/0001/minimal/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2019-09-10T08:57:46.633162Z"^^xsd:dateTimeStamp;
rdfs:label "A minimal ontology" .
<http://0.0.0.0:3333/ontology/0001/minimal/v2>
a owl:Ontology ;
rdfs:label "A minimal ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2019-09-10T08:57:46.633162Z"^^xsd:dateTimeStamp .

<http://0.0.0.0:3333/ontology/0001/something/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
rdfs:label "The something ontology" .
<http://api.knora.org/ontology/salsah-gui/v2>
a owl:Ontology ;
rdfs:label "The salsah-gui ontology" ;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
knora-api:isBuiltIn true .

<http://0.0.0.0:3333/ontology/00FF/images/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/00FF>;
rdfs:label "The images demo ontology" .
<http://0.0.0.0:3333/ontology/0806/webern/v2>
a owl:Ontology ;
rdfs:label "The Anton Webern project ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0806> .

<http://0.0.0.0:3333/ontology/0801/beol/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF>;
rdfs:label "The BEOL ontology" .
<http://api.knora.org/ontology/knora-admin/v2>
a owl:Ontology ;
rdfs:label "The Knora admin ontology" ;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
knora-api:isBuiltIn true .

<http://0.0.0.0:3333/ontology/0801/biblio/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF>;
rdfs:label "The Biblio ontology" .
<http://0.0.0.0:3333/ontology/0804/dokubib/v2>
a owl:Ontology ;
rdfs:label "The dokubib ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0804> .

<http://0.0.0.0:3333/ontology/0803/incunabula/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0803>;
rdfs:label "The incunabula ontology" .
<http://api.knora.org/ontology/shared/example-box/v2>
a owl:Ontology ;
rdfs:label "An example of a shared ontology" ;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#DefaultSharedOntologiesProject> ;
knora-api:isShared true ;
knora-api:lastModificationDate "2018-09-10T14:53:00Z"^^xsd:dateTimeStamp .

<http://0.0.0.0:3333/ontology/0804/dokubib/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0804>;
rdfs:label "The dokubib ontology" .
<http://0.0.0.0:3333/ontology/00FF/images/v2>
a owl:Ontology ;
rdfs:label "The images demo ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/00FF> .

<http://0.0.0.0:3333/ontology/0806/webern/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0806>;
rdfs:label "The Anton Webern project ontology" .
<http://0.0.0.0:3333/ontology/0801/biblio/v2>
a owl:Ontology ;
rdfs:label "The Biblio ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF> .

<http://api.knora.org/ontology/knora-admin/v2> a owl:Ontology;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
knora-api:isBuiltIn true;
rdfs:label "The Knora admin ontology" .
<http://0.0.0.0:3333/ontology/0803/incunabula/v2>
a owl:Ontology ;
rdfs:label "The incunabula ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0803> .

<http://api.knora.org/ontology/knora-api/v2> a owl:Ontology;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
knora-api:isBuiltIn true;
rdfs:label "The knora-api ontology in the complex schema" .
<http://api.knora.org/ontology/knora-api/v2>
a owl:Ontology ;
rdfs:label "The knora-api ontology in the complex schema" ;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
knora-api:isBuiltIn true .

<http://api.knora.org/ontology/salsah-gui/v2> a owl:Ontology;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
knora-api:isBuiltIn true;
rdfs:label "The salsah-gui ontology" .
<http://0.0.0.0:3333/ontology/0801/beol/v2>
a owl:Ontology ;
rdfs:label "The BEOL ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF> .

<http://api.knora.org/ontology/shared/example-box/v2> a owl:Ontology;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#DefaultSharedOntologiesProject>;
knora-api:isShared true;
knora-api:lastModificationDate "2018-09-10T14:53:00Z"^^xsd:dateTimeStamp;
rdfs:label "An example of a shared ontology" .
<http://0.0.0.0:3333/ontology/0001/anything/v2>
a owl:Ontology ;
rdfs:label "The anything ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp .

<http://api.knora.org/ontology/standoff/v2> a owl:Ontology;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
knora-api:isBuiltIn true;
rdfs:label "The standoff ontology" .
<http://api.knora.org/ontology/standoff/v2>
a owl:Ontology ;
rdfs:label "The standoff ontology" ;
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
knora-api:isBuiltIn true .
37 changes: 19 additions & 18 deletions test_data/ontologyR2RV2/anythingHasDate.ttl
@@ -1,21 +1,22 @@
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix salsah-gui: <http://api.knora.org/ontology/salsah-gui/v2#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .

<http://0.0.0.0:3333/ontology/0001/anything/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp;
rdfs:label "The anything ontology" .
<http://0.0.0.0:3333/ontology/0001/anything/v2>
a owl:Ontology ;
rdfs:label "The anything ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp .

anything:hasDate a owl:ObjectProperty;
knora-api:isEditable true;
knora-api:isResourceProperty true;
knora-api:objectType knora-api:DateValue;
knora-api:subjectType anything:Thing;
salsah-gui:guiElement salsah-gui:Date;
rdfs:label "Date";
rdfs:subPropertyOf knora-api:hasValue .
anything:hasDate a owl:ObjectProperty ;
rdfs:label "Date" ;
rdfs:subPropertyOf knora-api:hasValue ;
knora-api:isEditable true ;
knora-api:isResourceProperty true ;
knora-api:objectType knora-api:DateValue ;
knora-api:subjectType anything:Thing ;
salsah-gui:guiElement salsah-gui:Date .
39 changes: 20 additions & 19 deletions test_data/ontologyR2RV2/anythingHasListItem.ttl
@@ -1,22 +1,23 @@
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix salsah-gui: <http://api.knora.org/ontology/salsah-gui/v2#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .

<http://0.0.0.0:3333/ontology/0001/anything/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp;
rdfs:label "The anything ontology" .
<http://0.0.0.0:3333/ontology/0001/anything/v2>
a owl:Ontology ;
rdfs:label "The anything ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp .

anything:hasListItem a owl:ObjectProperty;
knora-api:isEditable true;
knora-api:isResourceProperty true;
knora-api:objectType knora-api:ListValue;
knora-api:subjectType anything:Thing;
salsah-gui:guiAttribute "hlist=<http://rdfh.ch/lists/0001/treeList>";
salsah-gui:guiElement salsah-gui:List;
rdfs:label "List element";
rdfs:subPropertyOf knora-api:hasValue .
anything:hasListItem a 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=<http://rdfh.ch/lists/0001/treeList>" ;
salsah-gui:guiElement salsah-gui:List .
31 changes: 17 additions & 14 deletions test_data/ontologyR2RV2/anythingOntologyMetadata.ttl
@@ -1,18 +1,21 @@
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://0.0.0.0:3333/ontology/0001/anything/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp;
rdfs:label "The anything ontology" .
<http://0.0.0.0:3333/ontology/0001/anything/v2>
a owl:Ontology ;
rdfs:label "The anything ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2017-12-19T15:23:42.166Z"^^xsd:dateTimeStamp .

<http://0.0.0.0:3333/ontology/0001/minimal/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
knora-api:lastModificationDate "2019-09-10T08:57:46.633162Z"^^xsd:dateTimeStamp;
rdfs:label "A minimal ontology" .
<http://0.0.0.0:3333/ontology/0001/minimal/v2>
a owl:Ontology ;
rdfs:label "A minimal ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> ;
knora-api:lastModificationDate "2019-09-10T08:57:46.633162Z"^^xsd:dateTimeStamp .

<http://0.0.0.0:3333/ontology/0001/something/v2> a owl:Ontology;
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
rdfs:label "The something ontology" .
<http://0.0.0.0:3333/ontology/0001/something/v2>
a owl:Ontology ;
rdfs:label "The something ontology" ;
knora-api:attachedToProject <http://rdfh.ch/projects/0001> .

0 comments on commit 061875e

Please sign in to comment.