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.
Files changed (42) hide show
  1. oldaplib/ontologies/admin-testing.trig +2 -4
  2. oldaplib/ontologies/admin.trig +2 -4
  3. oldaplib/ontologies/oldap.trig +221 -131
  4. oldaplib/ontologies/shared.trig +0 -3
  5. oldaplib/src/datamodel.py +109 -17
  6. oldaplib/src/dtypes/namespaceiri.py +16 -1
  7. oldaplib/src/enums/attributeclass.py +31 -6
  8. oldaplib/src/enums/externalontologyattr.py +22 -0
  9. oldaplib/src/enums/owlpropertytype.py +10 -0
  10. oldaplib/src/enums/projectattr.py +0 -1
  11. oldaplib/src/enums/propertyclassattr.py +24 -19
  12. oldaplib/src/externalontology.py +554 -0
  13. oldaplib/src/hasproperty.py +5 -0
  14. oldaplib/src/helpers/context.py +4 -4
  15. oldaplib/src/helpers/langstring.py +11 -2
  16. oldaplib/src/helpers/observable_dict.py +4 -1
  17. oldaplib/src/helpers/observable_set.py +135 -80
  18. oldaplib/src/helpers/query_processor.py +3 -0
  19. oldaplib/src/model.py +1 -1
  20. oldaplib/src/oldaplist.py +2 -2
  21. oldaplib/src/oldaplistnode.py +2 -2
  22. oldaplib/src/permissionset.py +3 -3
  23. oldaplib/src/project.py +47 -113
  24. oldaplib/src/propertyclass.py +98 -36
  25. oldaplib/src/resourceclass.py +7 -5
  26. oldaplib/src/version.py +1 -1
  27. oldaplib/src/xsd/iri.py +3 -0
  28. oldaplib/src/xsd/xsd_anyuri.py +5 -5
  29. oldaplib/src/xsd/xsd_qname.py +6 -3
  30. oldaplib/test/test_context.py +0 -4
  31. oldaplib/test/test_datamodel.py +50 -1
  32. oldaplib/test/test_dtypes.py +3 -2
  33. oldaplib/test/test_externalontologies.py +175 -0
  34. oldaplib/test/test_project.py +31 -76
  35. oldaplib/test/test_propertyclass.py +168 -6
  36. oldaplib/test/test_resourceclass.py +10 -10
  37. oldaplib/testdata/connection_test.trig +29 -12
  38. oldaplib/testdata/datamodel_test.trig +1 -1
  39. oldaplib/testdata/objectfactory_test.trig +2 -1
  40. {oldaplib-0.3.3.dist-info → oldaplib-0.3.5.dist-info}/METADATA +3 -2
  41. {oldaplib-0.3.3.dist-info → oldaplib-0.3.5.dist-info}/RECORD +42 -39
  42. {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:testWrite'),
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:testWrite" already exists.')
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 "http://oldap.org/test#"^^xsd:anyURI ;
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 "http://oldap.org/dmtest#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestA#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestB#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestC#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestE#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestF#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestG#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestH#"^^xsd:anyURI ;
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 "http://oldap.org/dmtestI#"^^xsd:anyURI ;
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 ;
@@ -20,7 +20,7 @@
20
20
  :onto {
21
21
 
22
22
  :ontology rdf:type owl:Ontology ;
23
- owl:versionInfo "0.1.0"^^xsd:string ;
23
+ owl:versionInfo "1.0.0"^^xsd:string ;
24
24
  owl:versionIRI <http://oldap.org/ontology/version/1.0.0> ;
25
25
 
26
26
  }
@@ -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 "http://oldap.org/test#"^^xsd:anyURI ;
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
1
+ Metadata-Version: 2.3
2
2
  Name: oldaplib
3
- Version: 0.3.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)