Skip to content

Commit 061875e

Browse files
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
1 parent ce9ba3a commit 061875e

41 files changed

Lines changed: 14963 additions & 11989 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/03-apis/api-v2/ontology-information.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1449,8 +1449,8 @@ the property definition, submit the request without those predicates.
14491449
14501450
### Adding Cardinalities to a Class
14511451
1452-
This operation is not permitted if the class is used in data, or if it
1453-
has a subclass.
1452+
If the class is used in data or if it
1453+
has a subclass, it is not allowed to add cardinalities `owl:minCardinality` greater than 0 or `owl:cardinality 1` to the class.
14541454
14551455
```
14561456
HTTP POST to http://host/v2/ontologies/cardinalities
@@ -1464,7 +1464,7 @@ HTTP POST to http://host/v2/ontologies/cardinalities
14641464
"@type" : "xsd:dateTimeStamp",
14651465
"@value" : "ONTOLOGY_LAST_MODIFICATION_DATE"
14661466
},
1467-
"@graph" : [ {
1467+
"@graph" : [
14681468
{
14691469
"@id" : "CLASS_IRI",
14701470
"@type" : "owl:Class",
@@ -1476,7 +1476,7 @@ HTTP POST to http://host/v2/ontologies/cardinalities
14761476
}
14771477
}
14781478
}
1479-
} ],
1479+
],
14801480
"@context" : {
14811481
"knora-api" : "http://api.knora.org/ontology/knora-api/v2#",
14821482
"owl" : "http://www.w3.org/2002/07/owl#",

‎test_data/ontologies/anything-onto.ttl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@
634634
rdf:type owl:Restriction ;
635635
owl:onProperty :hasBlueThingValue ;
636636
owl:minCardinality "0"^^xsd:nonNegativeInteger ;
637-
salsah-gui:guiOrder "16"^^xsd:nonNegativeInteger
637+
salsah-gui:guiOrder "63"^^xsd:nonNegativeInteger
638638
] ;
639639

640640
rdfs:comment """Diese Resource-Klasse beschreibt ein blaues Ding"""@de ;
Lines changed: 67 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,82 @@
1+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
2+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
3+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
14
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
2-
@prefix owl: <http://www.w3.org/2002/07/owl#> .
3-
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4-
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
55

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

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

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

20-
<http://0.0.0.0:3333/ontology/00FF/images/v2> a owl:Ontology;
21-
knora-api:attachedToProject <http://rdfh.ch/projects/00FF>;
22-
rdfs:label "The images demo ontology" .
23+
<http://0.0.0.0:3333/ontology/0806/webern/v2>
24+
a owl:Ontology ;
25+
rdfs:label "The Anton Webern project ontology" ;
26+
knora-api:attachedToProject <http://rdfh.ch/projects/0806> .
2327

24-
<http://0.0.0.0:3333/ontology/0801/beol/v2> a owl:Ontology;
25-
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF>;
26-
rdfs:label "The BEOL ontology" .
28+
<http://api.knora.org/ontology/knora-admin/v2>
29+
a owl:Ontology ;
30+
rdfs:label "The Knora admin ontology" ;
31+
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
32+
knora-api:isBuiltIn true .
2733

28-
<http://0.0.0.0:3333/ontology/0801/biblio/v2> a owl:Ontology;
29-
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF>;
30-
rdfs:label "The Biblio ontology" .
34+
<http://0.0.0.0:3333/ontology/0804/dokubib/v2>
35+
a owl:Ontology ;
36+
rdfs:label "The dokubib ontology" ;
37+
knora-api:attachedToProject <http://rdfh.ch/projects/0804> .
3138

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

36-
<http://0.0.0.0:3333/ontology/0804/dokubib/v2> a owl:Ontology;
37-
knora-api:attachedToProject <http://rdfh.ch/projects/0804>;
38-
rdfs:label "The dokubib ontology" .
46+
<http://0.0.0.0:3333/ontology/00FF/images/v2>
47+
a owl:Ontology ;
48+
rdfs:label "The images demo ontology" ;
49+
knora-api:attachedToProject <http://rdfh.ch/projects/00FF> .
3950

40-
<http://0.0.0.0:3333/ontology/0806/webern/v2> a owl:Ontology;
41-
knora-api:attachedToProject <http://rdfh.ch/projects/0806>;
42-
rdfs:label "The Anton Webern project ontology" .
51+
<http://0.0.0.0:3333/ontology/0801/biblio/v2>
52+
a owl:Ontology ;
53+
rdfs:label "The Biblio ontology" ;
54+
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF> .
4355

44-
<http://api.knora.org/ontology/knora-admin/v2> a owl:Ontology;
45-
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
46-
knora-api:isBuiltIn true;
47-
rdfs:label "The Knora admin ontology" .
56+
<http://0.0.0.0:3333/ontology/0803/incunabula/v2>
57+
a owl:Ontology ;
58+
rdfs:label "The incunabula ontology" ;
59+
knora-api:attachedToProject <http://rdfh.ch/projects/0803> .
4860

49-
<http://api.knora.org/ontology/knora-api/v2> a owl:Ontology;
50-
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
51-
knora-api:isBuiltIn true;
52-
rdfs:label "The knora-api ontology in the complex schema" .
61+
<http://api.knora.org/ontology/knora-api/v2>
62+
a owl:Ontology ;
63+
rdfs:label "The knora-api ontology in the complex schema" ;
64+
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
65+
knora-api:isBuiltIn true .
5366

54-
<http://api.knora.org/ontology/salsah-gui/v2> a owl:Ontology;
55-
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
56-
knora-api:isBuiltIn true;
57-
rdfs:label "The salsah-gui ontology" .
67+
<http://0.0.0.0:3333/ontology/0801/beol/v2>
68+
a owl:Ontology ;
69+
rdfs:label "The BEOL ontology" ;
70+
knora-api:attachedToProject <http://rdfh.ch/projects/yTerZGyxjZVqFMNNKXCDPF> .
5871

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

65-
<http://api.knora.org/ontology/standoff/v2> a owl:Ontology;
66-
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject>;
67-
knora-api:isBuiltIn true;
68-
rdfs:label "The standoff ontology" .
78+
<http://api.knora.org/ontology/standoff/v2>
79+
a owl:Ontology ;
80+
rdfs:label "The standoff ontology" ;
81+
knora-api:attachedToProject <http://www.knora.org/ontology/knora-admin#SystemProject> ;
82+
knora-api:isBuiltIn true .
Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
2-
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
3-
@prefix owl: <http://www.w3.org/2002/07/owl#> .
4-
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5-
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
63
@prefix salsah-gui: <http://api.knora.org/ontology/salsah-gui/v2#> .
7-
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
5+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6+
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
7+
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
88

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

14-
anything:hasDate a owl:ObjectProperty;
15-
knora-api:isEditable true;
16-
knora-api:isResourceProperty true;
17-
knora-api:objectType knora-api:DateValue;
18-
knora-api:subjectType anything:Thing;
19-
salsah-gui:guiElement salsah-gui:Date;
20-
rdfs:label "Date";
21-
rdfs:subPropertyOf knora-api:hasValue .
15+
anything:hasDate a owl:ObjectProperty ;
16+
rdfs:label "Date" ;
17+
rdfs:subPropertyOf knora-api:hasValue ;
18+
knora-api:isEditable true ;
19+
knora-api:isResourceProperty true ;
20+
knora-api:objectType knora-api:DateValue ;
21+
knora-api:subjectType anything:Thing ;
22+
salsah-gui:guiElement salsah-gui:Date .
Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1-
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
2-
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
3-
@prefix owl: <http://www.w3.org/2002/07/owl#> .
4-
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5-
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
63
@prefix salsah-gui: <http://api.knora.org/ontology/salsah-gui/v2#> .
7-
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
5+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6+
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
7+
@prefix anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#> .
88

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

14-
anything:hasListItem a owl:ObjectProperty;
15-
knora-api:isEditable true;
16-
knora-api:isResourceProperty true;
17-
knora-api:objectType knora-api:ListValue;
18-
knora-api:subjectType anything:Thing;
19-
salsah-gui:guiAttribute "hlist=<http://rdfh.ch/lists/0001/treeList>";
20-
salsah-gui:guiElement salsah-gui:List;
21-
rdfs:label "List element";
22-
rdfs:subPropertyOf knora-api:hasValue .
15+
anything:hasListItem a owl:ObjectProperty ;
16+
rdfs:label "List element" ;
17+
rdfs:subPropertyOf knora-api:hasValue ;
18+
knora-api:isEditable true ;
19+
knora-api:isResourceProperty true ;
20+
knora-api:objectType knora-api:ListValue ;
21+
knora-api:subjectType anything:Thing ;
22+
salsah-gui:guiAttribute "hlist=<http://rdfh.ch/lists/0001/treeList>" ;
23+
salsah-gui:guiElement salsah-gui:List .
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
2+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
3+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
14
@prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
2-
@prefix owl: <http://www.w3.org/2002/07/owl#> .
3-
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4-
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
55

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

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

16-
<http://0.0.0.0:3333/ontology/0001/something/v2> a owl:Ontology;
17-
knora-api:attachedToProject <http://rdfh.ch/projects/0001>;
18-
rdfs:label "The something ontology" .
18+
<http://0.0.0.0:3333/ontology/0001/something/v2>
19+
a owl:Ontology ;
20+
rdfs:label "The something ontology" ;
21+
knora-api:attachedToProject <http://rdfh.ch/projects/0001> .

0 commit comments

Comments
 (0)