oldaplib 0.3.3__py3-none-any.whl → 0.3.5__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/admin-testing.trig +2 -4
- oldaplib/ontologies/admin.trig +2 -4
- oldaplib/ontologies/oldap.trig +221 -131
- oldaplib/ontologies/shared.trig +0 -3
- oldaplib/src/datamodel.py +109 -17
- oldaplib/src/dtypes/namespaceiri.py +16 -1
- oldaplib/src/enums/attributeclass.py +31 -6
- oldaplib/src/enums/externalontologyattr.py +22 -0
- oldaplib/src/enums/owlpropertytype.py +10 -0
- oldaplib/src/enums/projectattr.py +0 -1
- oldaplib/src/enums/propertyclassattr.py +24 -19
- oldaplib/src/externalontology.py +554 -0
- oldaplib/src/hasproperty.py +5 -0
- oldaplib/src/helpers/context.py +4 -4
- oldaplib/src/helpers/langstring.py +11 -2
- oldaplib/src/helpers/observable_dict.py +4 -1
- oldaplib/src/helpers/observable_set.py +135 -80
- oldaplib/src/helpers/query_processor.py +3 -0
- oldaplib/src/model.py +1 -1
- oldaplib/src/oldaplist.py +2 -2
- oldaplib/src/oldaplistnode.py +2 -2
- oldaplib/src/permissionset.py +3 -3
- oldaplib/src/project.py +47 -113
- oldaplib/src/propertyclass.py +98 -36
- oldaplib/src/resourceclass.py +7 -5
- oldaplib/src/version.py +1 -1
- oldaplib/src/xsd/iri.py +3 -0
- oldaplib/src/xsd/xsd_anyuri.py +5 -5
- oldaplib/src/xsd/xsd_qname.py +6 -3
- oldaplib/test/test_context.py +0 -4
- oldaplib/test/test_datamodel.py +50 -1
- oldaplib/test/test_dtypes.py +3 -2
- oldaplib/test/test_externalontologies.py +175 -0
- oldaplib/test/test_project.py +31 -76
- oldaplib/test/test_propertyclass.py +168 -6
- oldaplib/test/test_resourceclass.py +10 -10
- oldaplib/testdata/connection_test.trig +29 -12
- oldaplib/testdata/datamodel_test.trig +1 -1
- oldaplib/testdata/objectfactory_test.trig +2 -1
- {oldaplib-0.3.3.dist-info → oldaplib-0.3.5.dist-info}/METADATA +3 -2
- {oldaplib-0.3.3.dist-info → oldaplib-0.3.5.dist-info}/RECORD +42 -39
- {oldaplib-0.3.3.dist-info → oldaplib-0.3.5.dist-info}/WHEEL +1 -1
|
@@ -16,6 +16,7 @@ from oldaplib.src.enums.propertyclassattr import PropClassAttr
|
|
|
16
16
|
from oldaplib.src.enums.xsd_datatypes import XsdDatatypes
|
|
17
17
|
from oldaplib.src.helpers.context import Context
|
|
18
18
|
from oldaplib.src.helpers.langstring import LangString, LangStringChange
|
|
19
|
+
from oldaplib.src.helpers.observable_set import ObservableSet
|
|
19
20
|
from oldaplib.src.helpers.oldaperror import OldapErrorAlreadyExists, OldapErrorValue, OldapErrorNoPermission, \
|
|
20
21
|
OldapErrorInconsistency
|
|
21
22
|
from oldaplib.src.helpers.query_processor import QueryProcessor
|
|
@@ -70,6 +71,8 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
70
71
|
cls._connection.upload_turtle(file)
|
|
71
72
|
sleep(1) # upload may take a while...
|
|
72
73
|
cls._project = Project.read(cls._connection, "test")
|
|
74
|
+
cls._sysproject = Project.read(cls._connection, "oldap")
|
|
75
|
+
|
|
73
76
|
|
|
74
77
|
@classmethod
|
|
75
78
|
def tearDownClass(cls):
|
|
@@ -90,6 +93,7 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
90
93
|
self.assertEqual(p.get(PropClassAttr.DATATYPE), XsdDatatypes.string)
|
|
91
94
|
self.assertEqual(p.get(PropClassAttr.NAME), LangString(["Test property@en", "Testprädikat@de"]))
|
|
92
95
|
self.assertEqual(p.get(PropClassAttr.DESCRIPTION), LangString("A property for testing...@en", "Property für Tests@de"))
|
|
96
|
+
self.assertEqual(p.get(PropClassAttr.TYPE), {OwlPropertyType.OwlDataProperty})
|
|
93
97
|
|
|
94
98
|
def test_star_propertyclass_constructor(self):
|
|
95
99
|
p = PropertyClass(con=self._connection,
|
|
@@ -104,6 +108,23 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
104
108
|
self.assertEqual(p.get(PropClassAttr.DATATYPE), XsdDatatypes.string)
|
|
105
109
|
self.assertEqual(p.get(PropClassAttr.NAME), LangString(["Test property@en", "Testprädikat@de"]))
|
|
106
110
|
self.assertEqual(p.get(PropClassAttr.DESCRIPTION), LangString("A property for testing...@en", "Property für Tests@de"))
|
|
111
|
+
self.assertEqual(p[PropClassAttr.TYPE], {OwlPropertyType.StatementProperty, OwlPropertyType.OwlDataProperty})
|
|
112
|
+
|
|
113
|
+
def test_propertyclass_constructor_owlprop(self):
|
|
114
|
+
p = PropertyClass(con=self._connection,
|
|
115
|
+
project=self._project,
|
|
116
|
+
property_class_iri=Xsd_QName('test:isParent'),
|
|
117
|
+
toClass=Iri('test:Human'),
|
|
118
|
+
name=LangString(["Parent"]),
|
|
119
|
+
description={"Parent of the human"})
|
|
120
|
+
i = PropertyClass(con=self._connection,
|
|
121
|
+
project=self._project,
|
|
122
|
+
property_class_iri=Xsd_QName('test:isChild'),
|
|
123
|
+
toClass=Iri('test:Human'),
|
|
124
|
+
inverseOf=Xsd_QName('test:isParent'),
|
|
125
|
+
name=LangString(["Child"]),
|
|
126
|
+
description={"Child of the human"})
|
|
127
|
+
self.assertEqual(i.inverseOf, Xsd_QName('test:isParent'))
|
|
107
128
|
|
|
108
129
|
def test_propertyclass_inset_datatypes(self):
|
|
109
130
|
p = PropertyClass(con=self._connection,
|
|
@@ -166,6 +187,7 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
166
187
|
project=self._project,
|
|
167
188
|
toClass=Xsd_QName('test:Person'))
|
|
168
189
|
self.assertEqual(p2.get(PropClassAttr.CLASS), Xsd_QName('test:Person'))
|
|
190
|
+
self.assertEqual(p2.get(PropClassAttr.TYPE), {OwlPropertyType.OwlObjectProperty})
|
|
169
191
|
|
|
170
192
|
def test_propertyclass_toclass_constructor_invalid_A(self):
|
|
171
193
|
with self.assertRaises(OldapErrorValue):
|
|
@@ -212,6 +234,24 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
212
234
|
self.assertEqual(p4a.get(PropClassAttr.LANGUAGE_IN), LanguageIn(Language.EN, Language.FR))
|
|
213
235
|
self.assertEqual(p4a.get(PropClassAttr.DATATYPE), XsdDatatypes.langString)
|
|
214
236
|
|
|
237
|
+
def test_propertyclass_owltype_constructor(self):
|
|
238
|
+
p4 = PropertyClass(con=self._connection,
|
|
239
|
+
project=self._project,
|
|
240
|
+
property_class_iri=Xsd_QName('test:testprop4c'),
|
|
241
|
+
type={OwlPropertyType.SymmetricProperty},
|
|
242
|
+
datatype=XsdDatatypes.string)
|
|
243
|
+
p4.create()
|
|
244
|
+
self.assertEqual(p4.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlDataProperty})
|
|
245
|
+
p4 = PropertyClass.read(con=self._connection,
|
|
246
|
+
project=self._project,
|
|
247
|
+
property_class_iri=Xsd_QName('test:testprop4c'),
|
|
248
|
+
ignore_cache=True)
|
|
249
|
+
self.assertEqual(p4.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlDataProperty})
|
|
250
|
+
|
|
251
|
+
p4.type.add(OwlPropertyType.TransitiveProperty)
|
|
252
|
+
p4.update()
|
|
253
|
+
self.assertEqual(p4.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.TransitiveProperty, OwlPropertyType.OwlDataProperty})
|
|
254
|
+
|
|
215
255
|
def test_propertyclass_inconsistent_constructor(self):
|
|
216
256
|
with self.assertRaises(OldapErrorValue):
|
|
217
257
|
p5 = PropertyClass(con=self._connection,
|
|
@@ -238,6 +278,12 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
238
278
|
self.assertEqual(p6.get(PropClassAttr.DATATYPE), XsdDatatypes.langString)
|
|
239
279
|
|
|
240
280
|
|
|
281
|
+
def test_propertyclass_read_projectshape(self):
|
|
282
|
+
p = PropertyClass.read(con=self._connection,
|
|
283
|
+
project=self._sysproject,
|
|
284
|
+
property_class_iri=Xsd_QName('oldap:namespaceIri'),
|
|
285
|
+
ignore_cache=True)
|
|
286
|
+
|
|
241
287
|
# @unittest.skip('Work in progress')
|
|
242
288
|
def test_propertyclass_read_shacl(self):
|
|
243
289
|
p1 = PropertyClass.read(con=self._connection,
|
|
@@ -255,8 +301,8 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
255
301
|
self.assertEqual(p1.description, LangString("This is a test property@de"))
|
|
256
302
|
self.assertIsNone(p1.get(PropClassAttr.SUBPROPERTY_OF))
|
|
257
303
|
self.assertIsNone(p1.subPropertyOf)
|
|
258
|
-
self.assertEqual(p1.get(PropClassAttr.TYPE), OwlPropertyType.OwlDataProperty)
|
|
259
|
-
self.assertEqual(p1.type, OwlPropertyType.OwlDataProperty)
|
|
304
|
+
self.assertEqual(p1.get(PropClassAttr.TYPE), {OwlPropertyType.OwlDataProperty})
|
|
305
|
+
self.assertEqual(p1.type, {OwlPropertyType.OwlDataProperty})
|
|
260
306
|
self.assertEqual(p1.creator, Iri('https://orcid.org/0000-0003-1681-4036'))
|
|
261
307
|
self.assertEqual(p1.created, Xsd_dateTime("2023-11-04T12:00:00Z"))
|
|
262
308
|
|
|
@@ -268,7 +314,7 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
268
314
|
self.assertEqual(p2[PropClassAttr.NAME], LangString("Test"))
|
|
269
315
|
self.assertEqual(p2[PropClassAttr.DESCRIPTION], LangString("Property shape for testing purposes"))
|
|
270
316
|
self.assertEqual(p2[PropClassAttr.DATATYPE], XsdDatatypes.string)
|
|
271
|
-
self.assertEqual(p2[PropClassAttr.TYPE], OwlPropertyType.OwlDataProperty)
|
|
317
|
+
self.assertEqual(p2[PropClassAttr.TYPE], {OwlPropertyType.OwlDataProperty})
|
|
272
318
|
|
|
273
319
|
p3 = PropertyClass.read(con=self._connection,
|
|
274
320
|
project=self._project,
|
|
@@ -342,14 +388,20 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
342
388
|
def test_propertyclass_create_D(self):
|
|
343
389
|
pX = PropertyClass(
|
|
344
390
|
con=self._connection,
|
|
345
|
-
#graph=Xsd_NCName('test'),
|
|
346
391
|
project=self._project,
|
|
347
|
-
property_class_iri=Xsd_QName('test:
|
|
392
|
+
property_class_iri=Xsd_QName('test:testWriteABC'),
|
|
393
|
+
datatype=XsdDatatypes.int
|
|
394
|
+
)
|
|
395
|
+
pX.create()
|
|
396
|
+
pX = PropertyClass(
|
|
397
|
+
con=self._connection,
|
|
398
|
+
project=self._project,
|
|
399
|
+
property_class_iri=Xsd_QName('test:testWriteABC'),
|
|
348
400
|
datatype=XsdDatatypes.int
|
|
349
401
|
)
|
|
350
402
|
with self.assertRaises(OldapErrorAlreadyExists) as ex:
|
|
351
403
|
pX.create()
|
|
352
|
-
self.assertEqual(str(ex.exception), 'Property "test:
|
|
404
|
+
self.assertEqual(str(ex.exception), 'Property "test:testWriteABC" already exists.')
|
|
353
405
|
|
|
354
406
|
def test_propertyclass_create_E(self):
|
|
355
407
|
p = PropertyClass(
|
|
@@ -367,6 +419,43 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
367
419
|
self.assertTrue(p.statementProperty)
|
|
368
420
|
self.assertEqual(p.get(PropClassAttr.DATATYPE), XsdDatatypes.string)
|
|
369
421
|
|
|
422
|
+
def test_propertyclass_create_F(self):
|
|
423
|
+
p4 = PropertyClass(con=self._connection,
|
|
424
|
+
project=self._project,
|
|
425
|
+
property_class_iri=Xsd_QName('test:testpropF'),
|
|
426
|
+
type={OwlPropertyType.SymmetricProperty},
|
|
427
|
+
datatype=XsdDatatypes.string)
|
|
428
|
+
p4.create()
|
|
429
|
+
p4 = PropertyClass.read(con=self._connection,
|
|
430
|
+
project=self._project,
|
|
431
|
+
property_class_iri=Xsd_QName('test:testpropF'),
|
|
432
|
+
ignore_cache=True)
|
|
433
|
+
self.assertEqual(p4.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlDataProperty})
|
|
434
|
+
|
|
435
|
+
def test_propertyclass_create_G(self):
|
|
436
|
+
p = PropertyClass(con=self._connection,
|
|
437
|
+
project=self._project,
|
|
438
|
+
property_class_iri=Xsd_QName('test:isParentG'),
|
|
439
|
+
toClass=Iri('test:Human'),
|
|
440
|
+
name=LangString(["Parent"]),
|
|
441
|
+
description={"Parent of the human"})
|
|
442
|
+
p.create()
|
|
443
|
+
i = PropertyClass(con=self._connection,
|
|
444
|
+
project=self._project,
|
|
445
|
+
property_class_iri=Xsd_QName('test:isChildG'),
|
|
446
|
+
toClass=Iri('test:Human'),
|
|
447
|
+
inverseOf=Xsd_QName('test:isParentG'),
|
|
448
|
+
name=LangString(["Child"]),
|
|
449
|
+
description={"Child of the human"})
|
|
450
|
+
self.assertEqual(i.inverseOf, Xsd_QName('test:isParentG'))
|
|
451
|
+
i.create()
|
|
452
|
+
i2 = PropertyClass.read(con=self._connection,
|
|
453
|
+
project=self._project,
|
|
454
|
+
property_class_iri=Xsd_QName('test:isChildG'),
|
|
455
|
+
ignore_cache=True)
|
|
456
|
+
self.assertEqual(i2.get(PropClassAttr.INVERSE_OF), Xsd_QName('test:isParentG'))
|
|
457
|
+
|
|
458
|
+
|
|
370
459
|
def test_propertyclass_create_nopermission(self):
|
|
371
460
|
p1 = PropertyClass(
|
|
372
461
|
con=self._unpriv,
|
|
@@ -763,6 +852,62 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
763
852
|
for r in res:
|
|
764
853
|
self.assertIn(r['comment'], [Xsd_string("description english@en"), Xsd_string("description français@fr")])
|
|
765
854
|
|
|
855
|
+
def test_propertyclass_update7(self):
|
|
856
|
+
p7 = PropertyClass(con=self._connection,
|
|
857
|
+
project=self._project,
|
|
858
|
+
property_class_iri=Xsd_QName('test:testprop7'),
|
|
859
|
+
type={OwlPropertyType.SymmetricProperty},
|
|
860
|
+
datatype=XsdDatatypes.string)
|
|
861
|
+
p7.create()
|
|
862
|
+
p7 = PropertyClass.read(con=self._connection,
|
|
863
|
+
project=self._project,
|
|
864
|
+
property_class_iri=Xsd_QName('test:testprop7'),
|
|
865
|
+
ignore_cache=True)
|
|
866
|
+
p7.type.add(OwlPropertyType.TransitiveProperty)
|
|
867
|
+
p7.update()
|
|
868
|
+
p7 = PropertyClass.read(con=self._connection,
|
|
869
|
+
project=self._project,
|
|
870
|
+
property_class_iri=Xsd_QName('test:testprop7'),
|
|
871
|
+
ignore_cache=True)
|
|
872
|
+
self.assertEqual(p7.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.TransitiveProperty, OwlPropertyType.OwlDataProperty})
|
|
873
|
+
|
|
874
|
+
def test_propertyclass_update8(self):
|
|
875
|
+
p8 = PropertyClass(con=self._connection,
|
|
876
|
+
project=self._project,
|
|
877
|
+
property_class_iri=Xsd_QName('test:testprop8'),
|
|
878
|
+
type={OwlPropertyType.SymmetricProperty, OwlPropertyType.TransitiveProperty},
|
|
879
|
+
datatype=XsdDatatypes.string)
|
|
880
|
+
p8.create()
|
|
881
|
+
p8 = PropertyClass.read(con=self._connection,
|
|
882
|
+
project=self._project,
|
|
883
|
+
property_class_iri=Xsd_QName('test:testprop8'),
|
|
884
|
+
ignore_cache=True)
|
|
885
|
+
p8.type.remove(OwlPropertyType.TransitiveProperty)
|
|
886
|
+
p8.update()
|
|
887
|
+
p8 = PropertyClass.read(con=self._connection,
|
|
888
|
+
project=self._project,
|
|
889
|
+
property_class_iri=Xsd_QName('test:testprop8'),
|
|
890
|
+
ignore_cache=True)
|
|
891
|
+
self.assertEqual(p8.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlDataProperty})
|
|
892
|
+
|
|
893
|
+
def test_propertyclass_update9(self):
|
|
894
|
+
i = PropertyClass(con=self._connection,
|
|
895
|
+
project=self._project,
|
|
896
|
+
property_class_iri=Xsd_QName('test:isChild9'),
|
|
897
|
+
toClass=Iri('test:Human'),
|
|
898
|
+
inverseOf=Xsd_QName('test:isParent9'),
|
|
899
|
+
name=LangString(["Child"]),
|
|
900
|
+
description={"Child of the human"})
|
|
901
|
+
self.assertEqual(i.inverseOf, Xsd_QName('test:isParent9'))
|
|
902
|
+
i.create()
|
|
903
|
+
i.inverseOf = Xsd_QName('test:anotherParent')
|
|
904
|
+
i.update()
|
|
905
|
+
i2 = PropertyClass.read(con=self._connection,
|
|
906
|
+
project=self._project,
|
|
907
|
+
property_class_iri=Xsd_QName('test:isChild9'),
|
|
908
|
+
ignore_cache=True)
|
|
909
|
+
self.assertEqual(i2.get(PropClassAttr.INVERSE_OF), Xsd_QName('test:anotherParent'))
|
|
910
|
+
|
|
766
911
|
# @unittest.skip('Work in progress')
|
|
767
912
|
def test_propertyclass_delete_attrs(self):
|
|
768
913
|
p1 = PropertyClass(
|
|
@@ -807,6 +952,23 @@ class TestPropertyClass(unittest.TestCase):
|
|
|
807
952
|
res = QueryProcessor(self._context, jsonres)
|
|
808
953
|
self.assertEqual(len(res), 0)
|
|
809
954
|
|
|
955
|
+
def test_propertyclass_delete_owlattr(self):
|
|
956
|
+
i = PropertyClass(con=self._connection,
|
|
957
|
+
project=self._project,
|
|
958
|
+
property_class_iri=Xsd_QName('test:isChildDel'),
|
|
959
|
+
toClass=Iri('test:Human'),
|
|
960
|
+
inverseOf=Xsd_QName('test:isParentDel'),
|
|
961
|
+
name=LangString(["Child"]),
|
|
962
|
+
description={"Child of the human"})
|
|
963
|
+
i.create()
|
|
964
|
+
i.inverseOf = None
|
|
965
|
+
i.update()
|
|
966
|
+
i2 = PropertyClass.read(con=self._connection,
|
|
967
|
+
project=self._project,
|
|
968
|
+
property_class_iri=Xsd_QName('test:isChildDel'),
|
|
969
|
+
ignore_cache=True)
|
|
970
|
+
self.assertIsNone(i2.get(PropClassAttr.INVERSE_OF))
|
|
971
|
+
|
|
810
972
|
# @unittest.skip('Work in progress')
|
|
811
973
|
def test_propertyclass_delete(self):
|
|
812
974
|
p1 = PropertyClass(
|
|
@@ -212,7 +212,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
212
212
|
self.assertEqual(r1[Xsd_QName("test:testprop")].order, Xsd_decimal(3))
|
|
213
213
|
self.assertEqual(prop3.internal, Xsd_QName('test:TestResource'))
|
|
214
214
|
self.assertEqual(prop3.property_class_iri, Xsd_QName("test:testprop"))
|
|
215
|
-
self.assertEqual(prop3.type, OwlPropertyType.OwlDataProperty)
|
|
215
|
+
self.assertEqual(prop3.type, {OwlPropertyType.OwlDataProperty})
|
|
216
216
|
self.assertEqual(prop3.datatype, XsdDatatypes.langString)
|
|
217
217
|
self.assertEqual(prop3.name, LangString(["Test property@en", "Testprädikat@de"]))
|
|
218
218
|
self.assertEqual(prop3.subPropertyOf, Xsd_QName("test:comment"))
|
|
@@ -657,7 +657,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
657
657
|
self.assertEqual(prop1.created, Xsd_dateTime('2023-11-04T12:00:00Z'))
|
|
658
658
|
self.assertEqual(prop1.contributor, Iri('https://orcid.org/0000-0003-1681-4036'))
|
|
659
659
|
self.assertEqual(prop1.modified, Xsd_dateTime('2023-11-04T12:00:00Z'))
|
|
660
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlDataProperty)
|
|
660
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlDataProperty})
|
|
661
661
|
self.assertEqual(prop1.datatype, XsdDatatypes.string)
|
|
662
662
|
self.assertEqual(prop1.description, LangString("Property shape for testing purposes"))
|
|
663
663
|
self.assertEqual(r1[Xsd_QName('test:test')].minCount, Xsd_integer(1))
|
|
@@ -671,7 +671,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
671
671
|
self.assertEqual(prop2.created, Xsd_dateTime('2023-11-04T12:00:00Z'))
|
|
672
672
|
self.assertEqual(prop2.contributor, Iri('https://orcid.org/0000-0003-1681-4036'))
|
|
673
673
|
self.assertEqual(prop2.modified, Xsd_dateTime('2023-11-04T12:00:00Z'))
|
|
674
|
-
self.assertEqual(prop2.type, OwlPropertyType.OwlDataProperty)
|
|
674
|
+
self.assertEqual(prop2.type, {OwlPropertyType.OwlDataProperty})
|
|
675
675
|
self.assertEqual(prop2.datatype, XsdDatatypes.langString)
|
|
676
676
|
self.assertEqual(prop2.name, LangString(["A text@en", "Ein Text@de"]))
|
|
677
677
|
self.assertEqual(prop2.description, LangString("A longer text..."))
|
|
@@ -680,7 +680,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
680
680
|
self.assertEqual(r1[Xsd_QName('test:hasText')].order, Xsd_decimal(1))
|
|
681
681
|
|
|
682
682
|
prop3 = r1[Xsd_QName('test:hasEnum')].prop
|
|
683
|
-
self.assertEqual(prop3.type, OwlPropertyType.OwlDataProperty)
|
|
683
|
+
self.assertEqual(prop3.type, {OwlPropertyType.OwlDataProperty})
|
|
684
684
|
self.assertEqual(prop3.datatype, XsdDatatypes.string)
|
|
685
685
|
self.assertEqual(prop3.inSet,
|
|
686
686
|
RdfSet(Xsd_string('red'), Xsd_string('green'), Xsd_string('blue'), Xsd_string('yellow')))
|
|
@@ -826,7 +826,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
826
826
|
self.assertEqual(prop1.name, LangString(["comment@en", "Kommentar@de"]))
|
|
827
827
|
self.assertEqual(prop1.description, LangString("This is a test property@de"))
|
|
828
828
|
self.assertIsNone(prop1.subPropertyOf)
|
|
829
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlDataProperty)
|
|
829
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlDataProperty})
|
|
830
830
|
self.assertEqual(prop1.creator, Iri('https://orcid.org/0000-0003-1681-4036'))
|
|
831
831
|
self.assertEqual(prop1.created, Xsd_dateTime("2023-11-04T12:00:00Z"))
|
|
832
832
|
self.assertEqual(r2[Xsd_QName("test:comment")].order, Xsd_decimal(1))
|
|
@@ -838,7 +838,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
838
838
|
self.assertEqual(prop2.name, LangString("Test"))
|
|
839
839
|
self.assertEqual(prop2.description, LangString("Property shape for testing purposes"))
|
|
840
840
|
self.assertEqual(prop2.datatype, XsdDatatypes.string)
|
|
841
|
-
self.assertEqual(prop2.type, OwlPropertyType.OwlDataProperty)
|
|
841
|
+
self.assertEqual(prop2.type, {OwlPropertyType.OwlDataProperty})
|
|
842
842
|
self.assertEqual(r2[Xsd_QName("test:test")].order, Xsd_decimal(2))
|
|
843
843
|
|
|
844
844
|
prop3 = r2[Xsd_QName("test:testone")].prop
|
|
@@ -1159,7 +1159,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
1159
1159
|
self.assertEqual(prop1.description, LangString("Property shape for testing purposes"))
|
|
1160
1160
|
self.assertEqual(prop1.datatype, XsdDatatypes.string)
|
|
1161
1161
|
self.assertEqual(r2[Xsd_QName('test:test')].order, Xsd_decimal(3))
|
|
1162
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlDataProperty)
|
|
1162
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlDataProperty})
|
|
1163
1163
|
|
|
1164
1164
|
def test_updating_add_int_prop(self):
|
|
1165
1165
|
r1 = ResourceClass.read(con=self._connection,
|
|
@@ -1185,7 +1185,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
1185
1185
|
self.assertEqual(prop1.internal, Xsd_QName("test:testMyResMinimalB"))
|
|
1186
1186
|
self.assertEqual(prop1.toClass, Xsd_QName('test:Person'))
|
|
1187
1187
|
self.assertEqual(r2[Xsd_QName('dcterms:contributor')].maxCount, Xsd_integer(1))
|
|
1188
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlObjectProperty)
|
|
1188
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlObjectProperty})
|
|
1189
1189
|
|
|
1190
1190
|
# @unittest.skip('Work in progress')
|
|
1191
1191
|
def test_updating_add(self):
|
|
@@ -1234,7 +1234,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
1234
1234
|
self.assertEqual(prop1.name, LangString("Test"))
|
|
1235
1235
|
self.assertEqual(prop1.description, LangString("Property shape for testing purposes"))
|
|
1236
1236
|
self.assertEqual(prop1.datatype, XsdDatatypes.string)
|
|
1237
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlDataProperty)
|
|
1237
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlDataProperty})
|
|
1238
1238
|
self.assertEqual(r2[Xsd_QName('test:test')].minCount, Xsd_integer(1))
|
|
1239
1239
|
self.assertEqual(r2[Xsd_QName('test:test')].order, Xsd_decimal(3))
|
|
1240
1240
|
|
|
@@ -1242,7 +1242,7 @@ class TestResourceClass(unittest.TestCase):
|
|
|
1242
1242
|
self.assertEqual(prop2.internal, Xsd_QName("test:testMyResMinimalC"))
|
|
1243
1243
|
self.assertEqual(prop2.toClass, Xsd_QName('test:Person'))
|
|
1244
1244
|
self.assertEqual(r2[Xsd_QName('dcterms:creator')].maxCount, Xsd_integer(1))
|
|
1245
|
-
self.assertEqual(prop1.type, OwlPropertyType.OwlDataProperty)
|
|
1245
|
+
self.assertEqual(prop1.type, {OwlPropertyType.OwlDataProperty})
|
|
1246
1246
|
|
|
1247
1247
|
prop3 = r2[Xsd_QName('test:color')].prop
|
|
1248
1248
|
self.assertEqual(prop3.internal, Xsd_QName("test:testMyResMinimalC"))
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
3
3
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
4
4
|
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
5
|
-
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
|
6
|
-
@prefix dc:<http://purl.org/dc/elements/1.1/> .
|
|
7
5
|
@prefix dcterms: <http://purl.org/dc/terms/> .
|
|
8
6
|
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
9
7
|
@prefix oldap: <http://oldap.org/base#> .
|
|
8
|
+
@prefix schema: <http://schema.org/> .
|
|
10
9
|
@prefix test: <http://oldap.org/test#> .
|
|
11
10
|
@prefix : <http://oldap.org/test#> .
|
|
12
11
|
|
|
@@ -18,7 +17,7 @@ oldap:admin {
|
|
|
18
17
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
19
18
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
20
19
|
oldap:projectShortName "test"^^xsd:NCName ;
|
|
21
|
-
oldap:namespaceIri
|
|
20
|
+
oldap:namespaceIri <http://oldap.org/test#> ;
|
|
22
21
|
rdfs:label "Test"@en, "Test"@de, "Test"@fr, "Test"@it ;
|
|
23
22
|
rdfs:comment "For testing purposes"@en ;
|
|
24
23
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -29,7 +28,7 @@ oldap:admin {
|
|
|
29
28
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
30
29
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
31
30
|
oldap:projectShortName "dmtest"^^xsd:NCName ;
|
|
32
|
-
oldap:namespaceIri
|
|
31
|
+
oldap:namespaceIri <http://oldap.org/dmtest#> ;
|
|
33
32
|
rdfs:label "DmTest"@en, "DmTest"@de, "DmTest"@fr, "DmTest"@it ;
|
|
34
33
|
rdfs:comment "For data model testing purposes"@en ;
|
|
35
34
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -40,7 +39,7 @@ oldap:admin {
|
|
|
40
39
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
41
40
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
42
41
|
oldap:projectShortName "dmtestA"^^xsd:NCName ;
|
|
43
|
-
oldap:namespaceIri
|
|
42
|
+
oldap:namespaceIri <http://oldap.org/dmtestA#> ;
|
|
44
43
|
rdfs:label "DmTestA"@en, "DmTestA"@de, "DmTestA"@fr, "DmTestA"@it ;
|
|
45
44
|
rdfs:comment "For data model testing purposes"@en ;
|
|
46
45
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -51,7 +50,7 @@ oldap:admin {
|
|
|
51
50
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
52
51
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
53
52
|
oldap:projectShortName "dmtestB"^^xsd:NCName ;
|
|
54
|
-
oldap:namespaceIri
|
|
53
|
+
oldap:namespaceIri <http://oldap.org/dmtestB#> ;
|
|
55
54
|
rdfs:label "DmTestB"@en, "DmTestB"@de, "DmTestB"@fr, "DmTestB"@it ;
|
|
56
55
|
rdfs:comment "For data model testing purposes"@en ;
|
|
57
56
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -62,7 +61,7 @@ oldap:admin {
|
|
|
62
61
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
63
62
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
64
63
|
oldap:projectShortName "dmtestC"^^xsd:NCName ;
|
|
65
|
-
oldap:namespaceIri
|
|
64
|
+
oldap:namespaceIri <http://oldap.org/dmtestC#> ;
|
|
66
65
|
rdfs:label "DmTestC"@en, "DmTestC"@de, "DmTestC"@fr, "DmTestC"@it ;
|
|
67
66
|
rdfs:comment "For data model testing purposes"@en ;
|
|
68
67
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -73,7 +72,7 @@ oldap:admin {
|
|
|
73
72
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
74
73
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
75
74
|
oldap:projectShortName "dmtestE"^^xsd:NCName ;
|
|
76
|
-
oldap:namespaceIri
|
|
75
|
+
oldap:namespaceIri <http://oldap.org/dmtestE#> ;
|
|
77
76
|
rdfs:label "DmTestE"@en, "DmTestE"@de, "DmTestE"@fr, "DmTestE"@it ;
|
|
78
77
|
rdfs:comment "For data model testing purposes"@en ;
|
|
79
78
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -84,7 +83,7 @@ oldap:admin {
|
|
|
84
83
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
85
84
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
86
85
|
oldap:projectShortName "dmtestF"^^xsd:NCName ;
|
|
87
|
-
oldap:namespaceIri
|
|
86
|
+
oldap:namespaceIri <http://oldap.org/dmtestF#> ;
|
|
88
87
|
rdfs:label "DmTestF"@en, "DmTestF"@de, "DmTestF"@fr, "DmTestF"@it ;
|
|
89
88
|
rdfs:comment "For data model testing purposes"@en ;
|
|
90
89
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -95,7 +94,7 @@ oldap:admin {
|
|
|
95
94
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
96
95
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
97
96
|
oldap:projectShortName "dmtestG"^^xsd:NCName ;
|
|
98
|
-
oldap:namespaceIri
|
|
97
|
+
oldap:namespaceIri <http://oldap.org/dmtestG#> ;
|
|
99
98
|
rdfs:label "DmTestG"@en, "DmTestG"@de, "DmTestG"@fr, "DmTestG"@it ;
|
|
100
99
|
rdfs:comment "For data model testing purposes"@en ;
|
|
101
100
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -106,7 +105,7 @@ oldap:admin {
|
|
|
106
105
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
107
106
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
108
107
|
oldap:projectShortName "dmtestH"^^xsd:NCName ;
|
|
109
|
-
oldap:namespaceIri
|
|
108
|
+
oldap:namespaceIri <http://oldap.org/dmtestH#> ;
|
|
110
109
|
rdfs:label "DmTestH"@en, "DmTestH"@de, "DmTestH"@fr, "DmTestH"@it ;
|
|
111
110
|
rdfs:comment "For data model testing purposes"@en ;
|
|
112
111
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -117,7 +116,7 @@ oldap:admin {
|
|
|
117
116
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
118
117
|
dcterms:modified "2023-11-04T12:00:00Z"^^xsd:dateTime ;
|
|
119
118
|
oldap:projectShortName "dmtestI"^^xsd:NCName ;
|
|
120
|
-
oldap:namespaceIri
|
|
119
|
+
oldap:namespaceIri <http://oldap.org/dmtestI#> ;
|
|
121
120
|
rdfs:label "DmTestI"@en, "DmTestI"@de, "DmTestI"@fr, "DmTestI"@it ;
|
|
122
121
|
rdfs:comment "For data model testing purposes"@en ;
|
|
123
122
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -129,6 +128,24 @@ oldap:admin {
|
|
|
129
128
|
|
|
130
129
|
:shapes schema:version "0.1.0"^^xsd:string .
|
|
131
130
|
|
|
131
|
+
:crm a oldap:ExternalOntology ;
|
|
132
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
133
|
+
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
134
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
135
|
+
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
136
|
+
oldap:prefix "crm"^^xsd:NCName ;
|
|
137
|
+
oldap:namespaceIri <http://www.cidoc-crm.org/cidoc-crm/> ;
|
|
138
|
+
rdfs:label "CIDOC-CRM"@en, "CIDOC-CRM"@de, "CIDOC-CRM"@fr .
|
|
139
|
+
|
|
140
|
+
:edm a oldap:ExternalOntology ;
|
|
141
|
+
dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
|
|
142
|
+
dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
143
|
+
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
144
|
+
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
145
|
+
oldap:prefix "edm"^^xsd:NCName ;
|
|
146
|
+
oldap:namespaceIri <http://www.europeana.eu/schemas/edm/> ;
|
|
147
|
+
rdfs:label "Europeana Ontology"@en, "Europeana Ontologie"@de, "Ontologie d l'Europeana"@fr .
|
|
148
|
+
|
|
132
149
|
:commentShape a sh:PropertyShape ;
|
|
133
150
|
sh:path :comment ;
|
|
134
151
|
sh:name "comment"@en, "Kommentar"@de ;
|
|
@@ -19,7 +19,7 @@ oldap:admin {
|
|
|
19
19
|
dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
|
|
20
20
|
dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
|
|
21
21
|
oldap:projectShortName "test"^^xsd:NCName ;
|
|
22
|
-
oldap:namespaceIri
|
|
22
|
+
oldap:namespaceIri <http://oldap.org/test#> ;
|
|
23
23
|
rdfs:label "Test"@en, "Test"@de, "Test"@fr, "Test"@it ;
|
|
24
24
|
rdfs:comment "For testing purposes"@en ;
|
|
25
25
|
oldap:projectStart "2024-01-01"^^xsd:date .
|
|
@@ -27,6 +27,7 @@ oldap:admin {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
test:shacl {
|
|
30
|
+
|
|
30
31
|
test:shapes schema:version "0.1.0"^^xsd:string .
|
|
31
32
|
|
|
32
33
|
test:PersonShape a sh:NodeShape ;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: oldaplib
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
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
|
|
@@ -9,6 +9,7 @@ Requires-Python: >=3.12,<4.0
|
|
|
9
9
|
Classifier: License :: Other/Proprietary License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
13
|
Requires-Dist: bcrypt (==5.0.0)
|
|
13
14
|
Requires-Dist: bump2version (>=1.0.1,<2.0.0)
|
|
14
15
|
Requires-Dist: cloudpickle (>=3.1.1,<4.0.0)
|