oldaplib 0.3.11__py3-none-any.whl → 0.3.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- oldaplib/ontologies/shared.trig +157 -6
- oldaplib/src/datamodel.py +4 -1
- oldaplib/src/enums/haspropertyattr.py +2 -2
- oldaplib/src/hasproperty.py +12 -6
- oldaplib/src/objectfactory.py +18 -14
- oldaplib/src/propertyclass.py +14 -8
- oldaplib/src/resourceclass.py +4 -4
- oldaplib/src/version.py +1 -1
- oldaplib/test/test_objectfactory.py +41 -77
- oldaplib/testdata/instances_test.trig +5 -5
- {oldaplib-0.3.11.dist-info → oldaplib-0.3.13.dist-info}/METADATA +8 -1
- {oldaplib-0.3.11.dist-info → oldaplib-0.3.13.dist-info}/RECORD +13 -13
- {oldaplib-0.3.11.dist-info → oldaplib-0.3.13.dist-info}/WHEEL +0 -0
oldaplib/ontologies/shared.trig
CHANGED
|
@@ -41,7 +41,7 @@ shared:shacl {
|
|
|
41
41
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
42
42
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
43
43
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
44
|
-
sh:maxCount "1"^^xsd:
|
|
44
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
45
45
|
sh:datatype xsd:decimal ;
|
|
46
46
|
] ;
|
|
47
47
|
sh:property [
|
|
@@ -50,7 +50,7 @@ shared:shacl {
|
|
|
50
50
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
51
51
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
52
52
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
53
|
-
sh:maxCount "1"^^xsd:
|
|
53
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
54
54
|
sh:datatype xsd:string ;
|
|
55
55
|
sh:in ("GREGORIAN"^^xsd:string "JULIAN"^^xsd:string "HEBREW"^^xsd:string "ISLAMIC"^^xsd:string "PERSIAN"^^xsd:string) ;
|
|
56
56
|
] ;
|
|
@@ -60,7 +60,7 @@ shared:shacl {
|
|
|
60
60
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
61
61
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
62
62
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
63
|
-
sh:maxCount "1"^^xsd:
|
|
63
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
64
64
|
sh:class oldap:ChronolgyStatement ;
|
|
65
65
|
] ;
|
|
66
66
|
sh:property [
|
|
@@ -69,7 +69,7 @@ shared:shacl {
|
|
|
69
69
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
70
70
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
71
71
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
72
|
-
sh:maxCount "1"^^xsd:
|
|
72
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
73
73
|
sh:class oldap:ChronolgyStatement ;
|
|
74
74
|
] ;
|
|
75
75
|
sh:property [
|
|
@@ -78,7 +78,7 @@ shared:shacl {
|
|
|
78
78
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
79
79
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
80
80
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
81
|
-
sh:maxCount "1"^^xsd:
|
|
81
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
82
82
|
sh:datatype xsd:decimal ;
|
|
83
83
|
] ;
|
|
84
84
|
sh:property [
|
|
@@ -87,10 +87,89 @@ shared:shacl {
|
|
|
87
87
|
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
88
88
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
89
89
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
90
|
-
sh:maxCount "1"^^xsd:
|
|
90
|
+
sh:maxCount "1"^^xsd:nonNegativeInteger ;
|
|
91
91
|
sh:datatype xsd:decimal ;
|
|
92
92
|
] .
|
|
93
93
|
|
|
94
|
+
###############################################################################
|
|
95
|
+
# Media object
|
|
96
|
+
###############################################################################
|
|
97
|
+
|
|
98
|
+
oldap:MediaObjectShape a sh:NodeShape ;
|
|
99
|
+
sh:targetClass oldap:MediaObject ;
|
|
100
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
101
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
102
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
103
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
104
|
+
oldap:externalOntology "false"^^xsd:boolean ;
|
|
105
|
+
rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
|
|
106
|
+
rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
|
|
107
|
+
sh:closed "true"^^xsd:boolean ;
|
|
108
|
+
sh:property [
|
|
109
|
+
sh:path rdf:type ;
|
|
110
|
+
] ;
|
|
111
|
+
sh:property [ # >>PropertyClass.property_node_shacl()
|
|
112
|
+
sh:path oldap:originalName ;
|
|
113
|
+
schema:version "0.1.0"^^xsd:string ;
|
|
114
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
115
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
116
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
117
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
118
|
+
oldap:statementProperty "false"^^xsd:boolean ;
|
|
119
|
+
oldap:externalOntology "false"^^xsd:boolean ;
|
|
120
|
+
sh:datatype xsd:string ;
|
|
121
|
+
sh:name "Original Filename"@en, "Originaler Dateiname"@de, "Nom orignal du fichier"@fr, "Nome documento originale"@it ;
|
|
122
|
+
sh:minCount "1"^^xsd:integer ;
|
|
123
|
+
sh:maxCount "1"^^xsd:integer ;
|
|
124
|
+
sh:order "1.0"^^xsd:decimal ;
|
|
125
|
+
] ;
|
|
126
|
+
sh:property [ # >>PropertyClass.property_node_shacl()
|
|
127
|
+
sh:path oldap:originalMimeType ;
|
|
128
|
+
schema:version "0.1.0"^^xsd:string ;
|
|
129
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
130
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
131
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
132
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
133
|
+
oldap:statementProperty "false"^^xsd:boolean ;
|
|
134
|
+
oldap:externalOntology "false"^^xsd:boolean ;
|
|
135
|
+
sh:datatype xsd:string ;
|
|
136
|
+
sh:name "Original mimetype"@en, "Originaler Mimetype"@de, "Mimetype original"@fr, "Mimetype originale"@it ;
|
|
137
|
+
sh:minCount "1"^^xsd:integer ;
|
|
138
|
+
sh:maxCount "1"^^xsd:integer ;
|
|
139
|
+
sh:order "2.0"^^xsd:decimal ;
|
|
140
|
+
] ;
|
|
141
|
+
sh:property [ # >>PropertyClass.property_node_shacl()
|
|
142
|
+
sh:path oldap:serverUrl ;
|
|
143
|
+
schema:version "0.1.0"^^xsd:string ;
|
|
144
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
145
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
146
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
147
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
148
|
+
oldap:statementProperty "false"^^xsd:boolean ;
|
|
149
|
+
oldap:externalOntology "false"^^xsd:boolean ;
|
|
150
|
+
sh:datatype xsd:anyURI ;
|
|
151
|
+
sh:name "Server URL"@en, "URL des servers"@de, "Server URL"@fr, "Server URL"@it ;
|
|
152
|
+
sh:minCount "1"^^xsd:integer ;
|
|
153
|
+
sh:maxCount "1"^^xsd:integer ;
|
|
154
|
+
sh:order "3.0"^^xsd:decimal ;
|
|
155
|
+
] ;
|
|
156
|
+
sh:property [ # >>PropertyClass.property_node_shacl()
|
|
157
|
+
sh:path oldap:imageId ;
|
|
158
|
+
schema:version "0.1.0"^^xsd:string ;
|
|
159
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
160
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
161
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
162
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
163
|
+
oldap:statementProperty "false"^^xsd:boolean ;
|
|
164
|
+
oldap:externalOntology "false"^^xsd:boolean ;
|
|
165
|
+
sh:datatype xsd:string ;
|
|
166
|
+
sh:name "Image ID"@en, "ID des Bilder"@de, "ID de l\'image"@fr, "ID de l\'immagine"@it ;
|
|
167
|
+
sh:minCount "1"^^xsd:integer ;
|
|
168
|
+
sh:maxCount "1"^^xsd:integer ;
|
|
169
|
+
sh:order "3.0"^^xsd:decimal ;
|
|
170
|
+
] .
|
|
171
|
+
|
|
172
|
+
|
|
94
173
|
|
|
95
174
|
}
|
|
96
175
|
|
|
@@ -161,6 +240,7 @@ shared:onto {
|
|
|
161
240
|
###########################################################################
|
|
162
241
|
# Chronology Date Resource
|
|
163
242
|
###########################################################################
|
|
243
|
+
|
|
164
244
|
oldap:ChronolgyStatement rdf:type owl:Class ;
|
|
165
245
|
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
166
246
|
dcterms:created "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
@@ -210,5 +290,76 @@ shared:onto {
|
|
|
210
290
|
owl:onDataRange xsd:decimal
|
|
211
291
|
] .
|
|
212
292
|
|
|
293
|
+
###########################################################################
|
|
294
|
+
# Media object
|
|
295
|
+
###########################################################################
|
|
296
|
+
|
|
297
|
+
oldap:originalName rdf:type owl:DatatypeProperty ;
|
|
298
|
+
rdfs:domain oldap:MediaObject ;
|
|
299
|
+
rdfs:range xsd:string ;
|
|
300
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
301
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
302
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
303
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
|
|
304
|
+
|
|
305
|
+
oldap:originalMimeType rdf:type owl:DatatypeProperty ;
|
|
306
|
+
rdfs:domain oldap:MediaObject ;
|
|
307
|
+
rdfs:range xsd:string ;
|
|
308
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
309
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
310
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
311
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
|
|
312
|
+
|
|
313
|
+
oldap:serverUrl rdf:type owl:DatatypeProperty ;
|
|
314
|
+
rdfs:domain oldap:MediaObject ;
|
|
315
|
+
rdfs:range xsd:anyURI ;
|
|
316
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
317
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
318
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
319
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
|
|
320
|
+
|
|
321
|
+
oldap:imageId rdf:type owl:DatatypeProperty ;
|
|
322
|
+
rdfs:domain oldap:MediaObject ;
|
|
323
|
+
rdfs:range xsd:string ;
|
|
324
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
325
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
326
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
327
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
|
|
328
|
+
|
|
329
|
+
oldap:MediaObject rdf:type owl:Class ;
|
|
330
|
+
schema:version "0.1.0"^^xsd:string ;
|
|
331
|
+
dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
332
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
333
|
+
dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
|
|
334
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
335
|
+
rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
|
|
336
|
+
rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
|
|
337
|
+
rdfs:subClassOf oldap:Thing ,
|
|
338
|
+
[
|
|
339
|
+
rdf:type owl:Restriction ;
|
|
340
|
+
owl:onProperty oldap:originalName ;
|
|
341
|
+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
|
|
342
|
+
owl:onDataRange xsd:string ;
|
|
343
|
+
] ,
|
|
344
|
+
[
|
|
345
|
+
rdf:type owl:Restriction ;
|
|
346
|
+
owl:onProperty oldap:originalMimeType ;
|
|
347
|
+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
|
|
348
|
+
owl:onDataRange xsd:string ;
|
|
349
|
+
] ,
|
|
350
|
+
[
|
|
351
|
+
rdf:type owl:Restriction ;
|
|
352
|
+
owl:onProperty oldap:serverUrl ;
|
|
353
|
+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
|
|
354
|
+
owl:onDataRange xsd:anyURI ;
|
|
355
|
+
] ,
|
|
356
|
+
[
|
|
357
|
+
rdf:type owl:Restriction ;
|
|
358
|
+
owl:onProperty oldap:imageId ;
|
|
359
|
+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
|
|
360
|
+
owl:onDataRange xsd:string ;
|
|
361
|
+
] .
|
|
362
|
+
|
|
363
|
+
|
|
213
364
|
}
|
|
214
365
|
|
oldaplib/src/datamodel.py
CHANGED
|
@@ -753,15 +753,18 @@ class DataModel(Model):
|
|
|
753
753
|
f.write('\n')
|
|
754
754
|
f.write(context.turtle_context)
|
|
755
755
|
f.write(f'\n{blank:{indent * indent_inc}}{self.__graph}:shacl {{\n')
|
|
756
|
-
f.write(f'{blank:{(indent +
|
|
756
|
+
f.write(f'{blank:{(indent + 1) * indent_inc}}{self.__graph}:shapes schema:version {self.__version.toRdf} .\n')
|
|
757
757
|
f.write('\n')
|
|
758
758
|
for qname, onto in self.__extontos.items():
|
|
759
759
|
f.write(onto.create_shacl(timestamp=timestamp, indent=1))
|
|
760
|
+
f.write('\n\n')
|
|
760
761
|
for iri, prop in self.__propclasses.items():
|
|
761
762
|
if not prop.internal:
|
|
762
763
|
f.write(prop.create_shacl(timestamp=timestamp, indent=1))
|
|
764
|
+
f.write('\n\n')
|
|
763
765
|
for iri, resclass in self.__resclasses.items():
|
|
764
766
|
f.write(resclass.create_shacl(timestamp=timestamp, indent=1))
|
|
767
|
+
f.write('\n\n')
|
|
765
768
|
f.write(f'\n{blank:{indent * indent_inc}}}}\n')
|
|
766
769
|
|
|
767
770
|
f.write(f'{blank:{indent * indent_inc}}{self.__graph}:onto {{\n')
|
|
@@ -12,7 +12,7 @@ from oldaplib.src.xsd.xsd_qname import Xsd_QName
|
|
|
12
12
|
@unique
|
|
13
13
|
class HasPropertyAttr(AttributeClass):
|
|
14
14
|
# order: (QName, mandatory, immutable, datatype)
|
|
15
|
-
MIN_COUNT = ('sh:minCount', False, False,
|
|
16
|
-
MAX_COUNT = ('sh:maxCount', False, False,
|
|
15
|
+
MIN_COUNT = ('sh:minCount', False, False, Xsd_integer)
|
|
16
|
+
MAX_COUNT = ('sh:maxCount', False, False, Xsd_integer)
|
|
17
17
|
ORDER = ('sh:order', False, False, Xsd_decimal)
|
|
18
18
|
GROUP = ('sh:group', False, False, Xsd_QName)
|
oldaplib/src/hasproperty.py
CHANGED
|
@@ -222,12 +222,15 @@ class HasProperty(Model, Notify):
|
|
|
222
222
|
max_count = Xsd_nonNegativeInteger(int(self._attributes[HasPropertyAttr.MAX_COUNT])) if self._attributes.get(HasPropertyAttr.MAX_COUNT) else None
|
|
223
223
|
|
|
224
224
|
if min_count and max_count and min_count == max_count:
|
|
225
|
-
|
|
225
|
+
tmp = Xsd_nonNegativeInteger(min_count)
|
|
226
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
|
|
226
227
|
else:
|
|
227
228
|
if min_count:
|
|
228
|
-
|
|
229
|
+
tmp = Xsd_nonNegativeInteger(min_count)
|
|
230
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
|
|
229
231
|
if max_count:
|
|
230
|
-
|
|
232
|
+
tmp = Xsd_nonNegativeInteger(max_count)
|
|
233
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
|
|
231
234
|
return sparql
|
|
232
235
|
|
|
233
236
|
def update_shacl(self,
|
|
@@ -287,12 +290,15 @@ class HasProperty(Model, Notify):
|
|
|
287
290
|
if min_count or max_count:
|
|
288
291
|
sparql += f'{blank:{indent * indent_inc}}INSERT {{\n'
|
|
289
292
|
if min_count and max_count and min_count == max_count:
|
|
290
|
-
|
|
293
|
+
tmp = Xsd_nonNegativeInteger(min_count)
|
|
294
|
+
sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:qualifiedCardinality {tmp.toRdf} .\n'
|
|
291
295
|
else:
|
|
292
296
|
if min_count:
|
|
293
|
-
|
|
297
|
+
tmp = Xsd_nonNegativeInteger(min_count)
|
|
298
|
+
sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:minQualifiedCardinality {tmp.toRdf} .\n'
|
|
294
299
|
if max_count:
|
|
295
|
-
|
|
300
|
+
tmp = Xsd_nonNegativeInteger(max_count)
|
|
301
|
+
sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:maxQualifiedCardinality {tmp.toRdf} .\n'
|
|
296
302
|
sparql += f'{blank:{indent * indent_inc}}}}\n'
|
|
297
303
|
|
|
298
304
|
sparql += f'{blank:{indent * indent_inc}}WHERE {{\n'
|
oldaplib/src/objectfactory.py
CHANGED
|
@@ -877,7 +877,7 @@ class ResourceInstance:
|
|
|
877
877
|
projectShortName: Xsd_NCName | str,
|
|
878
878
|
s: str,
|
|
879
879
|
resClass: Xsd_QName | str | None = None,
|
|
880
|
-
|
|
880
|
+
countOnly: bool = False,
|
|
881
881
|
sortBy: SortBy | None = None,
|
|
882
882
|
limit: int = 100,
|
|
883
883
|
offset: int = 0,
|
|
@@ -896,8 +896,8 @@ class ResourceInstance:
|
|
|
896
896
|
:param resClass: An optional entity class (Xsd_QName) used to filter results. If provided as a string,
|
|
897
897
|
it is validated and converted to Xsd_QName.
|
|
898
898
|
:type resClass: Xsd_QName | str | None
|
|
899
|
-
:param
|
|
900
|
-
:type
|
|
899
|
+
:param countOnly: If True, only the count of matching entities will be returned. Defaults to False.
|
|
900
|
+
:type countOnly: bool
|
|
901
901
|
:param sortBy: Optional sorting criterion for the results, such as creation date, last modification date,
|
|
902
902
|
or property values. Defaults to None.
|
|
903
903
|
:type sortBy: SortBy | None
|
|
@@ -949,7 +949,7 @@ class ResourceInstance:
|
|
|
949
949
|
context = Context(name=con.context_name)
|
|
950
950
|
sparql = context.sparql_context
|
|
951
951
|
|
|
952
|
-
if (
|
|
952
|
+
if (countOnly):
|
|
953
953
|
sparql += f'{blank:{indent * indent_inc}}SELECT (COUNT(DISTINCT ?s) as ?numResult)'
|
|
954
954
|
else:
|
|
955
955
|
sparql += f'{blank:{indent * indent_inc}}SELECT DISTINCT ?s ?t ?p ?o'
|
|
@@ -989,7 +989,7 @@ class ResourceInstance:
|
|
|
989
989
|
if sortBy == SortBy.PROPVAL:
|
|
990
990
|
sparql += f'\n{blank:{indent * indent_inc}}ORDER BY ASC(LCASE(STR(?o)))'
|
|
991
991
|
|
|
992
|
-
if not
|
|
992
|
+
if not countOnly:
|
|
993
993
|
sparql += f'\n{blank:{indent * indent_inc}}LIMIT {limit} OFFSET {offset}'
|
|
994
994
|
sparql += '\n'
|
|
995
995
|
|
|
@@ -1000,7 +1000,7 @@ class ResourceInstance:
|
|
|
1000
1000
|
print(sparql)
|
|
1001
1001
|
raise
|
|
1002
1002
|
res = QueryProcessor(context, jsonres)
|
|
1003
|
-
if
|
|
1003
|
+
if countOnly:
|
|
1004
1004
|
return res[0]['numResult']
|
|
1005
1005
|
else:
|
|
1006
1006
|
result = {}
|
|
@@ -1073,8 +1073,9 @@ class ResourceInstance:
|
|
|
1073
1073
|
sparql += f'{blank:{indent * indent_inc}}SELECT (COUNT(DISTINCT ?s) as ?numResult)'
|
|
1074
1074
|
else:
|
|
1075
1075
|
sparql += f'{blank:{indent * indent_inc}}SELECT DISTINCT ?s'
|
|
1076
|
-
|
|
1077
|
-
|
|
1076
|
+
if includeProperties:
|
|
1077
|
+
for index, item in enumerate(includeProperties):
|
|
1078
|
+
sparql += f' ?o{index}'
|
|
1078
1079
|
if sortBy:
|
|
1079
1080
|
if sortBy == SortBy.CREATED:
|
|
1080
1081
|
sparql += ' ?creationDate'
|
|
@@ -1087,8 +1088,9 @@ class ResourceInstance:
|
|
|
1087
1088
|
sparql += f'\n{blank:{(indent + 2) * indent_inc}}?s oldap:creationDate ?creationDate .'
|
|
1088
1089
|
if sortBy == SortBy.LASTMOD:
|
|
1089
1090
|
sparql += f'\n{blank:{(indent + 2) * indent_inc}}?s oldap:lastModificationDate ?lastModificationDate .'
|
|
1090
|
-
|
|
1091
|
-
|
|
1091
|
+
if includeProperties:
|
|
1092
|
+
for index, prop in enumerate(includeProperties):
|
|
1093
|
+
sparql += f'\n{blank:{(indent + 2) * indent_inc}}?s {prop} ?o{index} .'
|
|
1092
1094
|
sparql += f'\n{blank:{(indent + 2) * indent_inc}}?s rdf:type {resClass} .'
|
|
1093
1095
|
sparql += f'\n{blank:{(indent + 2) * indent_inc}}?s oldap:grantsPermission ?permset .'
|
|
1094
1096
|
sparql += f'\n{blank:{(indent + 1) * indent_inc}}}}'
|
|
@@ -1107,8 +1109,9 @@ class ResourceInstance:
|
|
|
1107
1109
|
sparql += f'\n{blank:{indent * indent_inc}}ORDER BY ASC(?lastModificationDate)'
|
|
1108
1110
|
if sortBy == SortBy.PROPVAL:
|
|
1109
1111
|
sparql += f'\n{blank:{indent * indent_inc}}ORDER BY'
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
+
if includeProperties:
|
|
1113
|
+
for index, item in enumerate(includeProperties):
|
|
1114
|
+
sparql += f'\n{blank:{indent * indent_inc}} ?o{index}'
|
|
1112
1115
|
|
|
1113
1116
|
if not count_only:
|
|
1114
1117
|
sparql += f'\n{blank:{indent * indent_inc}}LIMIT {limit} OFFSET {offset}'
|
|
@@ -1126,8 +1129,9 @@ class ResourceInstance:
|
|
|
1126
1129
|
result = {}
|
|
1127
1130
|
for r in res:
|
|
1128
1131
|
tmp = {}
|
|
1129
|
-
|
|
1130
|
-
|
|
1132
|
+
if includeProperties:
|
|
1133
|
+
for index, item in enumerate(includeProperties):
|
|
1134
|
+
tmp[item] = r[f'o{index}']
|
|
1131
1135
|
|
|
1132
1136
|
if sortBy:
|
|
1133
1137
|
if sortBy == SortBy.CREATED:
|
oldaplib/src/propertyclass.py
CHANGED
|
@@ -67,8 +67,8 @@ Attributes = dict[Xsd_QName, PropTypes]
|
|
|
67
67
|
@serializer
|
|
68
68
|
class HasPropertyData:
|
|
69
69
|
refprop: Xsd_QName | None = None
|
|
70
|
-
minCount:
|
|
71
|
-
maxCount:
|
|
70
|
+
minCount: Xsd_integer | None = None
|
|
71
|
+
maxCount: Xsd_integer | None = None
|
|
72
72
|
order: Xsd_decimal | None = None
|
|
73
73
|
group: Xsd_QName | None = None
|
|
74
74
|
|
|
@@ -91,12 +91,15 @@ class HasPropertyData:
|
|
|
91
91
|
sparql = ''
|
|
92
92
|
|
|
93
93
|
if self.minCount and self.maxCount and self.minCount == self.maxCount:
|
|
94
|
-
|
|
94
|
+
tmp = Xsd_nonNegativeInteger(self.minCount) # Convert to nonNegativeInteger
|
|
95
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
|
|
95
96
|
else:
|
|
96
97
|
if self.minCount:
|
|
97
|
-
|
|
98
|
+
tmp = Xsd_nonNegativeInteger(self.minCount)
|
|
99
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
|
|
98
100
|
if self.maxCount:
|
|
99
|
-
|
|
101
|
+
tmp = Xsd_nonNegativeInteger(self.maxCount)
|
|
102
|
+
sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
|
|
100
103
|
return sparql
|
|
101
104
|
|
|
102
105
|
#@strict
|
|
@@ -1135,12 +1138,15 @@ class PropertyClass(Model, Notify):
|
|
|
1135
1138
|
sparql += f'{blank:{(indent + 1) * indent_inc}}owl:onProperty {self._property_class_iri.toRdf}'
|
|
1136
1139
|
|
|
1137
1140
|
if haspropdata.minCount and haspropdata.maxCount and haspropdata.minCount == haspropdata.maxCount:
|
|
1138
|
-
|
|
1141
|
+
tmp = Xsd_nonNegativeInteger(haspropdata.minCount)
|
|
1142
|
+
sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
|
|
1139
1143
|
else:
|
|
1140
1144
|
if haspropdata.minCount:
|
|
1141
|
-
|
|
1145
|
+
tmp = Xsd_nonNegativeInteger(haspropdata.minCount)
|
|
1146
|
+
sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
|
|
1142
1147
|
if haspropdata.maxCount:
|
|
1143
|
-
|
|
1148
|
+
tmp = Xsd_nonNegativeInteger(haspropdata.maxCount)
|
|
1149
|
+
sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
|
|
1144
1150
|
#
|
|
1145
1151
|
# (NOTE: owl:onClass and owl:onDataRange can be used only in a restriction and are "local" to the use
|
|
1146
1152
|
# of the property within the given resource. However, rdfs:range is "global" for all use of this property!
|
oldaplib/src/resourceclass.py
CHANGED
|
@@ -983,12 +983,12 @@ class ResourceClass(Model, Notify):
|
|
|
983
983
|
elif p == 'owl:onClass':
|
|
984
984
|
propdict[bnode_id]['to_node_iri'] = r['o']
|
|
985
985
|
elif p == 'owl:minQualifiedCardinality':
|
|
986
|
-
propdict[bnode_id]['min_count'] = r['o']
|
|
986
|
+
propdict[bnode_id]['min_count'] = Xsd_integer(r['o'])
|
|
987
987
|
elif p == 'owl:maxQualifiedCardinality':
|
|
988
|
-
propdict[bnode_id]['max_count'] = r['o']
|
|
988
|
+
propdict[bnode_id]['max_count'] = Xsd_integer(r['o'])
|
|
989
989
|
elif p == 'owl:qualifiedCardinality':
|
|
990
|
-
propdict[bnode_id]['min_count'] = r['o']
|
|
991
|
-
propdict[bnode_id]['max_count'] = r['o']
|
|
990
|
+
propdict[bnode_id]['min_count'] = Xsd_integer(r['o'])
|
|
991
|
+
propdict[bnode_id]['max_count'] = Xsd_integer(r['o'])
|
|
992
992
|
elif p == 'owl:onDataRange':
|
|
993
993
|
propdict[bnode_id]['datatype'] = r['o']
|
|
994
994
|
else:
|
oldaplib/src/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.3.
|
|
1
|
+
__version__ = "0.3.13"
|
|
@@ -105,6 +105,9 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
105
105
|
file = project_root / 'oldaplib' / 'testdata' / 'objectfactory_test.trig'
|
|
106
106
|
cls._connection.upload_turtle(file)
|
|
107
107
|
|
|
108
|
+
file = project_root / 'oldaplib' / 'testdata' / 'instances_test.trig'
|
|
109
|
+
cls._connection.upload_turtle(file)
|
|
110
|
+
|
|
108
111
|
sleep(1) # upload may take a while...
|
|
109
112
|
|
|
110
113
|
user = User.read(cls._connection, "rosenth")
|
|
@@ -194,6 +197,9 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
194
197
|
self.assertEqual(p2.lastModifiedBy, p1.lastModifiedBy)
|
|
195
198
|
self.assertEqual(p2.lastModificationDate, p1.lastModificationDate)
|
|
196
199
|
|
|
200
|
+
b2.delete()
|
|
201
|
+
p2.delete()
|
|
202
|
+
|
|
197
203
|
def test_constructor_B(self):
|
|
198
204
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
199
205
|
AllTypes = factory.createObjectInstance('AllTypes')
|
|
@@ -341,6 +347,8 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
341
347
|
grantsPermission=Iri('oldap:GenericView'))
|
|
342
348
|
b.create()
|
|
343
349
|
|
|
350
|
+
b.delete()
|
|
351
|
+
|
|
344
352
|
def test_constructor_D(self):
|
|
345
353
|
dm = DataModel.read(con=self._connection, project='test')
|
|
346
354
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
@@ -362,6 +370,8 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
362
370
|
self.assertEqual(data['test:title'], ['The Life and Times of Scrooge'])
|
|
363
371
|
self.assertEqual(data['test:author'], ['test:TuomasHolopainen'])
|
|
364
372
|
|
|
373
|
+
b.delete()
|
|
374
|
+
|
|
365
375
|
def test_read_B(self):
|
|
366
376
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
367
377
|
Book = factory.createObjectInstance('Book')
|
|
@@ -396,6 +406,7 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
396
406
|
self.assertEqual(jsonobj['test:pubDate'], ['2001-01-01'])
|
|
397
407
|
self.assertEqual(jsonobj['test:title'], ['The Life and Times of Scrooge'])
|
|
398
408
|
|
|
409
|
+
bb.delete()
|
|
399
410
|
|
|
400
411
|
def test_value_setter(self):
|
|
401
412
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
@@ -450,6 +461,8 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
450
461
|
self.assertEqual(obj2.decimalSetter, {Xsd_decimal(3.14159), Xsd_decimal(2.71828), Xsd_decimal(1.61803)})
|
|
451
462
|
self.assertFalse(obj2.integerSetter)
|
|
452
463
|
|
|
464
|
+
obj2.delete()
|
|
465
|
+
|
|
453
466
|
def test_value_modifier_A(self):
|
|
454
467
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
455
468
|
SetterTester = factory.createObjectInstance('SetterTester')
|
|
@@ -476,6 +489,8 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
476
489
|
self.assertEqual(obj1.integerSetter, {Xsd_int(20), Xsd_int(42)})
|
|
477
490
|
self.assertFalse(obj1.booleanSetter)
|
|
478
491
|
|
|
492
|
+
obj1.delete()
|
|
493
|
+
|
|
479
494
|
def test_value_modifier_B(self):
|
|
480
495
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
481
496
|
SetterTester = factory.createObjectInstance('SetterTester')
|
|
@@ -502,6 +517,8 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
502
517
|
self.assertEqual(obj1.integerSetter, {Xsd_int(20), Xsd_int(42)})
|
|
503
518
|
self.assertFalse(obj1.booleanSetter)
|
|
504
519
|
|
|
520
|
+
obj1.delete()
|
|
521
|
+
|
|
505
522
|
def test_value_maxcount_mincount(self):
|
|
506
523
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
507
524
|
Person = factory.createObjectInstance('Person')
|
|
@@ -519,25 +536,9 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
519
536
|
with self.assertRaises(OldapErrorValue):
|
|
520
537
|
del obj1.familyName
|
|
521
538
|
|
|
522
|
-
|
|
523
|
-
# ps = PermissionSet(con=self._connection,
|
|
524
|
-
# permissionSetId="testNoUpdate",
|
|
525
|
-
# label=LangString("testNoUpdate@en"),
|
|
526
|
-
# comment=LangString("Testing PermissionSet@en"),
|
|
527
|
-
# givesPermission=DataPermission.DATA_VIEW,
|
|
528
|
-
# definedByProject="test")
|
|
529
|
-
# ps.create()
|
|
530
|
-
#
|
|
531
|
-
# user = User(con=self._connection,
|
|
532
|
-
# userId=Xsd_NCName("factorytestuser"),
|
|
533
|
-
# familyName="FactoryTest",
|
|
534
|
-
# givenName="FactoryTest",
|
|
535
|
-
# credentials="Waseliwas",
|
|
536
|
-
# inProject={'oldap:Test': {}},
|
|
537
|
-
# hasPermissions={ps.iri.as_qname},
|
|
538
|
-
# isActive=True)
|
|
539
|
-
# user.create()
|
|
539
|
+
obj1.delete()
|
|
540
540
|
|
|
541
|
+
def test_value_modifier_norights(self):
|
|
541
542
|
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
542
543
|
SetterTester = factory.createObjectInstance('SetterTester')
|
|
543
544
|
obj1 = SetterTester(stringSetter="This is a test string",
|
|
@@ -564,6 +565,11 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
564
565
|
with self.assertRaises(OldapErrorNoPermission):
|
|
565
566
|
obj.update()
|
|
566
567
|
|
|
568
|
+
factory = ResourceInstanceFactory(con=self._connection, project='test')
|
|
569
|
+
SetterTester = factory.createObjectInstance('SetterTester')
|
|
570
|
+
obj = SetterTester.read(con=self._connection, iri=obj1.iri)
|
|
571
|
+
obj.delete()
|
|
572
|
+
|
|
567
573
|
def test_delete_resource(self):
|
|
568
574
|
project = Project.read(con=self._connection, projectIri_SName='test')
|
|
569
575
|
factory = ResourceInstanceFactory(con=self._connection, project=project)
|
|
@@ -630,92 +636,50 @@ class TestObjectFactory(unittest.TestCase):
|
|
|
630
636
|
with self.assertRaises(OldapErrorNoPermission):
|
|
631
637
|
b.update()
|
|
632
638
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
def random_string(length=12):
|
|
636
|
-
chars = string.ascii_letters + string.digits
|
|
637
|
-
return ''.join(random.choices(chars, k=length))
|
|
639
|
+
with self.assertRaises(OldapErrorNoPermission):
|
|
640
|
+
b.delete()
|
|
638
641
|
|
|
639
|
-
project = Project.read(con=self._connection, projectIri_SName='test')
|
|
640
642
|
factory = ResourceInstanceFactory(con=self._connection, project=project)
|
|
641
|
-
|
|
642
|
-
Person = factory.createObjectInstance('Person')
|
|
643
|
-
persons = []
|
|
644
|
-
for i in range(4):
|
|
645
|
-
if i % 2 == 0:
|
|
646
|
-
familyName = 'Gaga' + random_string()
|
|
647
|
-
else:
|
|
648
|
-
familyName = random_string()
|
|
649
|
-
p = Person(familyName=familyName,
|
|
650
|
-
givenName=random_string(),
|
|
651
|
-
grantsPermission=Iri('oldap:GenericView'))
|
|
652
|
-
p.create()
|
|
653
|
-
persons.append(p.iri)
|
|
654
|
-
|
|
655
643
|
Book = factory.createObjectInstance('Book')
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
title = 'GAGA' + title
|
|
660
|
-
b = Book(title=title,
|
|
661
|
-
author=persons[i % 4],
|
|
662
|
-
pubDate="1995-09-27",
|
|
663
|
-
grantsPermission=Iri('oldap:GenericView'))
|
|
664
|
-
b.create()
|
|
665
|
-
|
|
644
|
+
b = Book.read(con=self._connection,
|
|
645
|
+
iri=b.iri)
|
|
646
|
+
b.delete()
|
|
666
647
|
|
|
648
|
+
def test_search_resource_A(self):
|
|
667
649
|
res = ResourceInstance.search_fulltext(con=self._connection,
|
|
668
650
|
projectShortName='test',
|
|
669
651
|
resClass='test:Book',
|
|
670
|
-
s='
|
|
652
|
+
s='geschichte',
|
|
671
653
|
sortBy=SortBy.CREATED)
|
|
672
654
|
|
|
673
|
-
self.assertEqual(len(res),
|
|
655
|
+
self.assertEqual(len(res), 2)
|
|
674
656
|
for x, y in res.items():
|
|
675
657
|
self.assertEqual(y[Xsd_QName("owl:Class")], Xsd_QName('test:Book'))
|
|
676
658
|
|
|
677
659
|
res = ResourceInstance.search_fulltext(con=self._connection,
|
|
678
660
|
projectShortName='test',
|
|
679
|
-
s='
|
|
661
|
+
s='spez',
|
|
680
662
|
sortBy=SortBy.CREATED)
|
|
681
663
|
|
|
682
|
-
self.assertEqual(len(res),
|
|
664
|
+
self.assertEqual(len(res), 5)
|
|
683
665
|
for x, y in res.items():
|
|
684
|
-
self.assertTrue(y[Xsd_QName("owl:Class")] in {Xsd_QName('test:Book'), Xsd_QName('test:
|
|
666
|
+
self.assertTrue(y[Xsd_QName("owl:Class")] in {Xsd_QName('test:Book'), Xsd_QName('test:Page')})
|
|
685
667
|
|
|
686
668
|
def test_search_resource_B(self):
|
|
687
|
-
|
|
688
|
-
def random_string(length=12):
|
|
689
|
-
chars = string.ascii_letters + string.digits
|
|
690
|
-
return ''.join(random.choices(chars, k=length))
|
|
691
|
-
|
|
692
|
-
project = Project.read(con=self._connection, projectIri_SName='test')
|
|
693
|
-
factory = ResourceInstanceFactory(con=self._connection, project=project)
|
|
694
|
-
Page = factory.createObjectInstance('Page')
|
|
695
|
-
for i in range(1, 11):
|
|
696
|
-
b = Page(pageNum=Xsd_positiveInteger(i),
|
|
697
|
-
pageDesignation=f'Seite {i}',
|
|
698
|
-
pageContent=random_string(16),
|
|
699
|
-
pageInBook=Xsd_QName('test', 'gaga', validate=False),
|
|
700
|
-
grantsPermission=Iri('oldap:GenericView'))
|
|
701
|
-
b.create()
|
|
702
|
-
|
|
703
|
-
Person = factory.createObjectInstance('Person')
|
|
704
|
-
for i in range(4):
|
|
705
|
-
p = Person(familyName=random_string(),
|
|
706
|
-
givenName=random_string(),
|
|
707
|
-
grantsPermission=Iri('oldap:GenericView'))
|
|
708
|
-
p.create()
|
|
709
|
-
|
|
710
669
|
res = ResourceInstance.all_resources(con=self._connection,
|
|
711
670
|
projectShortName='test',
|
|
712
671
|
resClass='test:Page',
|
|
713
672
|
includeProperties=[Xsd_QName('test:pageNum'), Xsd_QName('test:pageContent')],
|
|
714
673
|
sortBy = SortBy.CREATED)
|
|
715
|
-
self.assertEqual(len(res),
|
|
674
|
+
self.assertEqual(len(res), 8)
|
|
716
675
|
for r in res:
|
|
717
676
|
self.assertEqual(len(res[r]), 3)
|
|
718
677
|
|
|
678
|
+
def test_search_resource_C(self):
|
|
679
|
+
res = ResourceInstance.all_resources(con=self._connection,
|
|
680
|
+
projectShortName='test',
|
|
681
|
+
resClass='test:Page')
|
|
682
|
+
self.assertEqual(len(res), 8)
|
|
719
683
|
|
|
720
684
|
|
|
721
685
|
if __name__ == '__main__':
|
|
@@ -9,7 +9,7 @@ test:data {
|
|
|
9
9
|
:lastModifiedBy <https://orcid.org/0000-0003-1681-4036>;
|
|
10
10
|
:lastModificationDate "2025-11-13T16:43:21.284536+01:00"^^xsd:dateTimeStamp;
|
|
11
11
|
:grantsPermission :GenericView;
|
|
12
|
-
test:title "Die Geschichte der tQh5OAgXOaK5"@de;
|
|
12
|
+
test:title "Die Geschichte der Spez. tQh5OAgXOaK5"@de;
|
|
13
13
|
test:pubDate "2026-01-01"^^xsd:date .
|
|
14
14
|
|
|
15
15
|
<urn:uuid:57141a6b-46b5-4c82-a74c-d48a15437c4f> a test:Page;
|
|
@@ -21,7 +21,7 @@ test:data {
|
|
|
21
21
|
test:pageDesignation "Page 1";
|
|
22
22
|
test:pageNum "1"^^xsd:positiveInteger;
|
|
23
23
|
test:pageDescription "Description for page 1"@en;
|
|
24
|
-
test:pageContent "Content for page 1\\nXpVzpnoxhxZEhp0hRWWcBmOLA3h62KT4f8FLxwL3kpGUdhLWBveN9KiML34YXk86SW6PDnZgz4GELOiZOqMvo9chdXhR1e0W3FIn";
|
|
24
|
+
test:pageContent "Content for page 1\\Spez. nXpVzpnoxhxZEhp0hRWWcBmOLA3h62KT4f8FLxwL3kpGUdhLWBveN9KiML34YXk86SW6PDnZgz4GELOiZOqMvo9chdXhR1e0W3FIn";
|
|
25
25
|
test:pageInBook <urn:uuid:7a1de6d7-de75-4875-ab24-74819057703f> .
|
|
26
26
|
|
|
27
27
|
<urn:uuid:b382c2bc-6a61-4f60-a963-ec1eb5bc7428> a test:Page;
|
|
@@ -33,7 +33,7 @@ test:data {
|
|
|
33
33
|
test:pageDesignation "Page 2";
|
|
34
34
|
test:pageNum "2"^^xsd:positiveInteger;
|
|
35
35
|
test:pageDescription "Description for page 2"@en;
|
|
36
|
-
test:pageContent "Waseliwas for page 2\\nP7OGEXPNRcM62O2gVVmTzp8xSjnMM0jNTdyFpDI3Cf1VTH1AcvrFt3AYSWCLEQIBttAs23DHkAXzaehFbA81TwkIKLKUSz9v1qAV";
|
|
36
|
+
test:pageContent "Waseliwas for page 2\\Spez. nP7OGEXPNRcM62O2gVVmTzp8xSjnMM0jNTdyFpDI3Cf1VTH1AcvrFt3AYSWCLEQIBttAs23DHkAXzaehFbA81TwkIKLKUSz9v1qAV";
|
|
37
37
|
test:pageInBook <urn:uuid:7a1de6d7-de75-4875-ab24-74819057703f> .
|
|
38
38
|
|
|
39
39
|
<urn:uuid:a8f0ec0c-28ed-449c-8f22-81ee20bfb0a3> a test:Page;
|
|
@@ -45,7 +45,7 @@ test:data {
|
|
|
45
45
|
test:pageDesignation "Page 3";
|
|
46
46
|
test:pageNum "3"^^xsd:positiveInteger;
|
|
47
47
|
test:pageDescription "Description for page 3"@en;
|
|
48
|
-
test:pageContent "Content for page 3\\nAdjA5kTzS7lT6W7F2bgLYtcXBkDxOAelvXThXNt5uranbB2WgsSsPu5uklCy8IVdRhqod6iWhMVWdqMhZWnv1NkgJQ2vjhHB57bh";
|
|
48
|
+
test:pageContent "Content for page 3\\Spez. nAdjA5kTzS7lT6W7F2bgLYtcXBkDxOAelvXThXNt5uranbB2WgsSsPu5uklCy8IVdRhqod6iWhMVWdqMhZWnv1NkgJQ2vjhHB57bh";
|
|
49
49
|
test:pageInBook <urn:uuid:7a1de6d7-de75-4875-ab24-74819057703f> .
|
|
50
50
|
|
|
51
51
|
<urn:uuid:098df661-de13-4fa7-b3aa-2ed5aa1180a8> a test:Page;
|
|
@@ -78,7 +78,7 @@ test:data {
|
|
|
78
78
|
test:pageDesignation "Page 1";
|
|
79
79
|
test:pageNum "1"^^xsd:positiveInteger;
|
|
80
80
|
test:pageDescription "Description for page 1"@en;
|
|
81
|
-
test:pageContent "Content for page 1\\
|
|
81
|
+
test:pageContent "Content for page 1\\nSpez. TnfJDOE1D0hFuY9B2zKJW7g5oW48XTqKSd9nNYL0QrjxAk38Aka6g9zEr6q8OdAoxWePellSt4Ixq3jfaF1YlkOYBLyWft0LpzjS";
|
|
82
82
|
test:pageInBook <urn:uuid:9bf6ae23-bf2f-4466-abe3-65efe6afe589> .
|
|
83
83
|
|
|
84
84
|
<urn:uuid:674467a8-8fbe-425c-a2f6-06d2e52adc99> a test:Page;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: oldaplib
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.13
|
|
4
4
|
Summary: Open Media Access Server Library (Linked Open Data middleware/RESTApi)
|
|
5
5
|
License: GNU Affero General Public License version 3
|
|
6
6
|
Author: Lukas Rosenthaler
|
|
@@ -79,4 +79,11 @@ http://oldap.org/<location>/<project>/data#
|
|
|
79
79
|
The project name must be unique to the location and is of
|
|
80
80
|
type [NCName](https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName).
|
|
81
81
|
|
|
82
|
+
## Media object
|
|
83
|
+
|
|
84
|
+
- originalName: `<http://purl.org/dc/terms/originalName>`
|
|
85
|
+
- originalMimeType: `<http://purl.org/dc/terms/format>`
|
|
86
|
+
- mediaserverUri: xsd:anyURI
|
|
87
|
+
- project: `<http://oldap.org/base#project>`
|
|
88
|
+
|
|
82
89
|
|
|
@@ -5,12 +5,12 @@ oldaplib/ontologies/admin.trig,sha256=S53TALvsBvbkV_Put4bUlwk8ZcD-Fj-K6LlsKkiuB9
|
|
|
5
5
|
oldaplib/ontologies/example.trig,sha256=MdRrFBZZ1L6aUDiT6aX4cnXiy-RoZHczF3Exn7aBSmU,1518
|
|
6
6
|
oldaplib/ontologies/oldap.trig,sha256=i2XanqKlhWSIdD17fLu5g0Luq2GORQCcyIfLn9Kummk,60241
|
|
7
7
|
oldaplib/ontologies/oldap.ttl,sha256=qdA0uiSjzVhkc1d5IN2y5ioK1QMzwl-TTnn3M_D1Kh8,29446
|
|
8
|
-
oldaplib/ontologies/shared.trig,sha256=
|
|
8
|
+
oldaplib/ontologies/shared.trig,sha256=s_AqJGC_LCftiJ0KyCGhkoWL8IoLEnAVcfo8Vz9zMjY,17994
|
|
9
9
|
oldaplib/ontologies/standard/.gitsave,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
oldaplib/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
oldaplib/src/cachesingleton.py,sha256=WGhuFER-mTnOJmwaN17fXPAg7zn7GJBm-XadShNUBBk,3687
|
|
12
12
|
oldaplib/src/connection.py,sha256=LJMJO65QhSbheIEBnOCphRyAD1STwkO8zfNcYPcKwP8,29016
|
|
13
|
-
oldaplib/src/datamodel.py,sha256=
|
|
13
|
+
oldaplib/src/datamodel.py,sha256=HXur6vCFW4WGsQ8sKxVK0uz2I742_8xm1nVDJ8JNviY,35147
|
|
14
14
|
oldaplib/src/dtypes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
oldaplib/src/dtypes/bnode.py,sha256=7Swl77PJlzahov7d7ijJExmoVsTkR5JFOvFQf1jDmEg,1555
|
|
16
16
|
oldaplib/src/dtypes/languagein.py,sha256=6h3VrTH8IcTN6mvnWuGvzDoKX_Jh6h9w3wWrLuAWfVc,8593
|
|
@@ -23,7 +23,7 @@ oldaplib/src/enums/adminpermissions.py,sha256=v8Rc83NPSG_s7830-I7CbmKIhOioN2YkSH
|
|
|
23
23
|
oldaplib/src/enums/attributeclass.py,sha256=Lc7OnMMl9vjXj0SuL0l30iEjwC3oWDv_C8PFeTavDGc,3006
|
|
24
24
|
oldaplib/src/enums/datapermissions.py,sha256=0KiDjrPeSpGDAui8Z74sFBdDm64stzcMJx_dVEa2-bo,3437
|
|
25
25
|
oldaplib/src/enums/externalontologyattr.py,sha256=H7SrWrhe1Dkz_t1OFCWZVh3_14lJDltYGh3dOFr1Z6w,807
|
|
26
|
-
oldaplib/src/enums/haspropertyattr.py,sha256=
|
|
26
|
+
oldaplib/src/enums/haspropertyattr.py,sha256=Pwi-520nxue3s1fku9x4FNFBOOKSbYVI9MTVGD5jaeU,726
|
|
27
27
|
oldaplib/src/enums/language.py,sha256=OfQsFpIBj8lGBbZEqVCR_1F-bimPM48vqBl4EKBgggY,4623
|
|
28
28
|
oldaplib/src/enums/oldaplistattr.py,sha256=xuOU3oP35-PFFmlI-jlN28yqdk5lp_OzScKCC1O4IDI,620
|
|
29
29
|
oldaplib/src/enums/oldaplistnodeattr.py,sha256=qokSxE-0FLyWNipjjY3gZJC2bBEt1qS1Z2SFg-gb0kc,722
|
|
@@ -37,7 +37,7 @@ oldaplib/src/enums/userattr.py,sha256=ZRBGGLP5NMvyAER893TzRjfkhZk4jOtS9RsSkYsQM-
|
|
|
37
37
|
oldaplib/src/enums/xsd_datatypes.py,sha256=TGpy2TEaYfmCsSCClSyK76ixNP_hR7nEdJvCT6l-Txk,6253
|
|
38
38
|
oldaplib/src/externalontology.py,sha256=VaQvVlq5muzmQ466c1gKrldXn9Wx_WfOR7pUCjw_cYw,23888
|
|
39
39
|
oldaplib/src/globalconfig.py,sha256=zAJmAMQnojbhj8SZFUaPj7DIHN5g3wUwQQhWPMxjDUg,1306
|
|
40
|
-
oldaplib/src/hasproperty.py,sha256=
|
|
40
|
+
oldaplib/src/hasproperty.py,sha256=VnjLa6VBIH---mwh1mJ_drisDqjPu7By1RhFAVZaT7k,15814
|
|
41
41
|
oldaplib/src/helpers/Notify.py,sha256=9zzO93F4V4lj-xF6b3hpRg1QkI4TR_GYEh3ptsohlfQ,2008
|
|
42
42
|
oldaplib/src/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
oldaplib/src/helpers/attributechange.py,sha256=aQ5Q9s6U3bVd1WSNQcBpkr5UQVxeP4z_uz0K5_31ZVc,256
|
|
@@ -59,18 +59,18 @@ oldaplib/src/helpers/tools.py,sha256=sNbiOLucTGNFzZmiWwPLFOb80VTXQH0Zd9uCGubhzAk
|
|
|
59
59
|
oldaplib/src/iconnection.py,sha256=XlOc2Kh4tK_UOHydLQwlWjUFLUze-Aq_vEZpf9KS1-s,3677
|
|
60
60
|
oldaplib/src/in_project.py,sha256=2KuhHPj8DNveFRBeImrRfxlCOYhBK-mcxXYUp6s--j8,10672
|
|
61
61
|
oldaplib/src/model.py,sha256=VACR3T6zJYFaE5J1PFFdP0OSwhbu4sahoLMWg6_L_rE,19267
|
|
62
|
-
oldaplib/src/objectfactory.py,sha256=
|
|
62
|
+
oldaplib/src/objectfactory.py,sha256=sc642TXVWi9mVo2xziNiy80lNCOv12E3SgN5lF6gkhs,63720
|
|
63
63
|
oldaplib/src/oldaplist.py,sha256=sGAvEEJukRCjM70G0NFaR-L9YPleQTOtdWGExj3oYL8,42933
|
|
64
64
|
oldaplib/src/oldaplist_helpers.py,sha256=1Gur0nS1PCKb9iUtCKPUFDOYjw6vvAwYpe-G3DdxlEc,14213
|
|
65
65
|
oldaplib/src/oldaplistnode.py,sha256=NnC2juEGTtEkDO6OlB9PjSw_zTF-wSsRUgEk-6VV9DA,87344
|
|
66
66
|
oldaplib/src/oldaplogging.py,sha256=IDSOylms9OSTInYPC4Y2QrTTEzRL0T5I2QssCevOhTU,1242
|
|
67
67
|
oldaplib/src/permissionset.py,sha256=bzzVuZ7O_yVMujziwo32GEJIZYGG3g5gTds4HjLmGtU,31874
|
|
68
68
|
oldaplib/src/project.py,sha256=DNwViRg19zkE1F0zuWqQFK008uTVehVAu7xNbyessig,34207
|
|
69
|
-
oldaplib/src/propertyclass.py,sha256=
|
|
70
|
-
oldaplib/src/resourceclass.py,sha256=
|
|
69
|
+
oldaplib/src/propertyclass.py,sha256=WcRz-yzNOenyTWsYHkh48vaJDFO_0AgH9AMFq-HsiVo,93777
|
|
70
|
+
oldaplib/src/resourceclass.py,sha256=I6m93JhfCh4XAUFgmb6v0fD798DfU7-ImTKrUJk4g-o,102098
|
|
71
71
|
oldaplib/src/user.py,sha256=Z4GXPRkaHXx3glUpPXQdFqYMxQPOuqayDwkTAE5RGjU,48820
|
|
72
72
|
oldaplib/src/userdataclass.py,sha256=FbZkcRt0pKbOeqsZ7HbpwoKE-XPWH2AqpHG1GcsrBPo,12364
|
|
73
|
-
oldaplib/src/version.py,sha256=
|
|
73
|
+
oldaplib/src/version.py,sha256=dakbk6DEOnVi7Zc-bN9tdKomLcWKaxpUWufJE8NWxcY,22
|
|
74
74
|
oldaplib/src/xsd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
75
|
oldaplib/src/xsd/floatingpoint.py,sha256=rDReKqh0mXyc4F5wslgTUxbeGf3-PGERyughj5_62YI,8852
|
|
76
76
|
oldaplib/src/xsd/iri.py,sha256=w1Dr0z-REi7yPe3GPGnyzGrLVMvLY03kEeK-AmZ9sxw,8383
|
|
@@ -126,7 +126,7 @@ oldaplib/test/test_hasproperty.py,sha256=r991g8kBTfv1CGs9Hf0fli-AUp7Ob7rOHWYD74h
|
|
|
126
126
|
oldaplib/test/test_in_project.py,sha256=DYT-guwRQ9crnfEt7cQZxoEMxThin7QeymNce3jaZx4,7779
|
|
127
127
|
oldaplib/test/test_langstring.py,sha256=37BeKiQzj63G-SyS_paK_SEG7ulRbGrE89Mz40UB_bE,15146
|
|
128
128
|
oldaplib/test/test_language_in.py,sha256=ELqHO-YIsZSCPF3E3rWde4J7rERL7En7sV_pzQ00zgs,8826
|
|
129
|
-
oldaplib/test/test_objectfactory.py,sha256=
|
|
129
|
+
oldaplib/test/test_objectfactory.py,sha256=JuEUQAOmMpWptJlk1o3hz48NlZ3CQbsEAYRK_-XL7tg,35487
|
|
130
130
|
oldaplib/test/test_observable_dict.py,sha256=GxD0sM0nsVfVRBu92SFGkJ6--YXq4ibBWI4IpjZZzDU,1396
|
|
131
131
|
oldaplib/test/test_observable_set.py,sha256=JWZSoAsr8XIEBXPVgSVJjQQEEc8uSAme5IrFYLYVVXw,6313
|
|
132
132
|
oldaplib/test/test_oldaplist.py,sha256=9wo3tEOHt5bIuXyvSSyTzjhtdKrQHiiAA6EfVBuq4wI,20114
|
|
@@ -145,7 +145,7 @@ oldaplib/testdata/connection_test.trig,sha256=LFTGLEae7SaTU67rwvgvg_epi09O7oPZwf
|
|
|
145
145
|
oldaplib/testdata/datamodel_test.trig,sha256=0n02awPthzi-Lx-_ABlrD9yZ3I1sWxp7eIbFwSxwKNA,802
|
|
146
146
|
oldaplib/testdata/event_type.yaml,sha256=wpXiheSEKh4xOoUZvAxWytJQ-sNK6oUYdVpOmyW9wPc,3083
|
|
147
147
|
oldaplib/testdata/hlist_schema.yaml,sha256=fgHiB-ZxOkE6OvkZKk9SL2kNn8Akj6dS6ySDFSpknTA,186
|
|
148
|
-
oldaplib/testdata/instances_test.trig,sha256=
|
|
148
|
+
oldaplib/testdata/instances_test.trig,sha256=i1ouJhBGrFqIYX0A4wG6gU24Gtf9itITn-PRBiB6-tc,6883
|
|
149
149
|
oldaplib/testdata/institution_or_building_type.yaml,sha256=SA2rsQwoAdyn6eSIJU1ilmdIQf-f1XNApwBow-JlJTo,2439
|
|
150
150
|
oldaplib/testdata/language.yaml,sha256=YaQA77d7QyOydqNylR5RSb-0A6h9pLM4mgadJSrYC3A,451
|
|
151
151
|
oldaplib/testdata/location_type.yaml,sha256=amlhYNDc9qLv_if6urtAtBTnEXrVrb6_aulE180GYkc,1323
|
|
@@ -158,6 +158,6 @@ oldaplib/testdata/source_type.yaml,sha256=dSihKikw3O-IlGf6anj5KWMoBYLaweLVF1Zojm
|
|
|
158
158
|
oldaplib/testdata/test_move_left_of_toL.yaml,sha256=2m1OSQrQFlsCQxeJrjzBAO74LMprNDo_HuyrYGsOeXI,787
|
|
159
159
|
oldaplib/testdata/testlist.yaml,sha256=AT11nXEG81Sfyb-tr1gQV0H_dZBrOCcFuHf7YtL8P2g,1994
|
|
160
160
|
oldaplib/testit.http,sha256=qW7mnr6aNLXFG6lQdLgyhXILOPN6qc5iFVZclLyVvkY,303
|
|
161
|
-
oldaplib-0.3.
|
|
162
|
-
oldaplib-0.3.
|
|
163
|
-
oldaplib-0.3.
|
|
161
|
+
oldaplib-0.3.13.dist-info/METADATA,sha256=InQ1jYzzK_3V9L7oyKW-DG-6x_ZRgZy4_D4r7bqgYto,3061
|
|
162
|
+
oldaplib-0.3.13.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
163
|
+
oldaplib-0.3.13.dist-info/RECORD,,
|
|
File without changes
|