Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ontology): Allow adding new property to a resource class in use (DSP-1629) #1859

Merged
merged 9 commits into from May 18, 2021
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> .