cognite-neat 0.88.0__py3-none-any.whl → 0.88.2__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.
- cognite/neat/_version.py +1 -1
- cognite/neat/app/api/routers/configuration.py +1 -1
- cognite/neat/app/ui/neat-app/build/asset-manifest.json +7 -7
- cognite/neat/app/ui/neat-app/build/index.html +1 -1
- cognite/neat/app/ui/neat-app/build/static/css/{main.38a62222.css → main.72e3d92e.css} +2 -2
- cognite/neat/app/ui/neat-app/build/static/css/main.72e3d92e.css.map +1 -0
- cognite/neat/app/ui/neat-app/build/static/js/main.5a52cf09.js +3 -0
- cognite/neat/app/ui/neat-app/build/static/js/{main.ec7f72e2.js.LICENSE.txt → main.5a52cf09.js.LICENSE.txt} +0 -9
- cognite/neat/app/ui/neat-app/build/static/js/main.5a52cf09.js.map +1 -0
- cognite/neat/config.py +44 -27
- cognite/neat/exceptions.py +8 -2
- cognite/neat/graph/extractors/_classic_cdf/_assets.py +21 -73
- cognite/neat/graph/extractors/_classic_cdf/_base.py +102 -0
- cognite/neat/graph/extractors/_classic_cdf/_events.py +46 -42
- cognite/neat/graph/extractors/_classic_cdf/_files.py +41 -45
- cognite/neat/graph/extractors/_classic_cdf/_labels.py +75 -52
- cognite/neat/graph/extractors/_classic_cdf/_relationships.py +49 -27
- cognite/neat/graph/extractors/_classic_cdf/_sequences.py +47 -50
- cognite/neat/graph/extractors/_classic_cdf/_timeseries.py +47 -49
- cognite/neat/graph/loaders/_base.py +4 -4
- cognite/neat/graph/loaders/_rdf2asset.py +12 -14
- cognite/neat/graph/loaders/_rdf2dms.py +14 -10
- cognite/neat/graph/queries/_base.py +22 -29
- cognite/neat/graph/queries/_shared.py +1 -1
- cognite/neat/graph/stores/_base.py +19 -11
- cognite/neat/graph/transformers/_rdfpath.py +3 -2
- cognite/neat/issues/__init__.py +16 -0
- cognite/neat/{issues.py → issues/_base.py} +78 -2
- cognite/neat/issues/errors/external.py +21 -0
- cognite/neat/issues/errors/properties.py +75 -0
- cognite/neat/issues/errors/resources.py +123 -0
- cognite/neat/issues/errors/schema.py +0 -0
- cognite/neat/{rules/issues → issues}/formatters.py +9 -9
- cognite/neat/issues/neat_warnings/__init__.py +2 -0
- cognite/neat/issues/neat_warnings/identifier.py +27 -0
- cognite/neat/issues/neat_warnings/models.py +22 -0
- cognite/neat/issues/neat_warnings/properties.py +77 -0
- cognite/neat/issues/neat_warnings/resources.py +125 -0
- cognite/neat/rules/exporters/_rules2dms.py +3 -2
- cognite/neat/rules/exporters/_rules2ontology.py +28 -20
- cognite/neat/rules/exporters/_validation.py +15 -21
- cognite/neat/rules/importers/__init__.py +7 -3
- cognite/neat/rules/importers/_base.py +3 -3
- cognite/neat/rules/importers/_dms2rules.py +39 -18
- cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +44 -53
- cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py +6 -5
- cognite/neat/rules/importers/_rdf/__init__.py +0 -0
- cognite/neat/rules/importers/_rdf/_imf2rules/__init__.py +3 -0
- cognite/neat/rules/importers/_rdf/_imf2rules/_imf2classes.py +82 -0
- cognite/neat/rules/importers/_rdf/_imf2rules/_imf2metadata.py +34 -0
- cognite/neat/rules/importers/_rdf/_imf2rules/_imf2properties.py +123 -0
- cognite/neat/rules/importers/{_owl2rules/_owl2rules.py → _rdf/_imf2rules/_imf2rules.py} +15 -11
- cognite/neat/rules/importers/{_inference2rules.py → _rdf/_inference2rules.py} +1 -1
- cognite/neat/rules/importers/_rdf/_owl2rules/_owl2classes.py +57 -0
- cognite/neat/rules/importers/_rdf/_owl2rules/_owl2metadata.py +68 -0
- cognite/neat/rules/importers/_rdf/_owl2rules/_owl2properties.py +59 -0
- cognite/neat/rules/importers/_rdf/_owl2rules/_owl2rules.py +76 -0
- cognite/neat/rules/importers/_rdf/_shared.py +586 -0
- cognite/neat/rules/importers/_spreadsheet2rules.py +31 -28
- cognite/neat/rules/importers/_yaml2rules.py +2 -1
- cognite/neat/rules/issues/__init__.py +1 -5
- cognite/neat/rules/issues/base.py +2 -21
- cognite/neat/rules/issues/dms.py +20 -134
- cognite/neat/rules/issues/ontology.py +298 -0
- cognite/neat/rules/issues/spreadsheet.py +51 -3
- cognite/neat/rules/issues/tables.py +72 -0
- cognite/neat/rules/models/_rdfpath.py +4 -4
- cognite/neat/rules/models/_types/_field.py +14 -21
- cognite/neat/rules/models/asset/_validation.py +1 -1
- cognite/neat/rules/models/dms/_schema.py +53 -30
- cognite/neat/rules/models/dms/_validation.py +2 -2
- cognite/neat/rules/models/entities.py +3 -0
- cognite/neat/rules/models/information/_rules.py +5 -4
- cognite/neat/rules/models/information/_validation.py +1 -1
- cognite/neat/utils/rdf_.py +17 -9
- cognite/neat/utils/regex_patterns.py +52 -0
- cognite/neat/workflows/steps/lib/current/rules_importer.py +73 -1
- cognite/neat/workflows/steps/lib/current/rules_validator.py +19 -7
- {cognite_neat-0.88.0.dist-info → cognite_neat-0.88.2.dist-info}/METADATA +2 -6
- {cognite_neat-0.88.0.dist-info → cognite_neat-0.88.2.dist-info}/RECORD +85 -72
- cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css.map +0 -1
- cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js +0 -3
- cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.map +0 -1
- cognite/neat/graph/issues/loader.py +0 -104
- cognite/neat/graph/stores/_oxrdflib.py +0 -247
- cognite/neat/rules/exceptions.py +0 -2972
- cognite/neat/rules/importers/_owl2rules/_owl2classes.py +0 -215
- cognite/neat/rules/importers/_owl2rules/_owl2metadata.py +0 -213
- cognite/neat/rules/importers/_owl2rules/_owl2properties.py +0 -203
- cognite/neat/rules/issues/importing.py +0 -408
- cognite/neat/rules/models/_types/_base.py +0 -16
- cognite/neat/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -152
- cognite/neat/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -139
- cognite/neat/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -116
- /cognite/neat/{graph/issues → issues/errors}/__init__.py +0 -0
- /cognite/neat/rules/importers/{_owl2rules → _rdf/_owl2rules}/__init__.py +0 -0
- {cognite_neat-0.88.0.dist-info → cognite_neat-0.88.2.dist-info}/LICENSE +0 -0
- {cognite_neat-0.88.0.dist-info → cognite_neat-0.88.2.dist-info}/WHEEL +0 -0
- {cognite_neat-0.88.0.dist-info → cognite_neat-0.88.2.dist-info}/entry_points.txt +0 -0
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
from abc import ABC
|
|
2
|
-
from dataclasses import dataclass
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from .base import NeatValidationError, ValidationWarning
|
|
6
|
-
|
|
7
|
-
__all__ = [
|
|
8
|
-
"ModelImportWarning",
|
|
9
|
-
"UnknownComponentWarning",
|
|
10
|
-
"UnknownSubComponentWarning",
|
|
11
|
-
"IgnoredComponentWarning",
|
|
12
|
-
"UnknownPropertyWarning",
|
|
13
|
-
"UnknownValueTypeWarning",
|
|
14
|
-
"MissingContainerWarning",
|
|
15
|
-
"MissingContainerPropertyWarning",
|
|
16
|
-
"MultipleDataModelsWarning",
|
|
17
|
-
"UnknownPropertyTypeWarning",
|
|
18
|
-
"FailedToInferValueTypeWarning",
|
|
19
|
-
"MoreThanOneNonAlphanumericCharacterWarning",
|
|
20
|
-
"UnknownContainerConstraintWarning",
|
|
21
|
-
"NoDataModelError",
|
|
22
|
-
"ModelImportError",
|
|
23
|
-
"InvalidComponentError",
|
|
24
|
-
"MissingParentDefinitionError",
|
|
25
|
-
"MissingIdentifierError",
|
|
26
|
-
"UnsupportedPropertyTypeError",
|
|
27
|
-
"APIError",
|
|
28
|
-
"FailedImportWarning",
|
|
29
|
-
]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@dataclass(frozen=True)
|
|
33
|
-
class ModelImportWarning(ValidationWarning, ABC):
|
|
34
|
-
description = "A warning was raised during importing."
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
@dataclass(frozen=True)
|
|
38
|
-
class UnknownComponentWarning(ModelImportWarning):
|
|
39
|
-
description = "Unknown component this will be ignored in the imports."
|
|
40
|
-
fix = "Check if the component is defined in the source file."
|
|
41
|
-
|
|
42
|
-
component_type: str
|
|
43
|
-
instance_name: str | None = None
|
|
44
|
-
instance_id: str | None = None
|
|
45
|
-
|
|
46
|
-
def dump(self) -> dict[str, str | None]:
|
|
47
|
-
output = super().dump()
|
|
48
|
-
output["component_type"] = self.component_type
|
|
49
|
-
output["instance_name"] = self.instance_name
|
|
50
|
-
output["instance_id"] = self.instance_id
|
|
51
|
-
return output
|
|
52
|
-
|
|
53
|
-
def message(self) -> str:
|
|
54
|
-
if self.instance_name:
|
|
55
|
-
prefix = f"Unknown component of type'{self.component_type}' with name '{self.instance_name}'."
|
|
56
|
-
else:
|
|
57
|
-
prefix = f"Unknown component '{self.component_type}'"
|
|
58
|
-
return f"{prefix} This will be ignored in the imports."
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@dataclass(frozen=True)
|
|
62
|
-
class UnknownSubComponentWarning(UnknownComponentWarning):
|
|
63
|
-
sub_component: str | None = None
|
|
64
|
-
|
|
65
|
-
def dump(self) -> dict[str, str | None]:
|
|
66
|
-
output = super().dump()
|
|
67
|
-
output["sub_component"] = self.sub_component
|
|
68
|
-
return output
|
|
69
|
-
|
|
70
|
-
def message(self) -> str:
|
|
71
|
-
if self.instance_name:
|
|
72
|
-
prefix = f"Unknown sub-component of type'{self.component_type}' with name '{self.instance_name}'."
|
|
73
|
-
else:
|
|
74
|
-
prefix = f"Unknown sub-component '{self.component_type}'"
|
|
75
|
-
return f"{prefix} This will be ignored in the imports."
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
@dataclass(frozen=True)
|
|
79
|
-
class IgnoredComponentWarning(ModelImportWarning):
|
|
80
|
-
description = "This will be ignored in the imports."
|
|
81
|
-
fix = "No fix is available. "
|
|
82
|
-
|
|
83
|
-
reason: str
|
|
84
|
-
identifier: str | None = None
|
|
85
|
-
|
|
86
|
-
def dump(self) -> dict[str, str | None]:
|
|
87
|
-
output = super().dump()
|
|
88
|
-
output["reason"] = self.reason
|
|
89
|
-
output["identifier"] = self.identifier
|
|
90
|
-
return output
|
|
91
|
-
|
|
92
|
-
def message(self) -> str:
|
|
93
|
-
if self.identifier:
|
|
94
|
-
prefix = f"Identifier '{self.identifier}.' is ignored."
|
|
95
|
-
else:
|
|
96
|
-
prefix = "This is ignored."
|
|
97
|
-
return f"{prefix} {self.reason}"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
@dataclass(frozen=True)
|
|
101
|
-
class UnknownPropertyWarning(ValidationWarning):
|
|
102
|
-
description = "Unknown property this will be ignored in the imports."
|
|
103
|
-
fix = "Check if the property is defined in the DTDL file."
|
|
104
|
-
|
|
105
|
-
component_type: str
|
|
106
|
-
property_name: str
|
|
107
|
-
instance_name: str | None = None
|
|
108
|
-
instance_id: str | None = None
|
|
109
|
-
|
|
110
|
-
def dump(self) -> dict[str, str | None]:
|
|
111
|
-
output = super().dump()
|
|
112
|
-
output["component_type"] = self.component_type
|
|
113
|
-
output["property_name"] = self.property_name
|
|
114
|
-
output["instance_name"] = self.instance_name
|
|
115
|
-
output["instance_id"] = self.instance_id
|
|
116
|
-
return output
|
|
117
|
-
|
|
118
|
-
def message(self) -> str:
|
|
119
|
-
if self.instance_name:
|
|
120
|
-
prefix = (
|
|
121
|
-
f"Unknown property '{self.property_name}' of component "
|
|
122
|
-
f"'{self.component_type}' with name '{self.instance_name}'."
|
|
123
|
-
)
|
|
124
|
-
else:
|
|
125
|
-
prefix = f"Unknown property '{self.property_name}' of component '{self.component_type}'"
|
|
126
|
-
return f"{prefix} This will be ignored in the imports."
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
@dataclass(frozen=True)
|
|
130
|
-
class UnknownValueTypeWarning(ModelImportWarning):
|
|
131
|
-
description = "Unknown value type. This limits validation done by NEAT. "
|
|
132
|
-
fix = "Set the value type"
|
|
133
|
-
class_id: str
|
|
134
|
-
property_id: str
|
|
135
|
-
|
|
136
|
-
def dump(self) -> dict[str, str]:
|
|
137
|
-
return {"class_id": self.class_id, "property_id": self.property_id}
|
|
138
|
-
|
|
139
|
-
def message(self) -> str:
|
|
140
|
-
return (
|
|
141
|
-
f"Unknown value type for property '{self.property_id}' of class '{self.class_id}'. "
|
|
142
|
-
"This limits validation done by NEAT."
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
@dataclass(frozen=True)
|
|
147
|
-
class MultipleDataModelsWarning(ModelImportWarning):
|
|
148
|
-
description = "Multiple data models detected. This is not supported."
|
|
149
|
-
fix = "Remove the extra data models."
|
|
150
|
-
|
|
151
|
-
data_models: list[str]
|
|
152
|
-
|
|
153
|
-
def message(self) -> str:
|
|
154
|
-
return f"Multiple data models detected: {self.data_models}. Will only import the first one."
|
|
155
|
-
|
|
156
|
-
def dump(self) -> dict[str, list[str]]:
|
|
157
|
-
return {"data_models": self.data_models}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
@dataclass(frozen=True)
|
|
161
|
-
class MissingContainerWarning(ModelImportWarning):
|
|
162
|
-
description = "Missing container definition."
|
|
163
|
-
fix = "Add a container definition."
|
|
164
|
-
|
|
165
|
-
view_id: str
|
|
166
|
-
property_: str
|
|
167
|
-
container_id: str
|
|
168
|
-
|
|
169
|
-
def message(self) -> str:
|
|
170
|
-
return (
|
|
171
|
-
f"Container '{self.container_id}' is missing. "
|
|
172
|
-
f"Will skip property '{self.property_}' of view '{self.view_id}'."
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
def dump(self) -> dict[str, str]:
|
|
176
|
-
return {"view_id": self.view_id, "property": self.property_, "container_id": self.container_id}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
@dataclass(frozen=True)
|
|
180
|
-
class MissingContainerPropertyWarning(ModelImportWarning):
|
|
181
|
-
description = "Missing container property definition."
|
|
182
|
-
fix = "Add a container property definition."
|
|
183
|
-
|
|
184
|
-
view_id: str
|
|
185
|
-
property_: str
|
|
186
|
-
container_id: str
|
|
187
|
-
|
|
188
|
-
def message(self) -> str:
|
|
189
|
-
return (
|
|
190
|
-
f"Container '{self.container_id}' is missing property '{self.property_}'. "
|
|
191
|
-
f"This property will be skipped for view '{self.view_id}'."
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
def dump(self) -> dict[str, str]:
|
|
195
|
-
return {"view_id": self.view_id, "property": self.property_, "container_id": self.container_id}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
@dataclass(frozen=True)
|
|
199
|
-
class UnknownPropertyTypeWarning(ModelImportWarning):
|
|
200
|
-
description = "Unknown property type. This will be ignored in the imports."
|
|
201
|
-
fix = "Set to a supported property type."
|
|
202
|
-
view_id: str
|
|
203
|
-
property_id: str
|
|
204
|
-
property_type: str
|
|
205
|
-
|
|
206
|
-
def message(self) -> str:
|
|
207
|
-
return (
|
|
208
|
-
f"Unknown property type '{self.property_type}' for property '{self.property_id}' "
|
|
209
|
-
f"of view '{self.view_id}'. This will be ignored in the imports."
|
|
210
|
-
)
|
|
211
|
-
|
|
212
|
-
def dump(self) -> dict[str, str]:
|
|
213
|
-
return {"view_id": self.view_id, "property_id": self.property_id, "property_type": self.property_type}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
@dataclass(frozen=True)
|
|
217
|
-
class UnknownContainerConstraintWarning(ModelImportWarning):
|
|
218
|
-
description = "Unknown container constraint. This will be ignored in the imports."
|
|
219
|
-
fix = "Set to a supported container constraint."
|
|
220
|
-
container_id: str
|
|
221
|
-
property_id: str
|
|
222
|
-
constraint: str
|
|
223
|
-
|
|
224
|
-
def message(self) -> str:
|
|
225
|
-
return (
|
|
226
|
-
f"Unknown container constraint '{self.constraint}' for property '{self.property_id}' of container "
|
|
227
|
-
f"'{self.container_id}'. This will be ignored in the imports."
|
|
228
|
-
)
|
|
229
|
-
|
|
230
|
-
def dump(self) -> dict[str, str]:
|
|
231
|
-
return {"container_id": self.container_id, "property_id": self.property_id, "constraint": self.constraint}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
@dataclass(frozen=True)
|
|
235
|
-
class FailedToInferValueTypeWarning(ModelImportWarning):
|
|
236
|
-
description = "Failed to infer value type. This will be ignored in the imports."
|
|
237
|
-
fix = "Set to a supported value type."
|
|
238
|
-
view_id: str
|
|
239
|
-
property_id: str
|
|
240
|
-
|
|
241
|
-
def message(self) -> str:
|
|
242
|
-
return (
|
|
243
|
-
f"Failed to infer value type for property '{self.property_id}' of view '{self.view_id}'. "
|
|
244
|
-
f"This will be ignored in the imports."
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
def dump(self) -> dict[str, str]:
|
|
248
|
-
return {"view_id": self.view_id, "property_id": self.property_id}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
@dataclass(frozen=True)
|
|
252
|
-
class APIWarning(ModelImportWarning):
|
|
253
|
-
description = "An error was raised."
|
|
254
|
-
fix = "No fix is available."
|
|
255
|
-
|
|
256
|
-
error_message: str
|
|
257
|
-
|
|
258
|
-
def message(self) -> str:
|
|
259
|
-
return self.error_message
|
|
260
|
-
|
|
261
|
-
def dump(self) -> dict[str, str]:
|
|
262
|
-
return {"error_message": self.error_message}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
@dataclass(frozen=True)
|
|
266
|
-
class FailedImportWarning(ModelImportWarning):
|
|
267
|
-
description = "Failed to import part of the model."
|
|
268
|
-
fix = "No fix is available."
|
|
269
|
-
|
|
270
|
-
identifier: set[str]
|
|
271
|
-
|
|
272
|
-
def message(self) -> str:
|
|
273
|
-
return f"Failed to import: {self.identifier}. This will be skipped."
|
|
274
|
-
|
|
275
|
-
def dump(self) -> dict[str, Any]:
|
|
276
|
-
return {"identifier": list(self.identifier)}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
@dataclass(frozen=True)
|
|
280
|
-
class MoreThanOneNonAlphanumericCharacterWarning(ModelImportWarning):
|
|
281
|
-
description = """This warning is raised when doing regex validation of strings which either represent class ids,
|
|
282
|
-
property ids, prefix, data model name, that contain more than one non-alphanumeric character,
|
|
283
|
-
such as for example '_' or '-'."""
|
|
284
|
-
|
|
285
|
-
field_name: str
|
|
286
|
-
value: str
|
|
287
|
-
|
|
288
|
-
def message(self) -> str:
|
|
289
|
-
return f"Field {self.field_name} with value {self.value} contains more than one non-alphanumeric character!"
|
|
290
|
-
|
|
291
|
-
def dump(self) -> dict[str, str]:
|
|
292
|
-
return {"field_name": self.field_name, "value": self.value}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
@dataclass(frozen=True)
|
|
296
|
-
class ModelImportError(NeatValidationError, ABC):
|
|
297
|
-
description = "An error was raised during importing."
|
|
298
|
-
fix = "No fix is available."
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
@dataclass(frozen=True)
|
|
302
|
-
class NoDataModelError(ModelImportError):
|
|
303
|
-
description = "No data model found.."
|
|
304
|
-
fix = "Check if the data model exists in the source."
|
|
305
|
-
|
|
306
|
-
error_message: str
|
|
307
|
-
|
|
308
|
-
def message(self) -> str:
|
|
309
|
-
return self.error_message
|
|
310
|
-
|
|
311
|
-
def dump(self) -> dict[str, str]:
|
|
312
|
-
return {"error_message": self.error_message}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
@dataclass(frozen=True)
|
|
316
|
-
class APIError(ModelImportError):
|
|
317
|
-
description = "An error was raised during importing."
|
|
318
|
-
fix = "No fix is available."
|
|
319
|
-
|
|
320
|
-
error_message: str
|
|
321
|
-
|
|
322
|
-
def message(self) -> str:
|
|
323
|
-
return self.error_message
|
|
324
|
-
|
|
325
|
-
def dump(self) -> dict[str, str]:
|
|
326
|
-
return {"error_message": self.error_message}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
@dataclass(frozen=True)
|
|
330
|
-
class InvalidComponentError(ModelImportError, ABC):
|
|
331
|
-
description = "This is a base class for all errors related invalid component definitions"
|
|
332
|
-
fix = "Check if the component is defined in the DTDL file."
|
|
333
|
-
|
|
334
|
-
component_type: str
|
|
335
|
-
instance_name: str | None = None
|
|
336
|
-
instance_id: str | None = None
|
|
337
|
-
|
|
338
|
-
def dump(self) -> dict[str, str | None]:
|
|
339
|
-
output = super().dump()
|
|
340
|
-
output["component_type"] = self.component_type
|
|
341
|
-
output["instance_name"] = self.instance_name
|
|
342
|
-
output["instance_id"] = self.instance_id
|
|
343
|
-
return output
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
@dataclass(frozen=True)
|
|
347
|
-
class MissingParentDefinitionError(InvalidComponentError):
|
|
348
|
-
description = "The parent component is missing"
|
|
349
|
-
fix = "Check if the parent component is defined in the DTDL file."
|
|
350
|
-
|
|
351
|
-
def message(self) -> str:
|
|
352
|
-
if self.instance_name:
|
|
353
|
-
return f"Parent component '{self.component_type}' with name '{self.instance_name}' is missing."
|
|
354
|
-
else:
|
|
355
|
-
return f"Parent component '{self.component_type}' is missing."
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
@dataclass(frozen=True)
|
|
359
|
-
class MissingIdentifierError(InvalidComponentError):
|
|
360
|
-
description = "The identifier is missing"
|
|
361
|
-
fix = "Check if the identifier is defined in the DTDL file."
|
|
362
|
-
|
|
363
|
-
component_type: str
|
|
364
|
-
instance_name: str | None = None
|
|
365
|
-
|
|
366
|
-
def dump(self) -> dict[str, str | None]:
|
|
367
|
-
output = super().dump()
|
|
368
|
-
output["component_type"] = self.component_type
|
|
369
|
-
output["instance_name"] = self.instance_name
|
|
370
|
-
return output
|
|
371
|
-
|
|
372
|
-
def message(self) -> str:
|
|
373
|
-
if self.instance_name:
|
|
374
|
-
return f"Identifier for component '{self.component_type}' with name '{self.instance_name}' is missing."
|
|
375
|
-
else:
|
|
376
|
-
return f"Identifier for component '{self.component_type}' is missing."
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
@dataclass(frozen=True)
|
|
380
|
-
class UnsupportedPropertyTypeError(ModelImportError):
|
|
381
|
-
description = "The property type is not supported"
|
|
382
|
-
fix = "Check if the property type is defined in the DTDL file."
|
|
383
|
-
component_type: str
|
|
384
|
-
property_name: str
|
|
385
|
-
property_type: str
|
|
386
|
-
instance_name: str | None = None
|
|
387
|
-
instance_id: str | None = None
|
|
388
|
-
|
|
389
|
-
def dump(self) -> dict[str, str | None]:
|
|
390
|
-
output = super().dump()
|
|
391
|
-
output["component_type"] = self.component_type
|
|
392
|
-
output["property_name"] = self.property_name
|
|
393
|
-
output["property_type"] = self.property_type
|
|
394
|
-
output["instance_name"] = self.instance_name
|
|
395
|
-
output["instance_id"] = self.instance_id
|
|
396
|
-
return output
|
|
397
|
-
|
|
398
|
-
def message(self) -> str:
|
|
399
|
-
if self.instance_name:
|
|
400
|
-
return (
|
|
401
|
-
f"Property '{self.property_name}' of type '{self.property_type}' "
|
|
402
|
-
f"of instance '{self.instance_name}' ({self.component_type}) is not supported."
|
|
403
|
-
)
|
|
404
|
-
else:
|
|
405
|
-
return (
|
|
406
|
-
f"Property '{self.property_name}' of type '{self.property_type}' "
|
|
407
|
-
f"of instance '{self.instance_id}' ({self.component_type}) is not supported."
|
|
408
|
-
)
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX = r"([_-]{2,})"
|
|
2
|
-
PREFIX_COMPLIANCE_REGEX = r"^([a-zA-Z]+)([a-zA-Z0-9]*[_-]{0,1}[a-zA-Z0-9_-]*)([a-zA-Z0-9]*)$"
|
|
3
|
-
|
|
4
|
-
VIEW_ID_COMPLIANCE_REGEX = (
|
|
5
|
-
r"(?!^(Query|Mutation|Subscription|String|Int32|Int64|Int|Float32|Float64|Float|"
|
|
6
|
-
r"Timestamp|JSONObject|Date|Numeric|Boolean|PageInfo|File|Sequence|TimeSeries)$)"
|
|
7
|
-
r"(^[a-zA-Z][a-zA-Z0-9_]{0,253}[a-zA-Z0-9]?$)"
|
|
8
|
-
)
|
|
9
|
-
DMS_PROPERTY_ID_COMPLIANCE_REGEX = (
|
|
10
|
-
r"(?!^(space|externalId|createdTime|lastUpdatedTime|deletedTime|edge_id|"
|
|
11
|
-
r"node_id|project_id|property_group|seq|tg_table_name|extensions)$)"
|
|
12
|
-
r"(^[a-zA-Z][a-zA-Z0-9_]{0,253}[a-zA-Z0-9]?$)"
|
|
13
|
-
)
|
|
14
|
-
CLASS_ID_COMPLIANCE_REGEX = r"(?!^(Class|class)$)(^[a-zA-Z][a-zA-Z0-9._-]{0,253}[a-zA-Z0-9]?$)"
|
|
15
|
-
PROPERTY_ID_COMPLIANCE_REGEX = r"^(\*)|(?!^(Property|property)$)(^[a-zA-Z][a-zA-Z0-9._-]{0,253}[a-zA-Z0-9]?$)"
|
|
16
|
-
VERSION_COMPLIANCE_REGEX = r"^[a-zA-Z0-9]([.a-zA-Z0-9_-]{0,41}[a-zA-Z0-9])?$"
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
configs: []
|
|
2
|
-
description: null
|
|
3
|
-
implementation_module: null
|
|
4
|
-
name: Export Rules to Ontology
|
|
5
|
-
steps:
|
|
6
|
-
- complex_configs: {}
|
|
7
|
-
configs: {}
|
|
8
|
-
description: null
|
|
9
|
-
enabled: true
|
|
10
|
-
id: step_trigger
|
|
11
|
-
label: Workflow Trigger
|
|
12
|
-
max_retries: 0
|
|
13
|
-
method: null
|
|
14
|
-
params: {}
|
|
15
|
-
retry_delay: 3
|
|
16
|
-
stype: http_trigger
|
|
17
|
-
system_component_id: null
|
|
18
|
-
transition_to:
|
|
19
|
-
- step_import_excel_rules
|
|
20
|
-
trigger: true
|
|
21
|
-
ui_config:
|
|
22
|
-
pos_x: 480
|
|
23
|
-
pos_y: 45
|
|
24
|
-
- complex_configs: {}
|
|
25
|
-
configs:
|
|
26
|
-
file_name: skos-rules.xlsx
|
|
27
|
-
validation_report_file: rules_validation_report.txt
|
|
28
|
-
validation_report_storage_dir: rules_validation_report
|
|
29
|
-
version: ""
|
|
30
|
-
description: null
|
|
31
|
-
enabled: true
|
|
32
|
-
id: step_import_excel_rules
|
|
33
|
-
label: Import Excel Rules
|
|
34
|
-
max_retries: 0
|
|
35
|
-
method: ImportExcelToRules
|
|
36
|
-
params: {}
|
|
37
|
-
retry_delay: 3
|
|
38
|
-
stype: stdstep
|
|
39
|
-
system_component_id: null
|
|
40
|
-
transition_to:
|
|
41
|
-
- step_export_rules_to_ontology
|
|
42
|
-
trigger: false
|
|
43
|
-
ui_config:
|
|
44
|
-
pos_x: 481
|
|
45
|
-
pos_y: 120
|
|
46
|
-
- complex_configs: {}
|
|
47
|
-
configs:
|
|
48
|
-
ontology_file_path: staging/ontology.ttl
|
|
49
|
-
description: null
|
|
50
|
-
enabled: true
|
|
51
|
-
id: step_export_rules_to_ontology
|
|
52
|
-
label: Export Rules To Ontology
|
|
53
|
-
max_retries: 0
|
|
54
|
-
method: ExportRulesToOntology
|
|
55
|
-
params: {}
|
|
56
|
-
retry_delay: 3
|
|
57
|
-
stype: stdstep
|
|
58
|
-
system_component_id: null
|
|
59
|
-
transition_to:
|
|
60
|
-
- step_export_rules_to_shacle
|
|
61
|
-
trigger: false
|
|
62
|
-
ui_config:
|
|
63
|
-
pos_x: 478
|
|
64
|
-
pos_y: 191
|
|
65
|
-
- complex_configs: {}
|
|
66
|
-
configs:
|
|
67
|
-
db_server_api_root_url: ""
|
|
68
|
-
disk_store_dir: ontology-graph-store
|
|
69
|
-
graph_name: source
|
|
70
|
-
init_procedure: reset
|
|
71
|
-
sparql_query_url: ""
|
|
72
|
-
sparql_update_url: ""
|
|
73
|
-
store_type: oxigraph
|
|
74
|
-
description: null
|
|
75
|
-
enabled: true
|
|
76
|
-
id: step_configure_graph_store
|
|
77
|
-
label: Configure Graph Store
|
|
78
|
-
max_retries: 0
|
|
79
|
-
method: ConfigureGraphStore
|
|
80
|
-
params: {}
|
|
81
|
-
retry_delay: 3
|
|
82
|
-
stype: stdstep
|
|
83
|
-
system_component_id: null
|
|
84
|
-
transition_to:
|
|
85
|
-
- step_load_ontology_to_graph_store
|
|
86
|
-
trigger: false
|
|
87
|
-
ui_config:
|
|
88
|
-
pos_x: 479
|
|
89
|
-
pos_y: 383
|
|
90
|
-
- complex_configs: {}
|
|
91
|
-
configs:
|
|
92
|
-
add_base_iri: "True"
|
|
93
|
-
file_path: staging/ontology.ttl
|
|
94
|
-
mime_type: text/turtle
|
|
95
|
-
description: null
|
|
96
|
-
enabled: true
|
|
97
|
-
id: step_load_ontology_to_graph_store
|
|
98
|
-
label: Load Ontology To Graph Store
|
|
99
|
-
max_retries: 0
|
|
100
|
-
method: ExtractGraphFromRdfFile
|
|
101
|
-
params: {}
|
|
102
|
-
retry_delay: 3
|
|
103
|
-
stype: stdstep
|
|
104
|
-
system_component_id: null
|
|
105
|
-
transition_to:
|
|
106
|
-
- step_load_shacl_to_graph
|
|
107
|
-
trigger: false
|
|
108
|
-
ui_config:
|
|
109
|
-
pos_x: 479
|
|
110
|
-
pos_y: 455
|
|
111
|
-
- complex_configs: {}
|
|
112
|
-
configs:
|
|
113
|
-
file_name: shacl.ttl
|
|
114
|
-
shacl_file_path: staging/shacl.ttl
|
|
115
|
-
storage_dir: staging
|
|
116
|
-
description: null
|
|
117
|
-
enabled: true
|
|
118
|
-
id: step_export_rules_to_shacle
|
|
119
|
-
label: Export Rules to Shacl
|
|
120
|
-
max_retries: 0
|
|
121
|
-
method: ExportRulesToSHACL
|
|
122
|
-
params: {}
|
|
123
|
-
retry_delay: 3
|
|
124
|
-
stype: stdstep
|
|
125
|
-
system_component_id: null
|
|
126
|
-
transition_to:
|
|
127
|
-
- step_configure_graph_store
|
|
128
|
-
trigger: false
|
|
129
|
-
ui_config:
|
|
130
|
-
pos_x: 480
|
|
131
|
-
pos_y: 291
|
|
132
|
-
- complex_configs: {}
|
|
133
|
-
configs:
|
|
134
|
-
add_base_iri: "True"
|
|
135
|
-
file_path: staging/shacl.ttl
|
|
136
|
-
mime_type: text/turtle
|
|
137
|
-
description: null
|
|
138
|
-
enabled: true
|
|
139
|
-
id: step_load_shacl_to_graph
|
|
140
|
-
label: Load SHACL to Graph Store
|
|
141
|
-
max_retries: 0
|
|
142
|
-
method: ExtractGraphFromRdfFile
|
|
143
|
-
params: {}
|
|
144
|
-
retry_delay: 3
|
|
145
|
-
stype: stdstep
|
|
146
|
-
system_component_id: null
|
|
147
|
-
transition_to: []
|
|
148
|
-
trigger: false
|
|
149
|
-
ui_config:
|
|
150
|
-
pos_x: 475
|
|
151
|
-
pos_y: 542
|
|
152
|
-
system_components: []
|