oldaplib 0.3.5__tar.gz → 0.3.7__tar.gz

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 (163) hide show
  1. {oldaplib-0.3.5 → oldaplib-0.3.7}/PKG-INFO +1 -1
  2. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/externalontologyattr.py +1 -1
  3. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/objectfactory.py +44 -11
  4. oldaplib-0.3.7/oldaplib/src/version.py +1 -0
  5. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_datamodel.py +4 -4
  6. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_objectfactory.py +26 -0
  7. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/objectfactory_test.trig +80 -0
  8. {oldaplib-0.3.5 → oldaplib-0.3.7}/pyproject.toml +1 -1
  9. oldaplib-0.3.5/oldaplib/src/version.py +0 -1
  10. {oldaplib-0.3.5 → oldaplib-0.3.7}/README.md +0 -0
  11. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/__init__.py +0 -0
  12. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/apps/load_list.py +0 -0
  13. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/admin-testing.trig +0 -0
  14. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/admin.trig +0 -0
  15. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/example.trig +0 -0
  16. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/oldap.trig +0 -0
  17. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/oldap.ttl +0 -0
  18. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/shared.trig +0 -0
  19. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/ontologies/standard/.gitsave +0 -0
  20. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/__init__.py +0 -0
  21. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/cachesingleton.py +0 -0
  22. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/connection.py +0 -0
  23. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/datamodel.py +0 -0
  24. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/__init__.py +0 -0
  25. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/bnode.py +0 -0
  26. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/languagein.py +0 -0
  27. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/namespaceiri.py +0 -0
  28. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/rdfset.py +0 -0
  29. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/dtypes/xsdset.py +0 -0
  30. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/__init__.py +0 -0
  31. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/action.py +0 -0
  32. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/adminpermissions.py +0 -0
  33. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/attributeclass.py +0 -0
  34. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/datapermissions.py +0 -0
  35. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/haspropertyattr.py +0 -0
  36. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/language.py +0 -0
  37. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/oldaplistattr.py +0 -0
  38. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/oldaplistnodeattr.py +0 -0
  39. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/owlpropertytype.py +0 -0
  40. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/permissionsetattr.py +0 -0
  41. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/projectattr.py +0 -0
  42. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/propertyclassattr.py +0 -0
  43. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/resourceclassattr.py +0 -0
  44. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/sparql_result_format.py +0 -0
  45. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/userattr.py +0 -0
  46. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/enums/xsd_datatypes.py +0 -0
  47. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/externalontology.py +0 -0
  48. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/globalconfig.py +0 -0
  49. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/hasproperty.py +0 -0
  50. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/Notify.py +0 -0
  51. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/__init__.py +0 -0
  52. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/attributechange.py +0 -0
  53. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/context.py +0 -0
  54. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/convert2datatype.py +0 -0
  55. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/irincname.py +0 -0
  56. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/json_encoder.py +0 -0
  57. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/langstring.py +0 -0
  58. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/numeric.py +0 -0
  59. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/observable_dict.py +0 -0
  60. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/observable_set.py +0 -0
  61. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/oldaperror.py +0 -0
  62. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/query_processor.py +0 -0
  63. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/semantic_version.py +0 -0
  64. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/serializeableset.py +0 -0
  65. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/serializer.py +0 -0
  66. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/singletonmeta.py +0 -0
  67. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/helpers/tools.py +0 -0
  68. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/iconnection.py +0 -0
  69. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/in_project.py +0 -0
  70. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/model.py +0 -0
  71. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/oldaplist.py +0 -0
  72. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/oldaplist_helpers.py +0 -0
  73. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/oldaplistnode.py +0 -0
  74. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/oldaplogging.py +0 -0
  75. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/permissionset.py +0 -0
  76. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/project.py +0 -0
  77. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/propertyclass.py +0 -0
  78. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/resourceclass.py +0 -0
  79. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/user.py +0 -0
  80. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/userdataclass.py +0 -0
  81. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/__init__.py +0 -0
  82. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/floatingpoint.py +0 -0
  83. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/iri.py +0 -0
  84. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd.py +0 -0
  85. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_anyuri.py +0 -0
  86. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_base64binary.py +0 -0
  87. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_boolean.py +0 -0
  88. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_byte.py +0 -0
  89. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_date.py +0 -0
  90. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_datetime.py +0 -0
  91. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_datetimestamp.py +0 -0
  92. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_decimal.py +0 -0
  93. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_double.py +0 -0
  94. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_duration.py +0 -0
  95. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_float.py +0 -0
  96. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_gday.py +0 -0
  97. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_gmonth.py +0 -0
  98. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_gmonthday.py +0 -0
  99. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_gyear.py +0 -0
  100. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_gyearmonth.py +0 -0
  101. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_hexbinary.py +0 -0
  102. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_id.py +0 -0
  103. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_idref.py +0 -0
  104. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_int.py +0 -0
  105. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_integer.py +0 -0
  106. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_language.py +0 -0
  107. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_long.py +0 -0
  108. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_name.py +0 -0
  109. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_ncname.py +0 -0
  110. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_negativeinteger.py +0 -0
  111. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_nmtoken.py +0 -0
  112. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_nonnegativeinteger.py +0 -0
  113. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_nonpositiveinteger.py +0 -0
  114. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_normalizedstring.py +0 -0
  115. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_positiveinteger.py +0 -0
  116. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_qname.py +0 -0
  117. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_short.py +0 -0
  118. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_string.py +0 -0
  119. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_time.py +0 -0
  120. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_token.py +0 -0
  121. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_unsignedbyte.py +0 -0
  122. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_unsignedint.py +0 -0
  123. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_unsignedlong.py +0 -0
  124. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/src/xsd/xsd_unsignedshort.py +0 -0
  125. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/__init__.py +0 -0
  126. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_cache.py +0 -0
  127. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_connection.py +0 -0
  128. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_context.py +0 -0
  129. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_dtypes.py +0 -0
  130. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_externalontologies.py +0 -0
  131. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_hasproperty.py +0 -0
  132. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_in_project.py +0 -0
  133. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_langstring.py +0 -0
  134. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_language_in.py +0 -0
  135. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_observable_dict.py +0 -0
  136. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_observable_set.py +0 -0
  137. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_oldaplist.py +0 -0
  138. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_oldaplist_helpers.py +0 -0
  139. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_oldaplistnode.py +0 -0
  140. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_permissionset.py +0 -0
  141. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_project.py +0 -0
  142. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_propertyclass.py +0 -0
  143. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_resourceclass.py +0 -0
  144. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_semantic_version.py +0 -0
  145. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_user.py +0 -0
  146. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/test/test_xsd_datatypes.py +0 -0
  147. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/Gender.yaml +0 -0
  148. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/collections_type.yaml +0 -0
  149. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/connection_test.trig +0 -0
  150. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/datamodel_test.trig +0 -0
  151. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/event_type.yaml +0 -0
  152. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/hlist_schema.yaml +0 -0
  153. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/institution_or_building_type.yaml +0 -0
  154. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/language.yaml +0 -0
  155. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/location_type.yaml +0 -0
  156. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/means_of_transportation.yaml +0 -0
  157. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/playground_list.yaml +0 -0
  158. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/role.yaml +0 -0
  159. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/source_type-1.yaml +0 -0
  160. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/source_type.yaml +0 -0
  161. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/test_move_left_of_toL.yaml +0 -0
  162. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testdata/testlist.yaml +0 -0
  163. {oldaplib-0.3.5 → oldaplib-0.3.7}/oldaplib/testit.http +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: oldaplib
3
- Version: 0.3.5
3
+ Version: 0.3.7
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
@@ -15,7 +15,7 @@ class ExternalOntologyAttr(AttributeClass):
15
15
  (QName, mandatory, immutable, datatype)
16
16
  """
17
17
  # order: (QName, mandatory, immutable, datatype)
18
- PREFIX = ('oldap:prefix', True, False, Xsd_NCName)
18
+ PREFIX = ('oldap:prefix', True, True, Xsd_NCName)
19
19
  NAMESPACE_IRI = ('oldap:namespaceIri', True, True, NamespaceIRI)
20
20
  LABEL = ('rdfs:label', False, False, LangString)
21
21
  COMMENT = ('rdfs:comment', False, False, LangString)
@@ -144,7 +144,9 @@ class ResourceInstance:
144
144
  self.validate_value(self._values[prop_iri], hasprop.prop)
145
145
 
146
146
  def process_superclasses(superclass: dict[Xsd_QName, ResourceClass]):
147
- for sc_iri, sc in superclass.items():
147
+ for sc_iri, sc in superclass.items():
148
+ if not sc:
149
+ continue
148
150
  if sc.superclass:
149
151
  process_superclasses(sc.superclass)
150
152
  if sc.owl_class_iri == Xsd_QName("oldap:Thing", validate=False):
@@ -506,11 +508,6 @@ class ResourceInstance:
506
508
  sparql = context.sparql_context
507
509
  sparql += f'''
508
510
  SELECT ?predicate ?value
509
- FROM oldap:onto
510
- FROM shared:onto
511
- FROM {graph}:onto
512
- FROM NAMED oldap:admin
513
- FROM NAMED {graph}:data
514
511
  WHERE {{
515
512
  BIND({iri.toRdf} as ?iri)
516
513
  GRAPH {graph}:data {{
@@ -789,6 +786,47 @@ class ResourceInstanceFactory:
789
786
  'properties': resclass.properties,
790
787
  'superclass': resclass.superclass})
791
788
 
789
+ @staticmethod
790
+ def read_data(con: IConnection, projectShortName: Xsd_NCName | str, iri: Iri | str) -> dict[Xsd_QName, Any]:
791
+ if not isinstance(iri, Iri):
792
+ iri = Iri(iri, validate=True)
793
+ if not isinstance(projectShortName, Xsd_NCName):
794
+ graph = Xsd_NCName(projectShortName)
795
+ else:
796
+ graph = projectShortName
797
+
798
+ context = Context(name=con.context_name)
799
+ sparql = context.sparql_context
800
+ sparql += f'''
801
+ SELECT ?predicate ?value
802
+ WHERE {{
803
+ GRAPH {graph}:data {{
804
+ {iri.toRdf} ?predicate ?value .
805
+ {iri.toRdf} oldap:grantsPermission ?permset .
806
+ }}
807
+ GRAPH oldap:admin {{
808
+ {con.userIri.toRdf} oldap:hasPermissions ?permset .
809
+ ?permset oldap:givesPermission ?DataPermission .
810
+ ?DataPermission oldap:permissionValue ?permval .
811
+ }}
812
+ FILTER(?permval >= {DataPermission.DATA_VIEW.numeric.toRdf})
813
+ }}
814
+ '''
815
+ jsonres = con.query(sparql)
816
+ res = QueryProcessor(context, jsonres)
817
+ data = {}
818
+ for r in res:
819
+ if r['predicate'].is_qname:
820
+ if not data.get(r['predicate'].as_qname):
821
+ data[r['predicate'].as_qname] = []
822
+ data[str(r['predicate'].as_qname)].append(str(r['value']))
823
+ else:
824
+ raise OldapErrorInconsistency(f"Expected QName as predicate, got {r['predicate']}")
825
+ if not data.get('rdf:type'):
826
+ raise OldapErrorNotFound(f'Resource with iri <{iri}> not found.')
827
+ return data
828
+
829
+
792
830
  def read(self, iri: Iri | str) -> ResourceInstance:
793
831
  if not isinstance(iri, Iri):
794
832
  iri = Iri(iri, validate=True)
@@ -797,11 +835,6 @@ class ResourceInstanceFactory:
797
835
  sparql = context.sparql_context
798
836
  sparql += f'''
799
837
  SELECT ?predicate ?value
800
- FROM oldap:onto
801
- FROM shared:onto
802
- FROM {graph}:onto
803
- FROM NAMED oldap:admin
804
- FROM NAMED {graph}:data
805
838
  WHERE {{
806
839
  BIND({iri.toRdf} as ?iri)
807
840
  GRAPH {graph}:data {{
@@ -0,0 +1 @@
1
+ __version__ = "0.3.7"
@@ -622,10 +622,10 @@ class TestDataModel(unittest.TestCase):
622
622
  def test_datamodel_extonto_add(self):
623
623
  model = DataModel.read(self._connection, self._project, ignore_cache=True)
624
624
  eo = ExternalOntology(con=self._connection,
625
- projectShortName=self._project.projectShortName,
626
- prefix='testonto',
627
- namespaceIri='http://www.example.org/ns/testonto#',
628
- label=LangString("Test ontology@en", "Test ontology@de"))
625
+ projectShortName=self._project.projectShortName,
626
+ prefix='testonto',
627
+ namespaceIri='http://www.example.org/ns/testonto#',
628
+ label=LangString("Test ontology@en", "Test ontology@de"))
629
629
  model[Xsd_QName('test:testonto')] = eo
630
630
  model.update()
631
631
  model = DataModel.read(self._connection, self._project, ignore_cache=True)
@@ -6,6 +6,8 @@ from pathlib import Path
6
6
  from pprint import pprint
7
7
  from time import sleep
8
8
 
9
+ from oldaplib.src.cachesingleton import CacheSingletonRedis
10
+ from oldaplib.src.datamodel import DataModel
9
11
  from oldaplib.src.objectfactory import ResourceInstanceFactory
10
12
  from oldaplib.src.connection import Connection
11
13
  from oldaplib.src.enums.action import Action
@@ -129,6 +131,8 @@ class TestObjectFactory(unittest.TestCase):
129
131
  isActive=True)
130
132
  user.create()
131
133
  cls._tuser = User.read(cls._connection, "factorytestuser")
134
+ cache = CacheSingletonRedis()
135
+ cache.clear()
132
136
 
133
137
 
134
138
  @classmethod
@@ -337,7 +341,28 @@ class TestObjectFactory(unittest.TestCase):
337
341
  grantsPermission=Iri('oldap:GenericView'))
338
342
  b.create()
339
343
 
344
+ def test_constructor_D(self):
345
+ dm = DataModel.read(con=self._connection, project='test')
346
+ factory = ResourceInstanceFactory(con=self._connection, project='test')
347
+ Cat = factory.createObjectInstance('Cat')
348
+
349
+ mycat = Cat(name="Fluffy", subName="Fluffy the Cat")
350
+ mycat.create()
351
+
340
352
  def test_read_A(self):
353
+ factory = ResourceInstanceFactory(con=self._connection, project='test')
354
+ Book = factory.createObjectInstance('Book')
355
+ b = Book(title="The Life and Times of Scrooge",
356
+ author="test:TuomasHolopainen",
357
+ pubDate="2001-01-01",
358
+ grantsPermission=Iri('oldap:GenericView'))
359
+ b.create()
360
+ data = factory.read_data(con=self._connection, iri=b.iri, projectShortName='test')
361
+ self.assertEqual(data['rdf:type'], ['test:Book'])
362
+ self.assertEqual(data['test:title'], ['The Life and Times of Scrooge'])
363
+ self.assertEqual(data['test:author'], ['test:TuomasHolopainen'])
364
+
365
+ def test_read_B(self):
341
366
  factory = ResourceInstanceFactory(con=self._connection, project='test')
342
367
  Book = factory.createObjectInstance('Book')
343
368
  b = Book(title="The Life and Times of Scrooge",
@@ -354,6 +379,7 @@ class TestObjectFactory(unittest.TestCase):
354
379
  self.assertEqual(jsonobj['test:pubDate'], ['2001-01-01'])
355
380
  self.assertEqual(jsonobj['test:title'], ['The Life and Times of Scrooge'])
356
381
 
382
+
357
383
  def test_value_setter(self):
358
384
  factory = ResourceInstanceFactory(con=self._connection, project='test')
359
385
  SetterTester = factory.createObjectInstance('SetterTester')
@@ -30,6 +30,46 @@ test:shacl {
30
30
 
31
31
  test:shapes schema:version "0.1.0"^^xsd:string .
32
32
 
33
+ test:MammalShape a sh:NodeShape ;
34
+ sh:targetClass test:Mammal ;
35
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
36
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
37
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
38
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
39
+ sh:node oldap:ThingShape ;
40
+ sh:property [
41
+ sh:path rdf:type ;
42
+ ],
43
+ [
44
+ sh:path test:name ;
45
+ sh:datatype xsd:string ;
46
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
47
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
48
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
49
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
50
+ ] .
51
+
52
+ test:CatShape a sh:NodeShape ;
53
+ sh:targetClass test:Cat ;
54
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
55
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
56
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
57
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
58
+ sh:node oldap:ThingShape, test:MammalShape ;
59
+ sh:property [
60
+ sh:path rdf:type ;
61
+ ],
62
+ [
63
+ sh:path test:subName ;
64
+ sh:datatype xsd:string ;
65
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
66
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
67
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
68
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
69
+ ] .
70
+
71
+
72
+
33
73
  test:PersonShape a sh:NodeShape ;
34
74
  sh:targetClass test:Person ;
35
75
  dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
@@ -776,6 +816,46 @@ test:onto {
776
816
  test:ontology owl:type owl:Ontology ;
777
817
  owl:versionInfo "0.1.0"^^xsd:string .
778
818
 
819
+ test:Mammal rdf:type owl:Class ;
820
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
821
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
822
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
823
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
824
+ rdfs:subClassOf oldap:Thing ,
825
+ [
826
+ rdf:type owl:Restriction ;
827
+ owl:onProperty test:name ;
828
+ owl:onDataRange xsd:string ;
829
+ ] .
830
+
831
+ test:Cat rdf:type owl:Class ;
832
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
833
+ dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
834
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
835
+ dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
836
+ rdfs:subClassOf oldap:Thing, test:Mammal,
837
+ [
838
+ rdf:type owl:Restriction ;
839
+ owl:onProperty test:subName ;
840
+ owl:onDataRange xsd:string ;
841
+ ] .
842
+
843
+ test:name rdf:type owl:DatatypeProperty ;
844
+ rdfs:domain test:Mammal ;
845
+ rdfs:range xsd:string ;
846
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
847
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
848
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
849
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime .
850
+
851
+ test:subName rdf:type owl:DatatypeProperty ;
852
+ rdfs:domain test:Cat ;
853
+ rdfs:range xsd:string ;
854
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
855
+ dcterms:created "2024-05-16T18:38:25.551434"^^xsd:dateTime ;
856
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
857
+ dcterms:modified "2024-05-16T18:38:25.551434"^^xsd:dateTime .
858
+
779
859
  test:Person rdf:type owl:Class ;
780
860
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
781
861
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "oldaplib"
3
- version = "0.3.5"
3
+ version = "0.3.7"
4
4
  description = "Open Media Access Server Library (Linked Open Data middleware/RESTApi)"
5
5
  authors = ["Lukas Rosenthaler <lukas.rosenthaler@unibas.ch>"]
6
6
  license = "GNU Affero General Public License version 3"
@@ -1 +0,0 @@
1
- __version__ = "0.3.5"
File without changes
File without changes
File without changes
File without changes
File without changes