cognite-neat 0.75.6__py3-none-any.whl → 0.75.8__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.

Potentially problematic release.


This version of cognite-neat might be problematic. Click here for more details.

Files changed (37) hide show
  1. cognite/neat/_version.py +1 -1
  2. cognite/neat/graph/extractors/_mock_graph_generator.py +6 -5
  3. cognite/neat/rules/analysis/_base.py +1 -1
  4. cognite/neat/rules/analysis/_information_rules.py +4 -4
  5. cognite/neat/rules/exporters/_models.py +6 -1
  6. cognite/neat/rules/exporters/_rules2dms.py +67 -14
  7. cognite/neat/rules/exporters/_rules2ontology.py +20 -17
  8. cognite/neat/rules/exporters/_validation.py +2 -2
  9. cognite/neat/rules/importers/_dms2rules.py +14 -15
  10. cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +21 -19
  11. cognite/neat/rules/importers/_dtdl2rules/spec.py +1 -1
  12. cognite/neat/rules/importers/_owl2rules/_owl2rules.py +2 -2
  13. cognite/neat/rules/importers/_spreadsheet2rules.py +6 -1
  14. cognite/neat/rules/importers/_yaml2rules.py +8 -2
  15. cognite/neat/rules/issues/dms.py +1 -1
  16. cognite/neat/rules/models/data_types.py +282 -0
  17. cognite/neat/rules/models/entities.py +442 -0
  18. cognite/neat/rules/models/rdfpath.py +111 -11
  19. cognite/neat/rules/models/rules/_base.py +2 -2
  20. cognite/neat/rules/models/rules/_dms_architect_rules.py +117 -188
  21. cognite/neat/rules/models/rules/_dms_rules_write.py +355 -0
  22. cognite/neat/rules/models/rules/_dms_schema.py +3 -3
  23. cognite/neat/rules/models/rules/_domain_rules.py +6 -3
  24. cognite/neat/rules/models/rules/_information_rules.py +68 -61
  25. cognite/neat/rules/models/rules/_types/__init__.py +0 -47
  26. cognite/neat/rules/models/rules/_types/_base.py +1 -309
  27. cognite/neat/rules/models/rules/_types/_field.py +0 -225
  28. cognite/neat/utils/cdf_loaders/_data_modeling.py +4 -2
  29. cognite/neat/workflows/steps/lib/rules_exporter.py +97 -0
  30. cognite/neat/workflows/steps/lib/rules_importer.py +3 -3
  31. {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/METADATA +1 -1
  32. {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/RECORD +35 -34
  33. cognite/neat/rules/models/_entity.py +0 -142
  34. cognite/neat/rules/models/rules/_types/_value.py +0 -159
  35. {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/LICENSE +0 -0
  36. {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/WHEEL +0 -0
  37. {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/entry_points.txt +0 -0
@@ -19,23 +19,11 @@ from pydantic_core import PydanticCustomError
19
19
  from cognite.neat.rules import exceptions
20
20
 
21
21
  from ._base import (
22
- CLASS_ID_COMPLIANCE_REGEX,
23
- ENTITY_ID_REGEX_COMPILED,
24
22
  MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX,
25
23
  PREFIX_COMPLIANCE_REGEX,
26
24
  PROPERTY_ID_COMPLIANCE_REGEX,
27
25
  VERSION_COMPLIANCE_REGEX,
28
- VERSIONED_ENTITY_REGEX_COMPILED,
29
- ClassEntity,
30
- ContainerEntity,
31
- ParentClassEntity,
32
- ReferenceEntity,
33
- Undefined,
34
- Unknown,
35
- ViewEntity,
36
- ViewPropEntity,
37
26
  )
38
- from ._value import DMS_VALUE_TYPE_MAPPINGS, XSD_VALUE_TYPE_MAPPINGS, DMSValueType, XSDValueType
39
27
 
40
28
 
41
29
  def _custom_error(exc_factory: Callable[[str | None, Exception], Any]) -> Any:
@@ -52,39 +40,6 @@ def _raise(exception: PydanticCustomError):
52
40
  raise exception
53
41
 
54
42
 
55
- def _split_parent(value: str | list[ParentClassEntity]) -> list[ParentClassEntity] | None:
56
- if isinstance(value, list) and all(isinstance(x, ParentClassEntity) for x in value):
57
- return value
58
-
59
- if not (isinstance(value, str) and value):
60
- return None
61
-
62
- parents = []
63
- for v in value.replace(", ", ",").split(","):
64
- if ENTITY_ID_REGEX_COMPILED.match(v) or VERSIONED_ENTITY_REGEX_COMPILED.match(v):
65
- parents.append(ParentClassEntity.from_string(entity_string=v))
66
- else:
67
- parents.append(ParentClassEntity(prefix=Undefined, suffix=v, name=v))
68
-
69
- return parents
70
-
71
-
72
- def _check_parent(value: list[ParentClassEntity]) -> list[ParentClassEntity]:
73
- if not value:
74
- return value
75
- if illegal_ids := [v for v in value if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, v.suffix)]:
76
- raise exceptions.MoreThanOneNonAlphanumericCharacter(
77
- "parent", ", ".join(cast(list[str], illegal_ids))
78
- ).to_pydantic_custom_error()
79
- if illegal_ids := [v for v in value if not re.match(CLASS_ID_COMPLIANCE_REGEX, v.suffix)]:
80
- for v in illegal_ids:
81
- print(v.id)
82
- raise exceptions.ClassSheetParentClassIDRegexViolation(
83
- cast(list[str], illegal_ids), CLASS_ID_COMPLIANCE_REGEX
84
- ).to_pydantic_custom_error()
85
- return value
86
-
87
-
88
43
  StrOrListType = Annotated[
89
44
  str | list[str],
90
45
  BeforeValidator(lambda value: value.replace(", ", ",").split(",") if isinstance(value, str) and value else value),
@@ -141,43 +96,6 @@ VersionType = Annotated[
141
96
  ]
142
97
 
143
98
 
144
- ParentClassType = Annotated[
145
- list[ParentClassEntity] | None,
146
- BeforeValidator(_split_parent),
147
- AfterValidator(_check_parent),
148
- PlainSerializer(
149
- lambda v: ",".join([entry.versioned_id for entry in v]) if v else None,
150
- return_type=str,
151
- when_used="unless-none",
152
- ),
153
- ]
154
-
155
- ClassType = Annotated[
156
- ClassEntity,
157
- BeforeValidator(lambda value: (ClassType.from_raw(value) if isinstance(value, str) else value)),
158
- AfterValidator(
159
- lambda value: (
160
- _raise(exceptions.MoreThanOneNonAlphanumericCharacter("class_", value.suffix).to_pydantic_custom_error())
161
- if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, value.suffix)
162
- else (
163
- value
164
- if re.match(CLASS_ID_COMPLIANCE_REGEX, value.suffix)
165
- else _raise(
166
- exceptions.ClassSheetClassIDRegexViolation(
167
- value.suffix, CLASS_ID_COMPLIANCE_REGEX
168
- ).to_pydantic_custom_error()
169
- )
170
- )
171
- )
172
- ),
173
- PlainSerializer(
174
- lambda v: v.versioned_id,
175
- return_type=str,
176
- when_used="unless-none",
177
- ),
178
- ]
179
-
180
-
181
99
  PropertyType = Annotated[
182
100
  str,
183
101
  AfterValidator(
@@ -194,146 +112,3 @@ PropertyType = Annotated[
194
112
  )
195
113
  ),
196
114
  ]
197
-
198
-
199
- def _reference_entity_type_before_validator(value: Any | None = None) -> Any:
200
- if not value:
201
- return None
202
- elif isinstance(value, rdflib.URIRef | ReferenceEntity):
203
- return value
204
- elif ReferenceEntity.from_raw(value).prefix == Undefined:
205
- # case1: then this must be a URIRef!
206
- return rdflib.URIRef(str(TypeAdapter(HttpUrl).validate_python(value)))
207
- else:
208
- # case2: this is a ReferenceEntity
209
- return ReferenceEntity.from_raw(value)
210
-
211
-
212
- ReferenceType = Annotated[
213
- ReferenceEntity | rdflib.URIRef | None,
214
- BeforeValidator(_reference_entity_type_before_validator),
215
- PlainSerializer(
216
- lambda v: v.versioned_id if isinstance(v, ReferenceEntity) else str(v),
217
- return_type=str,
218
- when_used="unless-none",
219
- ),
220
- ]
221
-
222
-
223
- ContainerType = Annotated[
224
- ContainerEntity,
225
- BeforeValidator(ContainerEntity.from_raw),
226
- PlainSerializer(
227
- lambda v: v.versioned_id,
228
- return_type=str,
229
- when_used="unless-none",
230
- ),
231
- ]
232
-
233
-
234
- ViewType = Annotated[
235
- ViewEntity,
236
- BeforeValidator(ViewEntity.from_raw),
237
- PlainSerializer(
238
- lambda v: v.versioned_id,
239
- return_type=str,
240
- when_used="unless-none",
241
- ),
242
- ]
243
-
244
-
245
- def _semantic_value_type_before_validator(value: Any) -> Any:
246
- if isinstance(value, XSDValueType | ClassEntity) or not isinstance(value, str):
247
- return value
248
- elif value in XSD_VALUE_TYPE_MAPPINGS:
249
- return XSD_VALUE_TYPE_MAPPINGS[value]
250
- elif value.lower() in XSD_VALUE_TYPE_MAPPINGS:
251
- return XSD_VALUE_TYPE_MAPPINGS[value.lower()]
252
- elif value == "#N/A":
253
- return ClassEntity(prefix=Undefined, suffix=Unknown)
254
- else:
255
- return ClassEntity.from_raw(value)
256
-
257
-
258
- def _semantic_value_type_serializer(value: Any) -> str:
259
- if isinstance(value, ClassEntity):
260
- return value.versioned_id
261
- elif isinstance(value, XSDValueType):
262
- return value.suffix
263
- else:
264
- return str(value)
265
-
266
-
267
- def _dms_value_type_before_validator(value: Any) -> Any:
268
- if isinstance(value, DMSValueType | ViewPropEntity) or not isinstance(value, str):
269
- return value
270
- elif value in DMS_VALUE_TYPE_MAPPINGS:
271
- return DMS_VALUE_TYPE_MAPPINGS[value]
272
- elif value.lower() in DMS_VALUE_TYPE_MAPPINGS:
273
- return DMS_VALUE_TYPE_MAPPINGS[value.lower()]
274
- else:
275
- return ViewPropEntity.from_raw(value)
276
-
277
-
278
- SemanticValueType = Annotated[
279
- XSDValueType | ClassEntity,
280
- BeforeValidator(_semantic_value_type_before_validator),
281
- PlainSerializer(
282
- _semantic_value_type_serializer,
283
- return_type=str,
284
- when_used="unless-none",
285
- ),
286
- ]
287
-
288
- CdfValueType = Annotated[
289
- DMSValueType | ViewPropEntity,
290
- BeforeValidator(_dms_value_type_before_validator),
291
- PlainSerializer(
292
- lambda v: v.versioned_id if isinstance(v, ViewPropEntity | ViewEntity) else v.dms()._type,
293
- return_type=str,
294
- when_used="unless-none",
295
- ),
296
- ]
297
-
298
-
299
- def _from_str_or_list_container(value: Any) -> list[ContainerEntity] | Any:
300
- if not value:
301
- return value
302
- if isinstance(value, str):
303
- return [ContainerEntity.from_raw(entry.strip()) for entry in value.split(",")]
304
- elif isinstance(value, list):
305
- return [ContainerEntity.from_raw(entry.strip()) if isinstance(entry, str) else entry for entry in value]
306
- else:
307
- return value
308
-
309
-
310
- def _from_str_or_list_view(value: Any) -> list[ViewEntity] | Any:
311
- if not value:
312
- return value
313
- if isinstance(value, str):
314
- return [ViewEntity.from_raw(entry.strip()) for entry in value.split(",")]
315
- elif isinstance(value, list):
316
- return [ViewEntity.from_raw(entry.strip()) if isinstance(entry, str) else entry for entry in value]
317
- else:
318
- return value
319
-
320
-
321
- ContainerListType = Annotated[
322
- list[ContainerEntity],
323
- BeforeValidator(_from_str_or_list_container),
324
- PlainSerializer(
325
- lambda v: ",".join([entry.versioned_id for entry in v]),
326
- return_type=str,
327
- when_used="unless-none",
328
- ),
329
- ]
330
-
331
- ViewListType = Annotated[
332
- list[ViewEntity],
333
- BeforeValidator(_from_str_or_list_view),
334
- PlainSerializer(
335
- lambda v: ",".join([entry.versioned_id for entry in v]),
336
- return_type=str,
337
- when_used="unless-none",
338
- ),
339
- ]
@@ -87,8 +87,10 @@ class SpaceLoader(DataModelingLoader[str, SpaceApply, Space, SpaceApplyList, Spa
87
87
  def update(self, items: Sequence[SpaceApply]) -> SpaceList:
88
88
  return self.create(items)
89
89
 
90
- def delete(self, ids: SequenceNotStr[str]) -> list[str]:
91
- return self.client.data_modeling.spaces.delete(ids)
90
+ def delete(self, ids: SequenceNotStr[str] | Sequence[Space | SpaceApply]) -> list[str]:
91
+ if all(isinstance(item, Space) for item in ids) or all(isinstance(item, SpaceApply) for item in ids):
92
+ ids = [cast(Space | SpaceApply, item).space for item in ids]
93
+ return self.client.data_modeling.spaces.delete(cast(SequenceNotStr[str], ids))
92
94
 
93
95
 
94
96
  class ViewLoader(DataModelingLoader[ViewId, ViewApply, View, ViewApplyList, ViewList]):
@@ -17,12 +17,109 @@ __all__ = [
17
17
  "RulesToSHACL",
18
18
  "RulesToSemanticDataModel",
19
19
  "RulesToCDFTransformations",
20
+ "DeleteDataModelFromCDF",
20
21
  ]
21
22
 
22
23
 
23
24
  CATEGORY = __name__.split(".")[-1].replace("_", " ").title()
24
25
 
25
26
 
27
+ class DeleteDataModelFromCDF(Step):
28
+ """
29
+ This step deletes data model and its components from CDF
30
+ """
31
+
32
+ description = "This step deletes data model and its components from CDF."
33
+ version = "private-beta"
34
+ category = CATEGORY
35
+
36
+ configurables: ClassVar[list[Configurable]] = [
37
+ Configurable(
38
+ name="Dry run",
39
+ value="False",
40
+ label=("Whether to perform a dry run of the deleter. "),
41
+ options=["True", "False"],
42
+ ),
43
+ Configurable(
44
+ name="Components",
45
+ type="multi_select",
46
+ value="",
47
+ label="Select which DMS schema component(s) to be deleted from CDF",
48
+ options=["spaces", "containers", "views", "data_models"],
49
+ ),
50
+ Configurable(
51
+ name="Multi-space components deletion",
52
+ value="False",
53
+ label=(
54
+ "Whether to delete only components belonging to the data model space"
55
+ " (i.e. space define under Metadata sheet of Rules), "
56
+ "or also additionally delete components outside of the data model space."
57
+ ),
58
+ options=["True", "False"],
59
+ ),
60
+ ]
61
+
62
+ def run(self, rules: MultiRuleData, cdf_client: CogniteClient) -> FlowMessage: # type: ignore[override]
63
+ if self.configs is None or self.data_store_path is None:
64
+ raise StepNotInitialized(type(self).__name__)
65
+ components_to_delete = {
66
+ cast(Literal["all", "spaces", "data_models", "views", "containers"], key)
67
+ for key, value in self.complex_configs["Components"].items()
68
+ if value
69
+ }
70
+ dry_run = self.configs["Dry run"] == "True"
71
+ multi_space_components_delete: bool = self.configs["Multi-space components deletion"] == "True"
72
+
73
+ if not components_to_delete:
74
+ return FlowMessage(
75
+ error_text="No DMS Schema components selected for removal! Please select minimum one!",
76
+ step_execution_status=StepExecutionStatus.ABORT_AND_FAIL,
77
+ )
78
+ input_rules = rules.dms or rules.information
79
+ if input_rules is None:
80
+ return FlowMessage(
81
+ error_text="Missing DMS or Information rules in the input data! "
82
+ "Please ensure that a DMS or Information rules is provided!",
83
+ step_execution_status=StepExecutionStatus.ABORT_AND_FAIL,
84
+ )
85
+
86
+ dms_exporter = exporters.DMSExporter(
87
+ export_components=frozenset(components_to_delete),
88
+ include_space=(
89
+ None
90
+ if multi_space_components_delete
91
+ else {input_rules.metadata.space if isinstance(input_rules, DMSRules) else input_rules.metadata.prefix}
92
+ ),
93
+ )
94
+
95
+ report_lines = ["# Data Model Deletion from CDF\n\n"]
96
+ errors = []
97
+ for result in dms_exporter.delete_from_cdf(rules=input_rules, client=cdf_client, dry_run=dry_run):
98
+ report_lines.append(result.as_report_str())
99
+ errors.extend(result.error_messages)
100
+
101
+ report_lines.append("\n\n# ERRORS\n\n")
102
+ report_lines.extend(errors)
103
+
104
+ output_dir = self.data_store_path / Path("staging")
105
+ output_dir.mkdir(parents=True, exist_ok=True)
106
+ report_file = "dms_component_creation_report.txt"
107
+ report_full_path = output_dir / report_file
108
+ report_full_path.write_text("\n".join(report_lines))
109
+
110
+ output_text = (
111
+ "<p></p>"
112
+ "Download Data Model Deletion "
113
+ f'<a href="/data/staging/{report_file}?{time.time()}" '
114
+ f'target="_blank">Report</a>'
115
+ )
116
+
117
+ if errors:
118
+ return FlowMessage(error_text=output_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
119
+ else:
120
+ return FlowMessage(output_text=output_text)
121
+
122
+
26
123
  class RulesToDMS(Step):
27
124
  """
28
125
  This step exports Rules to DMS Schema components in CDF
@@ -6,8 +6,8 @@ from cognite.client import CogniteClient
6
6
 
7
7
  from cognite.neat.rules import importers
8
8
  from cognite.neat.rules.issues.formatters import FORMATTER_BY_NAME
9
+ from cognite.neat.rules.models.entities import DataModelEntity, DMSUnknownEntity
9
10
  from cognite.neat.rules.models.rules import RoleTypes
10
- from cognite.neat.rules.models.rules._types import DataModelEntity, Undefined
11
11
  from cognite.neat.workflows._exceptions import StepNotInitialized
12
12
  from cognite.neat.workflows.model import FlowMessage, StepExecutionStatus
13
13
  from cognite.neat.workflows.steps.data_contracts import MultiRuleData
@@ -207,8 +207,8 @@ class DMSToRules(Step):
207
207
  error_text = "Expected input payload to contain 'Data model id' key."
208
208
  return FlowMessage(error_text=error_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
209
209
 
210
- datamodel_entity = DataModelEntity.from_raw(datamodel_id_str)
211
- if datamodel_entity.space is Undefined:
210
+ datamodel_entity = DataModelEntity.load(datamodel_id_str)
211
+ if isinstance(datamodel_entity, DMSUnknownEntity):
212
212
  error_text = (
213
213
  f"Data model id should be in the format 'my_space:my_data_model(version=1)' "
214
214
  f"or 'my_space:my_data_model', failed to parse space from {datamodel_id_str}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cognite-neat
3
- Version: 0.75.6
3
+ Version: 0.75.8
4
4
  Summary: Knowledge graph transformation
5
5
  Home-page: https://cognite-neat.readthedocs-hosted.com/
6
6
  License: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  cognite/neat/__init__.py,sha256=v-rRiDOgZ3sQSMQKq0vgUQZvpeOkoHFXissAx6Ktg84,61
2
- cognite/neat/_version.py,sha256=fug2OIY8gX5DGrbT0JbhrLSvDd6J64UcVh5bCogqvQ0,23
2
+ cognite/neat/_version.py,sha256=osCAtP7V6N8d8ylLSMLqESEPBONdapAWxR22udUYrQY,23
3
3
  cognite/neat/app/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  cognite/neat/app/api/asgi/metrics.py,sha256=nxFy7L5cChTI0a-zkCiJ59Aq8yLuIJp5c9Dg0wRXtV0,152
5
5
  cognite/neat/app/api/configuration.py,sha256=xnKdBE_dtq1nRvKa79YGA_wimI5UhoSRuBQz4LkLzQw,4606
@@ -52,7 +52,7 @@ cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx,sha256=CV_yK5Z
52
52
  cognite/neat/graph/exceptions.py,sha256=G899CjKepLB2dxgwH4585cqqtjvbyH6MLTM2aaqZRqg,3402
53
53
  cognite/neat/graph/extractors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  cognite/neat/graph/extractors/_base.py,sha256=TOXDnlqske8DgnJwA0THDVRgmR79Acjm56yF0E-2w7I,356
55
- cognite/neat/graph/extractors/_mock_graph_generator.py,sha256=2f-gM6VrS0l1CeFr5THWASly62iDogBPC_Q26Wc_xd8,14947
55
+ cognite/neat/graph/extractors/_mock_graph_generator.py,sha256=xxrY3wuN7ZgP_iWirC_wtvEO5_cCsGoQZVyEZKx362w,14980
56
56
  cognite/neat/graph/models.py,sha256=AtLgZh2qyRP6NRetjQCy9qLMuTQB0CH52Zsev-qa2sk,149
57
57
  cognite/neat/graph/stores/__init__.py,sha256=ivvk7STSo-4wuP_CpizKUCPKmt_ufpNWRJUN9Bv5gdY,543
58
58
  cognite/neat/graph/stores/_base.py,sha256=_39ZoiSed7U-OdOKhiuT8dOS3u7HNfSIkLQp3a0B0GQ,13473
@@ -148,60 +148,61 @@ cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
148
  cognite/neat/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
149
  cognite/neat/rules/_shared.py,sha256=UuciM9RlL9Iwh6UOYiKXFRwjnpRUnhsYRptTPjePmFE,176
150
150
  cognite/neat/rules/analysis/__init__.py,sha256=J2yL0QWSvXOWLbaYPyA0HXHh3aqOWmkwobScdgVQpw8,115
151
- cognite/neat/rules/analysis/_base.py,sha256=pEx-DZnDMuDLe4u98AKWOeTfDMNJMD_AfVqfXMb_azs,673
152
- cognite/neat/rules/analysis/_information_rules.py,sha256=aEGlk_ByqK62KOr63M-irZv_yKx-9i5Cwujs8pVn_Pc,19612
151
+ cognite/neat/rules/analysis/_base.py,sha256=PmN5NLgGsovsHtsnvUzc_zuarWl-Xwk1azWcYKKuWdA,669
152
+ cognite/neat/rules/analysis/_information_rules.py,sha256=zGY1cx1WG98fge-ADTQpceCtJojLD872v5DZNGaE8Ss,19608
153
153
  cognite/neat/rules/examples/__init__.py,sha256=nxIwueAcHgZhkYriGxnDLQmIyiT8PByPHbScjYKDKe0,374
154
154
  cognite/neat/rules/examples/wind-energy.owl,sha256=NuomCA9FuuLF0JlSuG3OKqD4VBcHgSjDKFLV17G1zV8,65934
155
155
  cognite/neat/rules/exceptions.py,sha256=YLnsbXXJdDSr_szQoioEtOdqDV8PR7RdQjpMP2SWeCs,123868
156
156
  cognite/neat/rules/exporters/__init__.py,sha256=Gn3CjkVKHJF9Po1ZPH4wAJ-sRW9up7b2CpXm-eReV3Q,413
157
157
  cognite/neat/rules/exporters/_base.py,sha256=rJIKvM9CQlwwAOBlmpYepB1Urb-ZLC0xBxS0fE7am-I,1517
158
- cognite/neat/rules/exporters/_models.py,sha256=f_RbFhoyD27z6Dsk4upYMHp7JHZRCfIvZsEzH5JSvtc,1645
159
- cognite/neat/rules/exporters/_rules2dms.py,sha256=HMEbedYKp14YYnLeslp3XUxcoBqEHrJG31K3ql1Qvcw,11893
158
+ cognite/neat/rules/exporters/_models.py,sha256=BX19QXsbWjImCY9NCaOnrlMSs-6qcA5P3QLittrWvGM,1870
159
+ cognite/neat/rules/exporters/_rules2dms.py,sha256=KXK_bJp752Zo8E3apHnTZzcZ2sQnmXftazI1mKPEfcQ,14231
160
160
  cognite/neat/rules/exporters/_rules2excel.py,sha256=oKYayDKKsCCMmquuppRzszORAJB9YB3O5DdZ2aplNjU,13767
161
- cognite/neat/rules/exporters/_rules2ontology.py,sha256=eHTzvuOvguOEVSqDHGW6zPDlrCiU8ia2OId4ZGZgP78,19900
161
+ cognite/neat/rules/exporters/_rules2ontology.py,sha256=GBpaAjM0X8t02NWE3CRmKKovEiHhvOHdWfbeXP7Hh6c,20139
162
162
  cognite/neat/rules/exporters/_rules2yaml.py,sha256=Irr4CwJ5pLlwiJeOMuGPU-HX9zoYrONyfV9JpRYz6j8,3038
163
- cognite/neat/rules/exporters/_validation.py,sha256=vlJwFR1slrOgosE6p1hfLGFwZ5UwKKHlG1oyyLGfj-0,4090
163
+ cognite/neat/rules/exporters/_validation.py,sha256=lXz97a9AtmhAIqX8CLmI32K8V0Fwf7Wa2X5reRl8HAM,4100
164
164
  cognite/neat/rules/importers/__init__.py,sha256=zqNbGpvdVhYkLjWx1i9dJ3FXzYGtuQyTydUYsj-BndQ,408
165
165
  cognite/neat/rules/importers/_base.py,sha256=Ldpc1IrZu1MejBRFwDyMDmHO-DDgfNDNhr9pFVjeb7U,4057
166
- cognite/neat/rules/importers/_dms2rules.py,sha256=p5UVQ7im86ORy5bxWIz50tM1LU3OwUPqJRbxKESXejA,10405
166
+ cognite/neat/rules/importers/_dms2rules.py,sha256=VMgk7NV1yWmu8UlORUHcrB8bi7z8Icg-5V69PTrh4J4,10379
167
167
  cognite/neat/rules/importers/_dtdl2rules/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
168
168
  cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
169
- cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py,sha256=GbSxekuCSU-oHrKGmayALPzv6a98kAqKhv3IkCsOGEo,12553
169
+ cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py,sha256=dHWbcP7rLxnLOef69DBR2xDYFIWj_DQPx-IkIWwBZIA,12676
170
170
  cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py,sha256=vjAn2pCaav4FLE_-uJJcbeHZ5KS_yfsOLiKgXtFT8Zk,6801
171
- cognite/neat/rules/importers/_dtdl2rules/spec.py,sha256=SmMvX-rCI3GVdDlILwFHPJvS0zrXlErMuw6nhqdEZIo,11925
171
+ cognite/neat/rules/importers/_dtdl2rules/spec.py,sha256=86lfb_QbKdAWgN-3wf7Umkn8VrxqLHjmBfCJkTB90Fo,11921
172
172
  cognite/neat/rules/importers/_owl2rules/__init__.py,sha256=tdGcrgtozdQyST-pTlxIa4cLBNTLvtk1nNYR4vOdFSw,63
173
173
  cognite/neat/rules/importers/_owl2rules/_owl2classes.py,sha256=3qxQlZr-3MLhL0oDHlCfOK9ndsT4edDGqz3pQb5f61A,7597
174
174
  cognite/neat/rules/importers/_owl2rules/_owl2metadata.py,sha256=mqDa0oiKCX2gBEk47rX4r-VzOmsVyK6q_J7wvDOCklA,7804
175
175
  cognite/neat/rules/importers/_owl2rules/_owl2properties.py,sha256=UB7iZZFkoeTsxuM745rl5I4Myp5mrotDgzmjPBBfv8w,7443
176
- cognite/neat/rules/importers/_owl2rules/_owl2rules.py,sha256=a7bIv_0OcpGD3si1n81sDQmCKtdYF57QkYZ9zzF2c7Y,6987
177
- cognite/neat/rules/importers/_spreadsheet2rules.py,sha256=G2gDhM_RsnwCj49VtWRCgRQjGEmFtEkVqmiGD31mdzs,11085
178
- cognite/neat/rules/importers/_yaml2rules.py,sha256=upDRzfiYONeRMnad0Q1YOV56v1FTAqxacPw7zBbGsGs,4074
176
+ cognite/neat/rules/importers/_owl2rules/_owl2rules.py,sha256=j4z2WR2HhhKha4d2jQKfbFpakaVPCcw4doAiLDcbbQk,6947
177
+ cognite/neat/rules/importers/_spreadsheet2rules.py,sha256=q464RCTA6iXCQrfHWdx8hBU5j4lV2X0Gyiv2Rq71VK8,11306
178
+ cognite/neat/rules/importers/_yaml2rules.py,sha256=G8O_D1eXwIZXc3KlS6bHSf2jlbhpqxBVFEzDC_EaOg0,4315
179
179
  cognite/neat/rules/issues/__init__.py,sha256=Ms6jgCxCezc5IgTOwCFtXQPtoVFfOvdcXj84_rs917I,563
180
180
  cognite/neat/rules/issues/base.py,sha256=qgoZ3qr35XLtdmkWWewf3sCYOW0sCkJrN9VpFvX-WzY,6158
181
- cognite/neat/rules/issues/dms.py,sha256=APkqjiRcpxOKx4kGejgoinlsNz94hrkGToFfzeBApcA,15323
181
+ cognite/neat/rules/issues/dms.py,sha256=8bK-mnc6TNwXfdAJB6JYQrQRBB_k2MmFRNbXdhPiVDw,15338
182
182
  cognite/neat/rules/issues/fileread.py,sha256=n-GZaULOJF_MKkBIh1maaOuGZXOvZYw7Y6fDAS0jrBI,4492
183
183
  cognite/neat/rules/issues/formatters.py,sha256=_pSogWtfkt2JK0PZgWQffbj2On8vumFNshxOKAi5fYw,3346
184
184
  cognite/neat/rules/issues/importing.py,sha256=GqUywhBD840Fbc4DD5L2I0oEllJ78MTjpmXogVEjihA,7493
185
185
  cognite/neat/rules/issues/spreadsheet.py,sha256=Iyje5xqgDN3nhpF9hi1Nm-baCXMxOLYVXZ8_jE18zLI,13763
186
186
  cognite/neat/rules/issues/spreadsheet_file.py,sha256=YCp0Pk_TsiqYuOPdWpjUpre-zvi2c5_MvrC_dxw10YY,4964
187
- cognite/neat/rules/models/_entity.py,sha256=InJGZ5YX_8Y3Oe7BOI8VZ9gWghpYE4PmeOSw51eiq74,4893
188
- cognite/neat/rules/models/rdfpath.py,sha256=lqY6YFeVEf3BeD1SWJMgDSQUGjXxzxmnP-NVPaTPUFw,7228
187
+ cognite/neat/rules/models/data_types.py,sha256=lanwkhwG8iHKfjYfia4v2SBTJrMeXOsqaVkVEP2QMXs,6078
188
+ cognite/neat/rules/models/entities.py,sha256=CWOSKRJjw6TQ4GifWNfkK5wGCw-RXr-7NZdycgGWmeI,15481
189
+ cognite/neat/rules/models/rdfpath.py,sha256=WypoGzJ6WCze3yNCFuHQQeLER7KJR_FGlskJafMjmas,11030
189
190
  cognite/neat/rules/models/rules/__init__.py,sha256=YHzkEkDzDuPs9N69FP12SAbnOBiLOxk0m5jXH-IQgbY,522
190
- cognite/neat/rules/models/rules/_base.py,sha256=xr2c2y8HIWQbC_x82lP1aWtqp_0mjzil7tTr9itgh8g,11024
191
- cognite/neat/rules/models/rules/_dms_architect_rules.py,sha256=HgoEajs61JCnkCD75ZEhjmIw3oFKmfPhaOlK0SuIVSo,56198
192
- cognite/neat/rules/models/rules/_dms_schema.py,sha256=XumSJlJUdReq1qnuphIz3NF7wmhjRiaMjIGNGioi1L4,30789
193
- cognite/neat/rules/models/rules/_domain_rules.py,sha256=1E0b4L4YPrreBTUa-KbNI0ufWCJGiuaLbcXjjGeuwcM,2542
194
- cognite/neat/rules/models/rules/_information_rules.py,sha256=RaWz5oguyDh249V3R345R_6NXsRzEIZcwfzn7pw3jtA,21577
195
- cognite/neat/rules/models/rules/_types/__init__.py,sha256=Px0uB5fqk-8qH-HRi0ZvgGkLhYcS5A8EJ9QDB2TFwNQ,1299
196
- cognite/neat/rules/models/rules/_types/_base.py,sha256=g-Io9spfUtDLuCI8f8crRJjVJXp0SWeQs8jSbujZui8,12233
197
- cognite/neat/rules/models/rules/_types/_field.py,sha256=dOVAU1jWCupFVnrYYwLfI-nNUC4rv4vXHMzpiObtWiw,10295
198
- cognite/neat/rules/models/rules/_types/_value.py,sha256=ubyWmU6neyNxx17fqcciIjyB-CIpYNUuM97Xh2sVrYo,6308
191
+ cognite/neat/rules/models/rules/_base.py,sha256=CKFrEFeLROq6IWDb5SfYTRJqsrOm0gvB-MGudMKBQqo,11024
192
+ cognite/neat/rules/models/rules/_dms_architect_rules.py,sha256=ieNN0V88eS__NmM7rwp7eq8Rxm4ns9yX8ZUL-z_ogqE,52589
193
+ cognite/neat/rules/models/rules/_dms_rules_write.py,sha256=AnhW9QypNLPj4qHKMm8AFh7HGkV8nSifO2SKgErN5Cg,12898
194
+ cognite/neat/rules/models/rules/_dms_schema.py,sha256=BHxp6mhtvK0AFb6LeOHd0vnmrJVXQo78qhmAUOW9e_I,30777
195
+ cognite/neat/rules/models/rules/_domain_rules.py,sha256=oa_if8jPSZWN9nS2j-UdxnCSIfjwIWq128cPd_BzLOw,2655
196
+ cognite/neat/rules/models/rules/_information_rules.py,sha256=Cc1eB3rLj-WFvKOl45cgANjC_6oaYQE6Rs-Yeg7wLEk,22015
197
+ cognite/neat/rules/models/rules/_types/__init__.py,sha256=l1tGxzE7ezNHIL72AoEvNHN2IFuitxOLxiHJG__s6t4,305
198
+ cognite/neat/rules/models/rules/_types/_base.py,sha256=2GhLUE1ukV8X8SGL_JDxpbWGZyAvOnSqAE6JmDh5wbI,929
199
+ cognite/neat/rules/models/rules/_types/_field.py,sha256=74WfCSVbTubpK4n4VsysQqCch6VI8IcPqnHQpvNbFZ8,3197
199
200
  cognite/neat/utils/__init__.py,sha256=l5Nyqhqo25bcQXCOb_lk01cr-UXsG8cczz_y_I0u6bg,68
200
201
  cognite/neat/utils/auxiliary.py,sha256=E2-YtddzScvN7l7j0kNYIMlfqIUT9NWMqLpcJYPK4rY,309
201
202
  cognite/neat/utils/cdf.py,sha256=dTg8wnm2916yhWT_2Jg9_PlauHCbmnuNgmpqrGU8eO0,711
202
203
  cognite/neat/utils/cdf_loaders/__init__.py,sha256=s2aPR5XLo6WZ0ybstAJlcGFYkA7CyHW1XO-NYpL0V6o,483
203
204
  cognite/neat/utils/cdf_loaders/_base.py,sha256=j85HINIx4poGD-0dN3JPHTqjOS1XhCxv7G9s1gC1GBo,2057
204
- cognite/neat/utils/cdf_loaders/_data_modeling.py,sha256=JQO0E1_PSibUP0JiaX4KdljwQSOFal021fQxqbo0Hnw,11063
205
+ cognite/neat/utils/cdf_loaders/_data_modeling.py,sha256=VNtoBIoOLxGeVt2NIOnKSVK67MWJHE3mpqNf3-0xJKc,11304
205
206
  cognite/neat/utils/cdf_loaders/_ingestion.py,sha256=GqIJ7JsFuM4TYK_AFysEwS1e5CaVWfq5NqYPEUnId5s,6319
206
207
  cognite/neat/utils/cdf_loaders/data_classes.py,sha256=0apspfwVlFltYOZfmk_PNknS3Z3SCxVr3kkvXH0bfPA,3844
207
208
  cognite/neat/utils/exceptions.py,sha256=-w4cAcvcoWLf-_ZwAl7QV_NysfqtQzIOd1Ti-mpxJgM,981
@@ -235,8 +236,8 @@ cognite/neat/workflows/steps/lib/graph_extractor.py,sha256=vW9UpJScx5dFVCSairpOd
235
236
  cognite/neat/workflows/steps/lib/graph_loader.py,sha256=HfGg1HRZhbV58TFu89FTjKeUxGsbCYLeFJIQFDN_pQM,2341
236
237
  cognite/neat/workflows/steps/lib/graph_store.py,sha256=r7VTxdaz8jJQU7FJbnRDMxvEYbSAZFNMABhPyfNwiFk,6295
237
238
  cognite/neat/workflows/steps/lib/io_steps.py,sha256=QAGypoi1vP32BRiIgBZ0B4qsbFMcwhzpRiVUUnWysLA,16874
238
- cognite/neat/workflows/steps/lib/rules_exporter.py,sha256=WODxtxOWXswjDQ0gWA5toMic8X_ZkgUntEJttPncSKo,18678
239
- cognite/neat/workflows/steps/lib/rules_importer.py,sha256=VSoLZYZJ-sYzPAe9-S0TDekuAtWqXQwFPzgTyP3FpXo,10384
239
+ cognite/neat/workflows/steps/lib/rules_exporter.py,sha256=iFHBWvxQOIe_m5glIJ_bIjJT331FU14uvWB5CbdmAKs,22585
240
+ cognite/neat/workflows/steps/lib/rules_importer.py,sha256=Eu5f6RNAbNDN_XRAgjGqdYrJnUJASakdF6UuBWCrStI,10394
240
241
  cognite/neat/workflows/steps/lib/rules_validator.py,sha256=Zle0XH3_7e9CGmybk3XFvi1vOlvjZltLC_UUFaHrRXo,4784
241
242
  cognite/neat/workflows/steps/lib/v1/__init__.py,sha256=725aFzVqhE0tbVOAW70zWXTGKFiYImVupRZ4C5_IkUo,274
242
243
  cognite/neat/workflows/steps/lib/v1/graph_contextualization.py,sha256=Ge6LPr8mEWf47eP8g5C1EUCxKyoHcrHm3t5b9zb-9sA,3929
@@ -251,8 +252,8 @@ cognite/neat/workflows/steps_registry.py,sha256=PZVoHX4d6Vmjz6XzUFnFFWMCnrVnqkUC
251
252
  cognite/neat/workflows/tasks.py,sha256=dqlJwKAb0jlkl7abbY8RRz3m7MT4SK8-7cntMWkOYjw,788
252
253
  cognite/neat/workflows/triggers.py,sha256=_BLNplzoz0iic367u1mhHMHiUrCwP-SLK6_CZzfODX0,7071
253
254
  cognite/neat/workflows/utils.py,sha256=gKdy3RLG7ctRhbCRwaDIWpL9Mi98zm56-d4jfHDqP1E,453
254
- cognite_neat-0.75.6.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
255
- cognite_neat-0.75.6.dist-info/METADATA,sha256=gPB5zPFpscEuBdbMxKOJuElfWCb8FZz1knVewm0HMb8,9316
256
- cognite_neat-0.75.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
257
- cognite_neat-0.75.6.dist-info/entry_points.txt,sha256=61FPqiWb25vbqB0KI7znG8nsg_ibLHBvTjYnkPvNFso,50
258
- cognite_neat-0.75.6.dist-info/RECORD,,
255
+ cognite_neat-0.75.8.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
256
+ cognite_neat-0.75.8.dist-info/METADATA,sha256=pADAv8yoU3CyECTcRkfX5ftO96MfGYLvsFAWisLiJ0I,9316
257
+ cognite_neat-0.75.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
258
+ cognite_neat-0.75.8.dist-info/entry_points.txt,sha256=61FPqiWb25vbqB0KI7znG8nsg_ibLHBvTjYnkPvNFso,50
259
+ cognite_neat-0.75.8.dist-info/RECORD,,