cognite-neat 0.98.0__py3-none-any.whl → 0.99.1__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/_client/__init__.py +4 -0
- cognite/neat/_client/_api/data_modeling_loaders.py +585 -0
- cognite/neat/_client/_api/schema.py +111 -0
- cognite/neat/_client/_api_client.py +17 -0
- cognite/neat/_client/data_classes/__init__.py +0 -0
- cognite/neat/{_utils/cdf/data_classes.py → _client/data_classes/data_modeling.py} +8 -135
- cognite/neat/_client/data_classes/schema.py +495 -0
- cognite/neat/_constants.py +27 -4
- cognite/neat/_graph/_shared.py +14 -15
- cognite/neat/_graph/extractors/_classic_cdf/_assets.py +14 -154
- cognite/neat/_graph/extractors/_classic_cdf/_base.py +154 -7
- cognite/neat/_graph/extractors/_classic_cdf/_classic.py +25 -14
- cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py +17 -92
- cognite/neat/_graph/extractors/_classic_cdf/_events.py +13 -162
- cognite/neat/_graph/extractors/_classic_cdf/_files.py +15 -179
- cognite/neat/_graph/extractors/_classic_cdf/_labels.py +32 -100
- cognite/neat/_graph/extractors/_classic_cdf/_relationships.py +27 -178
- cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +14 -139
- cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py +15 -173
- cognite/neat/_graph/extractors/_rdf_file.py +6 -7
- cognite/neat/_graph/loaders/_rdf2dms.py +2 -2
- cognite/neat/_graph/queries/_base.py +17 -1
- cognite/neat/_graph/transformers/_classic_cdf.py +74 -147
- cognite/neat/_graph/transformers/_prune_graph.py +1 -1
- cognite/neat/_graph/transformers/_rdfpath.py +1 -1
- cognite/neat/_issues/_base.py +26 -17
- cognite/neat/_issues/errors/__init__.py +4 -2
- cognite/neat/_issues/errors/_external.py +7 -0
- cognite/neat/_issues/errors/_properties.py +2 -7
- cognite/neat/_issues/errors/_resources.py +1 -1
- cognite/neat/_issues/warnings/__init__.py +8 -0
- cognite/neat/_issues/warnings/_external.py +16 -0
- cognite/neat/_issues/warnings/_properties.py +16 -0
- cognite/neat/_issues/warnings/_resources.py +26 -2
- cognite/neat/_issues/warnings/user_modeling.py +4 -4
- cognite/neat/_rules/_constants.py +8 -11
- cognite/neat/_rules/analysis/_base.py +8 -4
- cognite/neat/_rules/exporters/_base.py +3 -4
- cognite/neat/_rules/exporters/_rules2dms.py +33 -46
- cognite/neat/_rules/importers/__init__.py +1 -3
- cognite/neat/_rules/importers/_base.py +1 -1
- cognite/neat/_rules/importers/_dms2rules.py +6 -29
- cognite/neat/_rules/importers/_rdf/__init__.py +5 -0
- cognite/neat/_rules/importers/_rdf/_base.py +34 -11
- cognite/neat/_rules/importers/_rdf/_imf2rules.py +91 -0
- cognite/neat/_rules/importers/_rdf/_inference2rules.py +43 -35
- cognite/neat/_rules/importers/_rdf/_owl2rules.py +80 -0
- cognite/neat/_rules/importers/_rdf/_shared.py +138 -441
- cognite/neat/_rules/models/__init__.py +1 -1
- cognite/neat/_rules/models/_base_rules.py +22 -12
- cognite/neat/_rules/models/dms/__init__.py +4 -2
- cognite/neat/_rules/models/dms/_exporter.py +45 -48
- cognite/neat/_rules/models/dms/_rules.py +20 -17
- cognite/neat/_rules/models/dms/_rules_input.py +52 -8
- cognite/neat/_rules/models/dms/_validation.py +391 -119
- cognite/neat/_rules/models/entities/_single_value.py +32 -4
- cognite/neat/_rules/models/information/__init__.py +2 -0
- cognite/neat/_rules/models/information/_rules.py +0 -67
- cognite/neat/_rules/models/information/_validation.py +9 -9
- cognite/neat/_rules/models/mapping/__init__.py +2 -3
- cognite/neat/_rules/models/mapping/_classic2core.py +36 -146
- cognite/neat/_rules/models/mapping/_classic2core.yaml +343 -0
- cognite/neat/_rules/transformers/__init__.py +2 -2
- cognite/neat/_rules/transformers/_converters.py +110 -11
- cognite/neat/_rules/transformers/_mapping.py +105 -30
- cognite/neat/_rules/transformers/_pipelines.py +1 -1
- cognite/neat/_rules/transformers/_verification.py +31 -3
- cognite/neat/_session/_base.py +24 -8
- cognite/neat/_session/_drop.py +35 -0
- cognite/neat/_session/_inspect.py +17 -5
- cognite/neat/_session/_mapping.py +39 -0
- cognite/neat/_session/_prepare.py +219 -23
- cognite/neat/_session/_read.py +49 -12
- cognite/neat/_session/_to.py +8 -5
- cognite/neat/_session/exceptions.py +4 -0
- cognite/neat/_store/_base.py +27 -24
- cognite/neat/_utils/rdf_.py +34 -5
- cognite/neat/_version.py +1 -1
- cognite/neat/_workflows/steps/lib/current/rules_exporter.py +5 -88
- cognite/neat/_workflows/steps/lib/current/rules_importer.py +3 -14
- cognite/neat/_workflows/steps/lib/current/rules_validator.py +6 -7
- {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/METADATA +3 -3
- {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/RECORD +87 -92
- cognite/neat/_rules/importers/_rdf/_imf2rules/__init__.py +0 -3
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2classes.py +0 -86
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2metadata.py +0 -29
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2properties.py +0 -130
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2rules.py +0 -154
- cognite/neat/_rules/importers/_rdf/_owl2rules/__init__.py +0 -3
- cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2classes.py +0 -58
- cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2metadata.py +0 -65
- cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2properties.py +0 -59
- cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2rules.py +0 -39
- cognite/neat/_rules/models/dms/_schema.py +0 -1101
- cognite/neat/_rules/models/mapping/_base.py +0 -131
- cognite/neat/_utils/cdf/loaders/__init__.py +0 -25
- cognite/neat/_utils/cdf/loaders/_base.py +0 -54
- cognite/neat/_utils/cdf/loaders/_data_modeling.py +0 -339
- cognite/neat/_utils/cdf/loaders/_ingestion.py +0 -167
- /cognite/neat/{_utils/cdf → _client/_api}/__init__.py +0 -0
- {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/LICENSE +0 -0
- {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/WHEEL +0 -0
- {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/entry_points.txt +0 -0
|
@@ -2,6 +2,7 @@ import time
|
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
from typing import ClassVar, Literal, cast
|
|
4
4
|
|
|
5
|
+
from cognite.neat._client import NeatClient
|
|
5
6
|
from cognite.neat._issues.errors import WorkflowStepNotInitializedError
|
|
6
7
|
from cognite.neat._rules import exporters
|
|
7
8
|
from cognite.neat._rules._shared import DMSRules, InformationRules, VerifiedRules
|
|
@@ -20,7 +21,6 @@ __all__ = [
|
|
|
20
21
|
"RulesToOntology",
|
|
21
22
|
"RulesToSHACL",
|
|
22
23
|
"RulesToSemanticDataModel",
|
|
23
|
-
"RulesToCDFTransformations",
|
|
24
24
|
"DeleteDataModelFromCDF",
|
|
25
25
|
]
|
|
26
26
|
|
|
@@ -100,7 +100,7 @@ class DeleteDataModelFromCDF(Step):
|
|
|
100
100
|
|
|
101
101
|
report_lines = ["# Data Model Deletion from CDF\n\n"]
|
|
102
102
|
errors = []
|
|
103
|
-
for result in dms_exporter.delete_from_cdf(rules=dms_rules, client=cdf_client, dry_run=dry_run):
|
|
103
|
+
for result in dms_exporter.delete_from_cdf(rules=dms_rules, client=NeatClient(cdf_client), dry_run=dry_run):
|
|
104
104
|
report_lines.append(str(result))
|
|
105
105
|
errors.extend(result.error_messages)
|
|
106
106
|
|
|
@@ -220,7 +220,9 @@ class RulesToDMS(Step):
|
|
|
220
220
|
|
|
221
221
|
report_lines = ["# DMS Schema Export to CDF\n\n"]
|
|
222
222
|
errors = []
|
|
223
|
-
for result in dms_exporter.export_to_cdf_iterable(
|
|
223
|
+
for result in dms_exporter.export_to_cdf_iterable(
|
|
224
|
+
rules=dms_rules, client=NeatClient(cdf_client), dry_run=dry_run
|
|
225
|
+
):
|
|
224
226
|
report_lines.append(str(result))
|
|
225
227
|
errors.extend(result.error_messages)
|
|
226
228
|
|
|
@@ -529,91 +531,6 @@ class RulesToSemanticDataModel(Step):
|
|
|
529
531
|
return FlowMessage(output_text=output_text)
|
|
530
532
|
|
|
531
533
|
|
|
532
|
-
class RulesToCDFTransformations(Step):
|
|
533
|
-
description = "This step exports transformations and RAW tables to populate a data model in CDF"
|
|
534
|
-
version = "private-alpha"
|
|
535
|
-
category = CATEGORY
|
|
536
|
-
configurables: ClassVar[list[Configurable]] = [
|
|
537
|
-
Configurable(
|
|
538
|
-
name="Dry run",
|
|
539
|
-
value="False",
|
|
540
|
-
label=("Whether to perform a dry run of the export. "),
|
|
541
|
-
options=["True", "False"],
|
|
542
|
-
),
|
|
543
|
-
Configurable(
|
|
544
|
-
name="Instance space",
|
|
545
|
-
value="",
|
|
546
|
-
label=(
|
|
547
|
-
"The space to use for the transformations instances. If provided, "
|
|
548
|
-
"the transformations will be set to populate"
|
|
549
|
-
"this space. If not provided, the space from the input rules will be used."
|
|
550
|
-
),
|
|
551
|
-
),
|
|
552
|
-
]
|
|
553
|
-
|
|
554
|
-
def run(self, rules: MultiRuleData, cdf_client: CogniteClient) -> FlowMessage: # type: ignore[override]
|
|
555
|
-
if self.configs is None or self.data_store_path is None:
|
|
556
|
-
raise WorkflowStepNotInitializedError(type(self).__name__)
|
|
557
|
-
|
|
558
|
-
input_rules = rules.dms or rules.information
|
|
559
|
-
if input_rules is None:
|
|
560
|
-
return FlowMessage(
|
|
561
|
-
error_text="Missing DMS or Information rules in the input data! "
|
|
562
|
-
"Please ensure that a DMS or Information rules is provided!",
|
|
563
|
-
step_execution_status=StepExecutionStatus.ABORT_AND_FAIL,
|
|
564
|
-
)
|
|
565
|
-
if isinstance(input_rules, DMSRules):
|
|
566
|
-
dms_rules = input_rules
|
|
567
|
-
elif isinstance(input_rules, InformationRules):
|
|
568
|
-
dms_rules = InformationToDMS().transform(input_rules).rules
|
|
569
|
-
else:
|
|
570
|
-
raise NotImplementedError(f"Unsupported rules type {type(input_rules)}")
|
|
571
|
-
|
|
572
|
-
instance_space = self.configs.get("Instance space") or dms_rules.metadata.space
|
|
573
|
-
dry_run = self.configs.get("Dry run", "False") == "True"
|
|
574
|
-
dms_exporter = exporters.DMSExporter(
|
|
575
|
-
export_pipeline=True, instance_space=instance_space, export_components=["spaces"]
|
|
576
|
-
)
|
|
577
|
-
output_dir = self.config.staging_path
|
|
578
|
-
output_dir.mkdir(parents=True, exist_ok=True)
|
|
579
|
-
file_name = dms_rules.metadata.external_id.replace(":", "_")
|
|
580
|
-
schema_zip = f"{file_name}_pipeline.zip"
|
|
581
|
-
schema_full_path = output_dir / schema_zip
|
|
582
|
-
|
|
583
|
-
dms_exporter.export_to_file(dms_rules, schema_full_path)
|
|
584
|
-
|
|
585
|
-
report_lines = ["# DMS Schema Export to CDF\n\n"]
|
|
586
|
-
errors = []
|
|
587
|
-
for result in dms_exporter.export_to_cdf_iterable(rules=dms_rules, client=cdf_client, dry_run=dry_run):
|
|
588
|
-
report_lines.append(str(result))
|
|
589
|
-
errors.extend(result.error_messages)
|
|
590
|
-
|
|
591
|
-
report_lines.append("\n\n# ERRORS\n\n")
|
|
592
|
-
report_lines.extend(errors)
|
|
593
|
-
|
|
594
|
-
output_dir = self.config.staging_path
|
|
595
|
-
output_dir.mkdir(parents=True, exist_ok=True)
|
|
596
|
-
report_file = "pipeline_creation_report.txt"
|
|
597
|
-
report_full_path = output_dir / report_file
|
|
598
|
-
report_full_path.write_text("\n".join(report_lines))
|
|
599
|
-
|
|
600
|
-
output_text = (
|
|
601
|
-
"<p></p>"
|
|
602
|
-
"Download Pipeline Export "
|
|
603
|
-
f'<a href="/data/staging/{report_file}?{time.time()}" '
|
|
604
|
-
f'target="_blank">Report</a>'
|
|
605
|
-
"<p></p>"
|
|
606
|
-
"Download Pipeline exported schema"
|
|
607
|
-
f'- <a href="/data/staging/{schema_zip}?{time.time()}" '
|
|
608
|
-
f'target="_blank">{schema_zip}</a>'
|
|
609
|
-
)
|
|
610
|
-
|
|
611
|
-
if errors:
|
|
612
|
-
return FlowMessage(error_text=output_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
|
|
613
|
-
else:
|
|
614
|
-
return FlowMessage(output_text=output_text)
|
|
615
|
-
|
|
616
|
-
|
|
617
534
|
def _get_default_file_name(rules: MultiRuleData, file_category: str = "ontology", extension: str = "ttl") -> str:
|
|
618
535
|
name = rules.information.metadata.prefix if rules.information else cast(DMSRules, rules.dms).metadata.space
|
|
619
536
|
version = rules.information.metadata.version if rules.information else cast(DMSRules, rules.dms).metadata.version
|
|
@@ -3,8 +3,8 @@ from pathlib import Path
|
|
|
3
3
|
from typing import ClassVar
|
|
4
4
|
|
|
5
5
|
from cognite.client import CogniteClient
|
|
6
|
-
from cognite.client.data_classes.data_modeling import DataModelId
|
|
7
6
|
|
|
7
|
+
from cognite.neat._client import NeatClient
|
|
8
8
|
from cognite.neat._issues.errors import WorkflowStepNotInitializedError
|
|
9
9
|
from cognite.neat._issues.formatters import FORMATTER_BY_NAME
|
|
10
10
|
from cognite.neat._rules import importers
|
|
@@ -287,19 +287,8 @@ class DMSToRules(Step):
|
|
|
287
287
|
f"or 'my_space:my_data_model', failed to parse space from {datamodel_id_str}"
|
|
288
288
|
)
|
|
289
289
|
return FlowMessage(error_text=error_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
if ref_datamodel_str:
|
|
293
|
-
ref_model = DataModelEntity.load(ref_datamodel_str)
|
|
294
|
-
if isinstance(ref_model, DMSUnknownEntity):
|
|
295
|
-
error_text = (
|
|
296
|
-
f"Reference data model id should be in the format 'my_space:my_data_model(version=1)' "
|
|
297
|
-
f"or 'my_space:my_data_model', failed to parse space from {ref_datamodel_str}"
|
|
298
|
-
)
|
|
299
|
-
return FlowMessage(error_text=error_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
|
|
300
|
-
ref_model_id = ref_model.as_id()
|
|
301
|
-
|
|
302
|
-
dms_importer = importers.DMSImporter.from_data_model_id(cdf_client, datamodel_entity.as_id(), ref_model_id)
|
|
290
|
+
|
|
291
|
+
dms_importer = importers.DMSImporter.from_data_model_id(NeatClient(cdf_client), datamodel_entity.as_id())
|
|
303
292
|
|
|
304
293
|
# if role is None, it will be inferred from the rules file
|
|
305
294
|
role = self.configs.get("Role")
|
|
@@ -5,11 +5,13 @@ from typing import ClassVar
|
|
|
5
5
|
|
|
6
6
|
from cognite.client import CogniteClient
|
|
7
7
|
|
|
8
|
+
from cognite.neat._client import NeatClient
|
|
9
|
+
from cognite.neat._client._api.data_modeling_loaders import ViewLoader
|
|
8
10
|
from cognite.neat._issues import NeatIssueList
|
|
9
11
|
from cognite.neat._issues.errors import ResourceNotFoundError, WorkflowStepNotInitializedError
|
|
10
12
|
from cognite.neat._issues.formatters import FORMATTER_BY_NAME
|
|
11
13
|
from cognite.neat._rules.models import DMSRules
|
|
12
|
-
from cognite.neat.
|
|
14
|
+
from cognite.neat._rules.models.dms import DMSValidation
|
|
13
15
|
from cognite.neat._workflows.model import FlowMessage, StepExecutionStatus
|
|
14
16
|
from cognite.neat._workflows.steps.data_contracts import MultiRuleData
|
|
15
17
|
from cognite.neat._workflows.steps.step_model import Configurable, Step
|
|
@@ -50,10 +52,7 @@ class ValidateRulesAgainstCDF(Step):
|
|
|
50
52
|
)
|
|
51
53
|
dms_rules = rules.dms
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
errors = schema.validate()
|
|
55
|
-
if not errors:
|
|
56
|
-
return FlowMessage(output_text="Rules are complete and valid. No need to fetch from CDF.")
|
|
55
|
+
errors = DMSValidation(dms_rules, NeatClient(cdf_client)).validate()
|
|
57
56
|
|
|
58
57
|
missing_spaces = [
|
|
59
58
|
error.identifier
|
|
@@ -75,7 +74,7 @@ class ValidateRulesAgainstCDF(Step):
|
|
|
75
74
|
retrieved_containers = cdf_client.data_modeling.containers.retrieve(missing_containers).as_write()
|
|
76
75
|
# Converting read format of views to write format requires to account for parents (implements)
|
|
77
76
|
# Thus we use the loader to convert the views to write format.
|
|
78
|
-
view_loader = ViewLoader(cdf_client)
|
|
77
|
+
view_loader = ViewLoader(NeatClient(cdf_client))
|
|
79
78
|
retrieved_views = [
|
|
80
79
|
view_loader.as_write(view) for view in cdf_client.data_modeling.views.retrieve(missing_views)
|
|
81
80
|
]
|
|
@@ -84,11 +83,11 @@ class ValidateRulesAgainstCDF(Step):
|
|
|
84
83
|
f"and {len(retrieved_views)} views from CDF."
|
|
85
84
|
)
|
|
86
85
|
|
|
86
|
+
schema = dms_rules.as_schema()
|
|
87
87
|
schema.spaces.update({space.space: space for space in retrieved_spaces})
|
|
88
88
|
schema.containers.update({container.as_id(): container for container in retrieved_containers})
|
|
89
89
|
schema.views.update({view.as_id(): view for view in retrieved_views})
|
|
90
90
|
|
|
91
|
-
errors = schema.validate()
|
|
92
91
|
if errors:
|
|
93
92
|
output_dir = self.data_store_path / Path("staging")
|
|
94
93
|
report_writer = FORMATTER_BY_NAME[self.configs["Report Formatter"]]()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.99.1
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Home-page: https://cognite-neat.readthedocs-hosted.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -41,13 +41,13 @@ Requires-Dist: mkdocs-material-extensions ; extra == "docs"
|
|
|
41
41
|
Requires-Dist: mkdocstrings[python] ; extra == "docs"
|
|
42
42
|
Requires-Dist: networkx (>=3.4.2,<4.0.0)
|
|
43
43
|
Requires-Dist: openpyxl
|
|
44
|
-
Requires-Dist: oxrdflib[oxigraph] (>=0.
|
|
44
|
+
Requires-Dist: oxrdflib[oxigraph] (>=0.4.0,<0.5.0) ; extra == "oxi" or extra == "all"
|
|
45
45
|
Requires-Dist: packaging (>=22.0,<25.0)
|
|
46
46
|
Requires-Dist: pandas
|
|
47
47
|
Requires-Dist: prometheus-client (>=0,<1) ; extra == "service" or extra == "all"
|
|
48
48
|
Requires-Dist: pydantic (>=2,<3)
|
|
49
49
|
Requires-Dist: pymdown-extensions ; extra == "docs"
|
|
50
|
-
Requires-Dist: pyoxigraph (==0.3
|
|
50
|
+
Requires-Dist: pyoxigraph (==0.4.3) ; extra == "oxi" or extra == "all"
|
|
51
51
|
Requires-Dist: python-multipart (==0.0.9) ; extra == "service" or extra == "all"
|
|
52
52
|
Requires-Dist: pyvis (>=0.3.2,<0.4.0)
|
|
53
53
|
Requires-Dist: rdflib
|
|
@@ -71,10 +71,18 @@ cognite/neat/_app/ui/neat-app/src/views/ConfigView.tsx,sha256=mbYo37wFPsPYUmniP_
|
|
|
71
71
|
cognite/neat/_app/ui/neat-app/src/views/GlobalConfigView.tsx,sha256=1NMOby21ArrfYLMbbhH8M0OMRMQDaal91cGMaM9i8bM,8504
|
|
72
72
|
cognite/neat/_app/ui/neat-app/src/views/WorkflowView.tsx,sha256=dU6xZip3MVaVzKAF23Cu6qZTl2Dn_evO-RTDAVGfONg,18451
|
|
73
73
|
cognite/neat/_app/ui/neat-app/tsconfig.json,sha256=sw7AweQXRyJAIQ8Beft_380Q8zBr54pG1P_wutdPAIQ,664
|
|
74
|
+
cognite/neat/_client/__init__.py,sha256=XpWT30mZdAJNHV84NJAWyAd2jZEGq9-IwvwK_wsOHdQ,177
|
|
75
|
+
cognite/neat/_client/_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
cognite/neat/_client/_api/data_modeling_loaders.py,sha256=XbE0IJynALeTKAhiRfkoLb1wEOntpr7XOmzvPQhfavk,24507
|
|
77
|
+
cognite/neat/_client/_api/schema.py,sha256=ZxO9FkgFGF_sI6yVmrztWvb2zo7Exgxtq4-SX2dpISY,4830
|
|
78
|
+
cognite/neat/_client/_api_client.py,sha256=6cNMizDuqMJZiOqiNRLX46BEtlCB-BpgGLyypksRVYU,616
|
|
79
|
+
cognite/neat/_client/data_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
+
cognite/neat/_client/data_classes/data_modeling.py,sha256=_xG4TZEvD1xty16fH7uT8rpBpxT7oBGIZ_cu7C0otcU,6550
|
|
81
|
+
cognite/neat/_client/data_classes/schema.py,sha256=hYKcrxXf90tA2NIqwBOzw9_hb4OanF9dwwPnur6MEfg,22904
|
|
74
82
|
cognite/neat/_config.py,sha256=f9Py4SEHwYYquIg-k1rC7MbXBLENXQauoZtLyUbWvJQ,10118
|
|
75
|
-
cognite/neat/_constants.py,sha256=
|
|
83
|
+
cognite/neat/_constants.py,sha256=KtAU74aQUy6FpmejwxDaXP5UwsqA8DJy-MTEoFw1UHg,2621
|
|
76
84
|
cognite/neat/_graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
-
cognite/neat/_graph/_shared.py,sha256=
|
|
85
|
+
cognite/neat/_graph/_shared.py,sha256=g7XFITbVxdDyGZ6mlgFUv5cBycrU7QbPktRikdUVkks,863
|
|
78
86
|
cognite/neat/_graph/_tracking/__init__.py,sha256=pYj7c-YAUIP4hvN-4mlWnwaeZFerzL9_gM-oZhex7cE,91
|
|
79
87
|
cognite/neat/_graph/_tracking/base.py,sha256=qU7DQL_aeG22jS-uE3G17B1WL1sOOxHt-eR0XlTZngs,821
|
|
80
88
|
cognite/neat/_graph/_tracking/log.py,sha256=_MGgMWxPDfKG4kbX-YL1UO0Lfq8nbcjyFFJeqN5wpuc,928
|
|
@@ -85,155 +93,142 @@ cognite/neat/_graph/examples/skos-capturing-sheet-wind-topics.xlsx,sha256=CV_yK5
|
|
|
85
93
|
cognite/neat/_graph/extractors/__init__.py,sha256=JSq2QIiJKDwrttGL8lFiEhScNJfWglM_vZNJq9IWBfQ,2110
|
|
86
94
|
cognite/neat/_graph/extractors/_base.py,sha256=yrtUC-v6WRs7RvgGTCP2usvsswh9uRqHdGe15If-O5Q,494
|
|
87
95
|
cognite/neat/_graph/extractors/_classic_cdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
cognite/neat/_graph/extractors/_classic_cdf/_assets.py,sha256=
|
|
89
|
-
cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=
|
|
90
|
-
cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=
|
|
91
|
-
cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py,sha256=
|
|
92
|
-
cognite/neat/_graph/extractors/_classic_cdf/_events.py,sha256=
|
|
93
|
-
cognite/neat/_graph/extractors/_classic_cdf/_files.py,sha256=
|
|
94
|
-
cognite/neat/_graph/extractors/_classic_cdf/_labels.py,sha256=
|
|
95
|
-
cognite/neat/_graph/extractors/_classic_cdf/_relationships.py,sha256=
|
|
96
|
-
cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=
|
|
97
|
-
cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py,sha256=
|
|
96
|
+
cognite/neat/_graph/extractors/_classic_cdf/_assets.py,sha256=9WVFrAtUFAp_AAlb26Rtt2Axz9xsPQYetg7SKVrNCr4,1474
|
|
97
|
+
cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=OTQOb0OLIBL-l1zNYIFyJ0Wnpfqtw90kSZu6JYteLo4,11087
|
|
98
|
+
cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=9V6HSXZXPbzVsNWOmuALX4GquJe_flPXLAsANHfc1c0,10644
|
|
99
|
+
cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py,sha256=xRFv9pVFgIMTZ45E8teMC0Ynku_CuZdcZkVCbhPuPBk,1294
|
|
100
|
+
cognite/neat/_graph/extractors/_classic_cdf/_events.py,sha256=B8hRoMAg8GQvApjxals5PfPyjmdPO93U3nj_G7g0kDQ,1394
|
|
101
|
+
cognite/neat/_graph/extractors/_classic_cdf/_files.py,sha256=Q816cVQ9qS7Art66HJfErL2OV7MxH_eSIG7bJ8_HJ7Q,1406
|
|
102
|
+
cognite/neat/_graph/extractors/_classic_cdf/_labels.py,sha256=7guTZdGFT1r7ItE2VNgXwbBZ1y_005oB3fg1XbwT7WQ,2083
|
|
103
|
+
cognite/neat/_graph/extractors/_classic_cdf/_relationships.py,sha256=Mu0PRcgF3BEZ7HVNQpCT1Ht2TLl9n2JcRz-UinShiFY,2977
|
|
104
|
+
cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=NA4iO1589q5E1f0kA8a_zdyUyS81Y9RgLq6eq42TCgc,1493
|
|
105
|
+
cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py,sha256=6CmmxWWG2IErfNKOPhsjQ5wSOTUZZMjulpaRbHj0Q-g,1560
|
|
98
106
|
cognite/neat/_graph/extractors/_dexpi.py,sha256=SFWnKXYpQToWag9aoX8fxISNa9b8KlqjZnkwI18BzNY,9431
|
|
99
107
|
cognite/neat/_graph/extractors/_dms.py,sha256=bK5p4-NdXlnQMGaalr6vgODcIvWu2e4qE6f8nnvdQK0,6685
|
|
100
108
|
cognite/neat/_graph/extractors/_iodd.py,sha256=nMSLmtgvxLrQJMA5NECF1OCp4Bcv0Vq0WsNv8X9Oj1k,18458
|
|
101
109
|
cognite/neat/_graph/extractors/_mock_graph_generator.py,sha256=yEqQdbnRQjBXVQIEVGP_B_Gqu4qi_1koqpMjw8XRTA0,15409
|
|
102
|
-
cognite/neat/_graph/extractors/_rdf_file.py,sha256=
|
|
110
|
+
cognite/neat/_graph/extractors/_rdf_file.py,sha256=YgPZN4Ayk6UlbwFFjdWn4Yo3P74D8KeNUb3slXg6Ox8,1604
|
|
103
111
|
cognite/neat/_graph/loaders/__init__.py,sha256=1eam_rG1BXTUJ8iDm8_IYZldEe177vn2GmHihDBi8qk,718
|
|
104
112
|
cognite/neat/_graph/loaders/_base.py,sha256=tjplRd-vbWhWyys0Ll3KgHR3F3ETlP_dXJ3e8F8w15M,3984
|
|
105
|
-
cognite/neat/_graph/loaders/_rdf2dms.py,sha256=
|
|
113
|
+
cognite/neat/_graph/loaders/_rdf2dms.py,sha256=XgglIE_8ryGnpl4-Nc_Zm-k5VI0UpD3BdYQ3g69MtXA,15951
|
|
106
114
|
cognite/neat/_graph/queries/__init__.py,sha256=BgDd-037kvtWwAoGAy8eORVNMiZ5-E9sIV0txIpeaN4,50
|
|
107
|
-
cognite/neat/_graph/queries/_base.py,sha256=
|
|
115
|
+
cognite/neat/_graph/queries/_base.py,sha256=dKEk8TDYUxIc71peqD9TfHHoILG9cKzjkFp7CAkbF78,14246
|
|
108
116
|
cognite/neat/_graph/queries/_construct.py,sha256=CW8uHtXXACUXDj1AcEjROXtvoiuyx0CTgZ0bURY5Neo,7213
|
|
109
117
|
cognite/neat/_graph/queries/_shared.py,sha256=K3svLkvw-DWPZUwIwpJRjPKg5UIRKFCn5jBLpuJjiHc,5330
|
|
110
118
|
cognite/neat/_graph/transformers/__init__.py,sha256=CdlG9Bk--bLyO5S8jJOkOriZQwJtukXj7oRPXfKKJSY,984
|
|
111
119
|
cognite/neat/_graph/transformers/_base.py,sha256=b37Ek-9njuM5pTR_3XhnxCMrg_ip_2BMwM7ZhKpAAlw,328
|
|
112
|
-
cognite/neat/_graph/transformers/_classic_cdf.py,sha256
|
|
120
|
+
cognite/neat/_graph/transformers/_classic_cdf.py,sha256=aGQ-NydLXEBtsjNKCVmHa2-LVfnPl80C4dwU4FUFGo8,16374
|
|
113
121
|
cognite/neat/_graph/transformers/_iodd.py,sha256=yH-BvVQUswM8RmV2VvOPQAgwudhBJdxDLHW1RKxuuAY,729
|
|
114
|
-
cognite/neat/_graph/transformers/_prune_graph.py,sha256=
|
|
115
|
-
cognite/neat/_graph/transformers/_rdfpath.py,sha256=
|
|
122
|
+
cognite/neat/_graph/transformers/_prune_graph.py,sha256=jmmnihEr8ONEgLye_81hyIzrY_TdtDIbMZNrfZQ7zGA,5270
|
|
123
|
+
cognite/neat/_graph/transformers/_rdfpath.py,sha256=0ZH7d62kfdCyWGrCyY2oJSnGEPsHQd0sMrZAsTibCCI,4155
|
|
116
124
|
cognite/neat/_graph/transformers/_value_type.py,sha256=JorH-AgDXVZUkG_GCcwn51Mw0M2WIOV834t0kF_Nwvo,2614
|
|
117
125
|
cognite/neat/_issues/__init__.py,sha256=IEZBpvL88hdghX7JgndhxcZcxreZowuoQFIXuSeIKDs,556
|
|
118
|
-
cognite/neat/_issues/_base.py,sha256=
|
|
119
|
-
cognite/neat/_issues/errors/__init__.py,sha256=
|
|
120
|
-
cognite/neat/_issues/errors/_external.py,sha256=
|
|
126
|
+
cognite/neat/_issues/_base.py,sha256=VaV90Zo5ssWibpSnbXM4FsdHHxkzpEcI5C_jtvESb4E,19689
|
|
127
|
+
cognite/neat/_issues/errors/__init__.py,sha256=Q2KFlG6zWkSKj9bTTw_idlgIZrFWYSYbMR7oSg6mw4Q,2216
|
|
128
|
+
cognite/neat/_issues/errors/_external.py,sha256=2RUOH4zRLYZQGLNwoTospi8xTW-P7CUZ_hURjRPcSbE,1764
|
|
121
129
|
cognite/neat/_issues/errors/_general.py,sha256=zwEoaygHA2Nt9vCwiveDuzJsqZYIaX0BoUYkwJkQ4jU,844
|
|
122
|
-
cognite/neat/_issues/errors/_properties.py,sha256=
|
|
123
|
-
cognite/neat/_issues/errors/_resources.py,sha256=
|
|
130
|
+
cognite/neat/_issues/errors/_properties.py,sha256=T_nquQeEQS3DQY--DQ13acxhGX_-gpUMjWGTBKCh6r8,2536
|
|
131
|
+
cognite/neat/_issues/errors/_resources.py,sha256=YoajFF4Nxq_mhhVSZ7r3J6V-sH8cMMn576dSTsbcQZk,3964
|
|
124
132
|
cognite/neat/_issues/errors/_workflow.py,sha256=m_Hlsvl5A1Oy7P3IROnz-4_do8_orZ1Pr1IHqsMyEys,971
|
|
125
133
|
cognite/neat/_issues/formatters.py,sha256=QCk41VLlpq-R9uaHpINYceZkIUoI9m4pwSq_yWPOmr8,3331
|
|
126
|
-
cognite/neat/_issues/warnings/__init__.py,sha256
|
|
127
|
-
cognite/neat/_issues/warnings/_external.py,sha256=
|
|
134
|
+
cognite/neat/_issues/warnings/__init__.py,sha256=-nqB250t0ZM3VcATYELM29dMXyaCaCsmFKo7fDX7yhQ,2611
|
|
135
|
+
cognite/neat/_issues/warnings/_external.py,sha256=3tE98nLzOx9pb-VMi0MmQskHj-IuEqwjjoqhKMJ-xIM,1325
|
|
128
136
|
cognite/neat/_issues/warnings/_general.py,sha256=9ZSNYBwFQ_XEagxYioUijJdCkdmT3VDQTlTO_JINe_E,617
|
|
129
137
|
cognite/neat/_issues/warnings/_models.py,sha256=i4ZXr1IINKbFiVhUd8-qAt9_cXB8D3W-ng1Ime_lQTA,4376
|
|
130
|
-
cognite/neat/_issues/warnings/_properties.py,sha256=
|
|
131
|
-
cognite/neat/_issues/warnings/_resources.py,sha256=
|
|
132
|
-
cognite/neat/_issues/warnings/user_modeling.py,sha256=
|
|
138
|
+
cognite/neat/_issues/warnings/_properties.py,sha256=VDc31UshXjLihWFLPFx9-TMyfJuJJKwdoOhkP_kDPFs,2444
|
|
139
|
+
cognite/neat/_issues/warnings/_resources.py,sha256=P4ZZbNt1hYa1fxjdI5IyqXqsDNncSKP2QcHBDOWhbqo,2673
|
|
140
|
+
cognite/neat/_issues/warnings/user_modeling.py,sha256=FIOJQ2wgYJtwa6qw3oNPExVXCU-A6BQ-VHPaK-2iL60,3668
|
|
133
141
|
cognite/neat/_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
-
cognite/neat/_rules/_constants.py,sha256=
|
|
142
|
+
cognite/neat/_rules/_constants.py,sha256=lOyf7nybSYOuAE_wKmTMncHYz0Io0_J_YVnYBzjrvZA,5637
|
|
135
143
|
cognite/neat/_rules/_shared.py,sha256=b7mO8mXY4w84XmcY_ArQa4LqnS2A0emS12tbPb4sG7A,1562
|
|
136
144
|
cognite/neat/_rules/analysis/__init__.py,sha256=sMs4n8T87gLlvoss6FWkZ8Y7BPpo9AGxi0m4YxBGwpY,126
|
|
137
|
-
cognite/neat/_rules/analysis/_base.py,sha256=
|
|
145
|
+
cognite/neat/_rules/analysis/_base.py,sha256=TagiDXpylC2zN5w06GyYXRimWIos8xeOFlskBpjh-e8,16215
|
|
138
146
|
cognite/neat/_rules/analysis/_dms.py,sha256=kMMNMzV-KgM1flfJFssdVqu3x4B3oE01LmZzkUSgmxk,1468
|
|
139
147
|
cognite/neat/_rules/analysis/_information.py,sha256=y-AVfxRR4BMm7pqJg8mFFUJR30J8wSKA2RYHLuOi1YM,9731
|
|
140
148
|
cognite/neat/_rules/catalog/__init__.py,sha256=dzx-DYYJDc861aFiOI5o1FsySD9F1agY8SBsr3nCf4Y,148
|
|
141
149
|
cognite/neat/_rules/catalog/info-rules-imf.xlsx,sha256=7odm5CoAU72-VTZk_z1u7GbycIb-X-8Yy3mtBGLjhE4,55511
|
|
142
150
|
cognite/neat/_rules/exporters/__init__.py,sha256=jCwXAeyZJv7GNJ3hGG-80gb8LAidozsyFMzdNIsGt_Y,1204
|
|
143
|
-
cognite/neat/_rules/exporters/_base.py,sha256
|
|
144
|
-
cognite/neat/_rules/exporters/_rules2dms.py,sha256=
|
|
151
|
+
cognite/neat/_rules/exporters/_base.py,sha256=-TI0M6EibITIDRYNzIACQZ5XizKUYWTnf3UY6dAcjtQ,1433
|
|
152
|
+
cognite/neat/_rules/exporters/_rules2dms.py,sha256=KY4-fPDE41gpPIoJc-V_jFpSLrpN4FAkX9qcWeJwNew,16676
|
|
145
153
|
cognite/neat/_rules/exporters/_rules2excel.py,sha256=puFgIf_dolxv38Lkgzl9lDDREWDPdTApqgYCu9H-hf4,11689
|
|
146
154
|
cognite/neat/_rules/exporters/_rules2instance_template.py,sha256=8HM1SkzcucaEYpQi96ncMnL8STArX9Oe09JBhJJAN4I,5810
|
|
147
155
|
cognite/neat/_rules/exporters/_rules2ontology.py,sha256=ioMi1GUhnbvcfVOPb3Z0a24mIEe74AfxySETWMDS9Lc,21776
|
|
148
156
|
cognite/neat/_rules/exporters/_rules2yaml.py,sha256=O9vnzDHf1ep1Qu0po0GVjgu945HNx3-zRmhxv65sv6I,3052
|
|
149
157
|
cognite/neat/_rules/exporters/_validation.py,sha256=DVJGdNNU2WtAFgUg0h4SWVhveRErEPOcYdT65y5toV0,682
|
|
150
|
-
cognite/neat/_rules/importers/__init__.py,sha256=
|
|
151
|
-
cognite/neat/_rules/importers/_base.py,sha256=
|
|
152
|
-
cognite/neat/_rules/importers/_dms2rules.py,sha256=
|
|
158
|
+
cognite/neat/_rules/importers/__init__.py,sha256=DZN_MIy_rQwyudvdAYtLPOVPB3YytmDoIfKGgT55StQ,1316
|
|
159
|
+
cognite/neat/_rules/importers/_base.py,sha256=P5bksMf7MNfLDX0SVQxjmK3Y-psoe0HcI_sWFoQJbFs,3264
|
|
160
|
+
cognite/neat/_rules/importers/_dms2rules.py,sha256=177CYuhO1w3IvEN5eiQWaxHjyRsDGagrTkEhBf1994E,20297
|
|
153
161
|
cognite/neat/_rules/importers/_dtdl2rules/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
|
|
154
162
|
cognite/neat/_rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
|
|
155
163
|
cognite/neat/_rules/importers/_dtdl2rules/dtdl_converter.py,sha256=j38U0um1ZWI-yRvEUR3z33vOvMCYXJxSO9L_B7m9xDE,11707
|
|
156
164
|
cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py,sha256=y3UMwrBysT3pl_wXJj-qKYKYbJDKa424AAfn6e8489k,5955
|
|
157
165
|
cognite/neat/_rules/importers/_dtdl2rules/spec.py,sha256=u__f08rAiYG0FIRiWoecBN83bVN3GEy--Lvm7463Q68,12166
|
|
158
|
-
cognite/neat/_rules/importers/_rdf/__init__.py,sha256=
|
|
159
|
-
cognite/neat/_rules/importers/_rdf/_base.py,sha256=
|
|
160
|
-
cognite/neat/_rules/importers/_rdf/_imf2rules
|
|
161
|
-
cognite/neat/_rules/importers/_rdf/
|
|
162
|
-
cognite/neat/_rules/importers/_rdf/
|
|
163
|
-
cognite/neat/_rules/importers/_rdf/
|
|
164
|
-
cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2rules.py,sha256=KqQ6YbpKg-kWg60klgP8gWJx5S5jgOW6cATP2cnZoxQ,5221
|
|
165
|
-
cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=A6vHV69zJHYjUg_wu3d40wylaG594pq-GtgPsAyuGQc,11927
|
|
166
|
-
cognite/neat/_rules/importers/_rdf/_owl2rules/__init__.py,sha256=tdGcrgtozdQyST-pTlxIa4cLBNTLvtk1nNYR4vOdFSw,63
|
|
167
|
-
cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2classes.py,sha256=qKle5M3vYFzmIa-T0pzaFGwM3xWOfNH1Y27lglXDJyE,1904
|
|
168
|
-
cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2metadata.py,sha256=KRx29Hrjjcbq09Gu2ErfVwmiiBEpmXbAT_bjPz8uGos,2499
|
|
169
|
-
cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2properties.py,sha256=QxjYWdI6gCPFV7sFssYBIuRALR90nzdXvSMF6VTqCIo,2114
|
|
170
|
-
cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2rules.py,sha256=ePB9iFRpk17vC946X1nBIdP7x3hV7abUQB70yQOmvko,1575
|
|
171
|
-
cognite/neat/_rules/importers/_rdf/_shared.py,sha256=RUYSXJj4nHsS03TT7BXQOlQBX9mR6qdwuDnfErwV8gU,14805
|
|
166
|
+
cognite/neat/_rules/importers/_rdf/__init__.py,sha256=F0x60kVLtJ9H8Md8_aMeKMBkhPCMiljyxt2_YmQfnMU,183
|
|
167
|
+
cognite/neat/_rules/importers/_rdf/_base.py,sha256=V-Y5NNP_ang3sXLJNx4AZZZPv1akzZWIRwVLafY3aac,5419
|
|
168
|
+
cognite/neat/_rules/importers/_rdf/_imf2rules.py,sha256=xemIv5G6JXJJ6Jn_1P5UldwEDNsgMIGiDF28DnOTtjU,3597
|
|
169
|
+
cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=e9NL5s1h-bwPez0UUL43tIzQKW-Nzpd9KL8j_bbqPic,11673
|
|
170
|
+
cognite/neat/_rules/importers/_rdf/_owl2rules.py,sha256=KhQAM9ai2ckhpB7ohfRi0n8ztRwbPADfNMFed8f-5V8,3267
|
|
171
|
+
cognite/neat/_rules/importers/_rdf/_shared.py,sha256=mxBoqFQfvHeLa4kbDYAd7FEcHe1fv97tcqHd9gmFeKk,5867
|
|
172
172
|
cognite/neat/_rules/importers/_spreadsheet2rules.py,sha256=TI92l_qddRW2JWk3JbmsvKkDYgXU-e_avw4y7epD_rs,10732
|
|
173
173
|
cognite/neat/_rules/importers/_yaml2rules.py,sha256=5DsEMYo6JVHC_mBOaaR3J6on1rXSpk82plCsrOq5_l8,3144
|
|
174
|
-
cognite/neat/_rules/models/__init__.py,sha256=
|
|
174
|
+
cognite/neat/_rules/models/__init__.py,sha256=z1LoPY2X-M8Og8bKcjae2JwQB9yW8Y_ASnkL3Tjwqyg,1024
|
|
175
175
|
cognite/neat/_rules/models/_base_input.py,sha256=qJrxobZLqpc28adEUJTKdJ8hDUZ67SVDFkUJnGjcPOc,6647
|
|
176
|
-
cognite/neat/_rules/models/_base_rules.py,sha256=
|
|
176
|
+
cognite/neat/_rules/models/_base_rules.py,sha256=TobUnr_5Q-lb5ZrTquc90GpNpB4ZalBCraTH7FwWvJI,13912
|
|
177
177
|
cognite/neat/_rules/models/_rdfpath.py,sha256=hqUMZCMeI8ESdJltu7FifuUhna5JNN_Heup2aYkV56Y,11882
|
|
178
178
|
cognite/neat/_rules/models/_types.py,sha256=6kljU9hREz1jllrBlIh7_jr-BLk6aUsINc-iDqPLKWI,5158
|
|
179
179
|
cognite/neat/_rules/models/data_types.py,sha256=LJuWUbStlZM4hUJGExOJIJXmAA4uiA0tvO9zKqLUrQg,9805
|
|
180
|
-
cognite/neat/_rules/models/dms/__init__.py,sha256=
|
|
181
|
-
cognite/neat/_rules/models/dms/_exporter.py,sha256=
|
|
182
|
-
cognite/neat/_rules/models/dms/_rules.py,sha256=
|
|
183
|
-
cognite/neat/_rules/models/dms/_rules_input.py,sha256=
|
|
184
|
-
cognite/neat/_rules/models/dms/
|
|
185
|
-
cognite/neat/_rules/models/dms/_validation.py,sha256=KMEql8WeawoYP2TG_-TPZnCcazvfikBZS6EC3DYqD7A,12507
|
|
180
|
+
cognite/neat/_rules/models/dms/__init__.py,sha256=r2XGwAjTsAZs-n-oimg40hLUKVpqFGVuAPmfEUCwwRs,695
|
|
181
|
+
cognite/neat/_rules/models/dms/_exporter.py,sha256=ZolWgpbtnysrI3KdL97h6gPpDcjWZBDoznxzZhSl1PU,21980
|
|
182
|
+
cognite/neat/_rules/models/dms/_rules.py,sha256=Fzo0Nh0O26c0cVx6idFL0DbfJwh-cCVM6cIGJwyM4-A,16837
|
|
183
|
+
cognite/neat/_rules/models/dms/_rules_input.py,sha256=H83hSvQVFmkkoPnAJEP7Dcu3uEHfdUb9vroa3dnU8EE,12727
|
|
184
|
+
cognite/neat/_rules/models/dms/_validation.py,sha256=PuYT1fdPXyxmJSp3qt9shxPviM6LWxesPMpzOQOCUCo,25724
|
|
186
185
|
cognite/neat/_rules/models/entities/__init__.py,sha256=QD-h79HhjqCsgscNU5kuf1ieRCE94dOfpujLuzYbtHk,1469
|
|
187
186
|
cognite/neat/_rules/models/entities/_constants.py,sha256=ToiLaaF-hGLPfn3AsKIIrfB4ZdTk4cY1RjM9gA1Qjkg,288
|
|
188
187
|
cognite/neat/_rules/models/entities/_loaders.py,sha256=jFllRty5XpS6uLklr9wJkx7Bzm-qwg65um6hnVistvw,2728
|
|
189
188
|
cognite/neat/_rules/models/entities/_multi_value.py,sha256=5RgZBrJfw7VSE-6F50-Lqtio_xVo4vbezKmoyiDdcw8,2692
|
|
190
|
-
cognite/neat/_rules/models/entities/_single_value.py,sha256=
|
|
189
|
+
cognite/neat/_rules/models/entities/_single_value.py,sha256=dVfqIx3_Agi_LddhsqPOyWcAt0s06PNpRxrW-7n-z0Y,18513
|
|
191
190
|
cognite/neat/_rules/models/entities/_types.py,sha256=df9rnXJJKciv2Bp-Ve2q4xdEJt6WWniq12Z0hW2d6sk,1917
|
|
192
191
|
cognite/neat/_rules/models/entities/_wrapped.py,sha256=FxC8HztW_tUUtuArAOwxyFfkdJnSEB4bgZoNmmmfiPk,7137
|
|
193
|
-
cognite/neat/_rules/models/information/__init__.py,sha256=
|
|
194
|
-
cognite/neat/_rules/models/information/_rules.py,sha256=
|
|
192
|
+
cognite/neat/_rules/models/information/__init__.py,sha256=ex9JOyiZYXefFl9oi1VaHhyUOtYjXWytSmwuq4pqKqc,556
|
|
193
|
+
cognite/neat/_rules/models/information/_rules.py,sha256=CGNJu6fNyPu9NM1yFM_v90rSjUkoQuxf8nxt49H7gIc,9503
|
|
195
194
|
cognite/neat/_rules/models/information/_rules_input.py,sha256=4XWayOQRIiOv9ZkD7TWsfjS-08mnRdRxctc55CLBJzw,5150
|
|
196
|
-
cognite/neat/_rules/models/information/_validation.py,sha256=
|
|
197
|
-
cognite/neat/_rules/models/mapping/__init__.py,sha256=
|
|
198
|
-
cognite/neat/_rules/models/mapping/
|
|
199
|
-
cognite/neat/_rules/models/mapping/_classic2core.
|
|
200
|
-
cognite/neat/_rules/transformers/__init__.py,sha256=
|
|
195
|
+
cognite/neat/_rules/models/information/_validation.py,sha256=kKnVIDqlP65uvZW-MzjXcBbCPtVi06W-6_fRFQd6tlU,6055
|
|
196
|
+
cognite/neat/_rules/models/mapping/__init__.py,sha256=T68Hf7rhiXa7b03h4RMwarAmkGnB-Bbhc1H07b2PyC4,100
|
|
197
|
+
cognite/neat/_rules/models/mapping/_classic2core.py,sha256=oIU8jKixts-GIO64ArT8VCK_hK-t2zW34gadlvzDwy4,1353
|
|
198
|
+
cognite/neat/_rules/models/mapping/_classic2core.yaml,sha256=kUJmOCzKiL2r7GgCbL1LPj-yBXoZa3mcOAfJti97VSY,9654
|
|
199
|
+
cognite/neat/_rules/transformers/__init__.py,sha256=U-vxvyIZrHIiPcOqdgE8pdT9J8xcqMei8XPaXXQ5x1U,798
|
|
201
200
|
cognite/neat/_rules/transformers/_base.py,sha256=jmgcSFWOPvrbfme0kUwXi1_3Bvxwif1T1Pin2jqhzlU,3585
|
|
202
|
-
cognite/neat/_rules/transformers/_converters.py,sha256=
|
|
203
|
-
cognite/neat/_rules/transformers/_mapping.py,sha256=
|
|
204
|
-
cognite/neat/_rules/transformers/_pipelines.py,sha256
|
|
205
|
-
cognite/neat/_rules/transformers/_verification.py,sha256=
|
|
201
|
+
cognite/neat/_rules/transformers/_converters.py,sha256=yc1KWGdp2CCl-yeHY87LRisxOLNgdfYJEnnKEM_QpZY,40315
|
|
202
|
+
cognite/neat/_rules/transformers/_mapping.py,sha256=rngdkG-To58IkSFUbbfbhPSQRdtkipjZxD37qxDot_A,9918
|
|
203
|
+
cognite/neat/_rules/transformers/_pipelines.py,sha256=2y786LkNMedmxoozUyvtd-2bfqf6wkX2H8On-m2Ucsw,2618
|
|
204
|
+
cognite/neat/_rules/transformers/_verification.py,sha256=M4-Cr3vTm3PZyHSjW-odbOqbY5g0hiRjERDjvLgYbxU,3907
|
|
206
205
|
cognite/neat/_session/__init__.py,sha256=fxQ5URVlUnmEGYyB8Baw7IDq-uYacqkigbc4b-Pr9Fw,58
|
|
207
|
-
cognite/neat/_session/_base.py,sha256=
|
|
206
|
+
cognite/neat/_session/_base.py,sha256=QtfVg64VUgW3iKKVMVEHKZA7W-L7KEtF7xYPLD1Lgjg,9913
|
|
208
207
|
cognite/neat/_session/_collector.py,sha256=zS5JxLIYnAWV-dBzF6WgUfo662iYSzEyDhtnMv-Zibs,4002
|
|
209
|
-
cognite/neat/_session/
|
|
210
|
-
cognite/neat/_session/
|
|
211
|
-
cognite/neat/_session/
|
|
208
|
+
cognite/neat/_session/_drop.py,sha256=XlEaKb_HpqI5EQuUuUFjcf3Qx6BfcBBWdqqGdwkGhmE,1137
|
|
209
|
+
cognite/neat/_session/_inspect.py,sha256=s3R6vz8HbqZSdknyXTSkmA3JvvInlQF5yNKECTA-I1w,7264
|
|
210
|
+
cognite/neat/_session/_mapping.py,sha256=I9FwZD4KvDv1hHF5peOjVIyarnfAGXMhyHCLi0ls9Dk,1316
|
|
211
|
+
cognite/neat/_session/_prepare.py,sha256=C-rR5UNNNPenpL9PN9Kwc-ONrxLRC9ttdgN0k5lMJYk,20105
|
|
212
|
+
cognite/neat/_session/_read.py,sha256=UFly-c0fxX2ier5soIAjMRqUPAhRK_ZKGGGChZEMR7w,13503
|
|
212
213
|
cognite/neat/_session/_set.py,sha256=1XtYn_AVrvSJWRXSQXsm-j9-WPzLVHFnuTXNEKXg_aQ,1913
|
|
213
214
|
cognite/neat/_session/_show.py,sha256=_ev_Z41rkW4nlvhLf69PmttggKksnkCchOow7CmICyU,14124
|
|
214
215
|
cognite/neat/_session/_state.py,sha256=rqKHkikagO1pf_fKpY-LZI1X5R_v6AyYpV72_3eSduM,5783
|
|
215
|
-
cognite/neat/_session/_to.py,sha256=
|
|
216
|
+
cognite/neat/_session/_to.py,sha256=m4100pDoA3QtY-NEonh7I1EIlBw80kNcB9TLmXZXyB0,6043
|
|
216
217
|
cognite/neat/_session/_wizard.py,sha256=Rdld2eZ-Q5BYbmAwW8FlfAYebdlw_P6L6V2WSDk-dHI,1306
|
|
217
218
|
cognite/neat/_session/engine/__init__.py,sha256=aeI5pzljU5n1B-SVu3LwjYVsN1tSVhnJj-4ddflEo4U,120
|
|
218
219
|
cognite/neat/_session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
|
|
219
220
|
cognite/neat/_session/engine/_interface.py,sha256=9ETG5f1toAcxf8jIvZiN6YL0whYkMDOCIKYqW9qR9oU,495
|
|
220
221
|
cognite/neat/_session/engine/_load.py,sha256=HAzrAiR3FQz881ZMbaK6EIvMNRxHUK8VbSoD2Obd-4g,5064
|
|
221
|
-
cognite/neat/_session/exceptions.py,sha256=
|
|
222
|
+
cognite/neat/_session/exceptions.py,sha256=dvhwF7d8AADxqEI13nZreLCPBPN_7A3KiAqlWjkpuqc,2303
|
|
222
223
|
cognite/neat/_shared.py,sha256=JXebp3LREqBq9TPNXb7QCHwF7_nbWo622WAzllxSaaU,1671
|
|
223
224
|
cognite/neat/_store/__init__.py,sha256=G-VG_YwfRt1kuPao07PDJyZ3w_0-eguzLUM13n-Z_RA,64
|
|
224
|
-
cognite/neat/_store/_base.py,sha256=
|
|
225
|
+
cognite/neat/_store/_base.py,sha256=HLBoog17VGanhRXru1eJCa9ONiXCYYJoqxAcIBjeUZI,13922
|
|
225
226
|
cognite/neat/_store/_provenance.py,sha256=BiVOuwl65qWZBaBlPYbVv0Dy_Ibg7U3tLpXt8H7KRuw,8722
|
|
226
227
|
cognite/neat/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
227
228
|
cognite/neat/_utils/auth.py,sha256=UbFNq4BIqxc1459xJtI1FZz91K5XEMkfY5cfpBHyUHU,13301
|
|
228
229
|
cognite/neat/_utils/auxiliary.py,sha256=WFOycFgoYipvDmtGvn6ZNH3H8iNZmHamrfe2kXRb8lM,6667
|
|
229
|
-
cognite/neat/_utils/cdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
230
|
-
cognite/neat/_utils/cdf/data_classes.py,sha256=XdPsHfmE3G-4o1AT_rNRiT916kWRoUpOMfgCyYjI0xU,10461
|
|
231
|
-
cognite/neat/_utils/cdf/loaders/__init__.py,sha256=s2aPR5XLo6WZ0ybstAJlcGFYkA7CyHW1XO-NYpL0V6o,483
|
|
232
|
-
cognite/neat/_utils/cdf/loaders/_base.py,sha256=ACqWVCrYX40u3n6tq9iqTP1Y-p2VzlaYshJNk7hoHa4,1778
|
|
233
|
-
cognite/neat/_utils/cdf/loaders/_data_modeling.py,sha256=eHnweAJWTszt5h44XgXSp_bcbtwxqxyB_4_9XnsLguY,14236
|
|
234
|
-
cognite/neat/_utils/cdf/loaders/_ingestion.py,sha256=CNORsQaP-ILTUBj7h9rPeysnH8GxSXr1GjBd6-9n9ho,7140
|
|
235
230
|
cognite/neat/_utils/collection_.py,sha256=ziPaNG3yfNE2DnhI_TDkIJ3TPDbUpJFG9Q2uPckNlx0,766
|
|
236
|
-
cognite/neat/_utils/rdf_.py,sha256=
|
|
231
|
+
cognite/neat/_utils/rdf_.py,sha256=CEu34s8gqKrpDLBGQEd6S66m5Wbv1mA_UNA2_KAvCho,7801
|
|
237
232
|
cognite/neat/_utils/reader/__init__.py,sha256=KOdEuGd9n9tyqZY7HCTnBKAXk2PUn4n_l7O3ZguSp-w,112
|
|
238
233
|
cognite/neat/_utils/reader/_base.py,sha256=PECrAlJqKDlyFzAlBBLfKjyOEyJSgN0sUfjbK-2qWf4,4537
|
|
239
234
|
cognite/neat/_utils/spreadsheet.py,sha256=LI0c7dlW0zXHkHw0NvB-gg6Df6cDcE3FbiaHBYLXdzQ,2714
|
|
@@ -241,7 +236,7 @@ cognite/neat/_utils/text.py,sha256=PvTEsEjaTu8SE8yYaKUrce4msboMj933dK7-0Eey_rE,3
|
|
|
241
236
|
cognite/neat/_utils/time_.py,sha256=O30LUiDH9TdOYz8_a9pFqTtJdg8vEjC3qHCk8xZblG8,345
|
|
242
237
|
cognite/neat/_utils/upload.py,sha256=iWKmsQgw4EHLv-11NjYu7zAj5LtqTAfNa87a1kWeuaU,5727
|
|
243
238
|
cognite/neat/_utils/xml_.py,sha256=FQkq84u35MUsnKcL6nTMJ9ajtG9D5i1u4VBnhGqP2DQ,1710
|
|
244
|
-
cognite/neat/_version.py,sha256=
|
|
239
|
+
cognite/neat/_version.py,sha256=RT457dZZZwps1ojfpHQw4WKZhTusfCn12cTAe80S6R8,45
|
|
245
240
|
cognite/neat/_workflows/__init__.py,sha256=S0fZq7kvoqDKodHu1UIPsqcpdvXoefUWRPt1lqeQkQs,420
|
|
246
241
|
cognite/neat/_workflows/base.py,sha256=O1pcmfbme2gIVF2eOGrKZSUDmhZc8L9rI8UfvLN2YAM,26839
|
|
247
242
|
cognite/neat/_workflows/cdf_store.py,sha256=3pebnATPo6In4-1srpa3wzstynTOi3T6hwFX5uaie4c,18050
|
|
@@ -259,9 +254,9 @@ cognite/neat/_workflows/steps/lib/current/__init__.py,sha256=c22IznGdCSNCpXCi_yo
|
|
|
259
254
|
cognite/neat/_workflows/steps/lib/current/graph_extractor.py,sha256=iQsEs3a8pYISFqlP7lTMnPxz8Zic5Ep7CwB38jkRaJY,3711
|
|
260
255
|
cognite/neat/_workflows/steps/lib/current/graph_loader.py,sha256=EItu0wh-b-AFyn7iRhdThLjJ2NvHYBv3hY3x2w5sCqg,1693
|
|
261
256
|
cognite/neat/_workflows/steps/lib/current/graph_store.py,sha256=Fbd3Fb4K2QML_if46SLldikvBJUPJ2VUAG2Bzqcq-Qc,1586
|
|
262
|
-
cognite/neat/_workflows/steps/lib/current/rules_exporter.py,sha256=
|
|
263
|
-
cognite/neat/_workflows/steps/lib/current/rules_importer.py,sha256=
|
|
264
|
-
cognite/neat/_workflows/steps/lib/current/rules_validator.py,sha256
|
|
257
|
+
cognite/neat/_workflows/steps/lib/current/rules_exporter.py,sha256=bAp2sm-UR1DsYoMbEDzGLF5xJiEaYr4gzy5tbX9qemY,21957
|
|
258
|
+
cognite/neat/_workflows/steps/lib/current/rules_importer.py,sha256=pcFJYguOcwF-9p_odTkIJrgjuNjQmoYzn5MHP-gsL_Y,17280
|
|
259
|
+
cognite/neat/_workflows/steps/lib/current/rules_validator.py,sha256=yTQnjWuDQpL8TjhqBnHVkqS7TduZ5vVfzmzHiXy9gPA,4665
|
|
265
260
|
cognite/neat/_workflows/steps/lib/io/__init__.py,sha256=k7IPbIq3ey19oRc5sA_15F99-O6dxzqbm1LihGRRo5A,32
|
|
266
261
|
cognite/neat/_workflows/steps/lib/io/io_steps.py,sha256=EZWqM_0hkfzCVnUxzHPNLIdvkqT6NUKDaZsrD_Z2jpU,16934
|
|
267
262
|
cognite/neat/_workflows/steps/step_model.py,sha256=XyKk3j8Q4Y4E9E9rai-LbEelQPlrhyzsDWzzzruoxOM,2946
|
|
@@ -270,8 +265,8 @@ cognite/neat/_workflows/tasks.py,sha256=dr2xuIb8P5e5e9p_fjzRlvDbKsre2xGYrkc3wnRx
|
|
|
270
265
|
cognite/neat/_workflows/triggers.py,sha256=u69xOsaTtM8_WD6ZeIIBB-XKwvlZmPHAsZQh_TnyHcM,7073
|
|
271
266
|
cognite/neat/_workflows/utils.py,sha256=gKdy3RLG7ctRhbCRwaDIWpL9Mi98zm56-d4jfHDqP1E,453
|
|
272
267
|
cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
273
|
-
cognite_neat-0.
|
|
274
|
-
cognite_neat-0.
|
|
275
|
-
cognite_neat-0.
|
|
276
|
-
cognite_neat-0.
|
|
277
|
-
cognite_neat-0.
|
|
268
|
+
cognite_neat-0.99.1.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
269
|
+
cognite_neat-0.99.1.dist-info/METADATA,sha256=G_LGvmQCb9otxzJ2BlVYoSJHJAx32ZTFSNt7Y28KM54,9698
|
|
270
|
+
cognite_neat-0.99.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
271
|
+
cognite_neat-0.99.1.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
|
|
272
|
+
cognite_neat-0.99.1.dist-info/RECORD,,
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
from typing import cast
|
|
2
|
-
|
|
3
|
-
from rdflib import Graph
|
|
4
|
-
|
|
5
|
-
from cognite.neat._rules.importers._rdf._shared import (
|
|
6
|
-
clean_up_classes,
|
|
7
|
-
make_classes_compliant,
|
|
8
|
-
parse_raw_classes_dataframe,
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def parse_imf_to_classes(graph: Graph, language: str = "en") -> list[dict]:
|
|
13
|
-
"""Parse IMF elements from RDF-graph and extract classes to pandas dataframe.
|
|
14
|
-
|
|
15
|
-
Args:
|
|
16
|
-
graph: Graph containing imf elements
|
|
17
|
-
language: Language to use for parsing, by default "en"
|
|
18
|
-
|
|
19
|
-
Returns:
|
|
20
|
-
Dataframe containing imf elements
|
|
21
|
-
|
|
22
|
-
!!! note "IMF Compliance"
|
|
23
|
-
The IMF elements are expressed in RDF, primarily using SHACL and OWL. To ensure
|
|
24
|
-
that the resulting classes are compliant with CDF, similar validation checks as
|
|
25
|
-
in the OWL ontology importer are applied.
|
|
26
|
-
|
|
27
|
-
For the IMF-types more of the compliance logic is placed directly in the SPARQL
|
|
28
|
-
query. Among these are the creation of class name not starting with a number,
|
|
29
|
-
and ensuring that all classes have a parent.
|
|
30
|
-
|
|
31
|
-
IMF-attributes are considered both classes and properties. This kind of punning
|
|
32
|
-
is necessary to capture additional information carried by attributes. They carry,
|
|
33
|
-
among other things, a set of relationsships to reference terms, units of measure,
|
|
34
|
-
and qualifiers that together make up the meaning of the attribute.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
query = """
|
|
38
|
-
SELECT ?class ?name ?description ?parentClass
|
|
39
|
-
WHERE {
|
|
40
|
-
# Finding IMF - elements
|
|
41
|
-
VALUES ?type { imf:BlockType imf:TerminalType imf:AttributeType }
|
|
42
|
-
?imfClass a ?type .
|
|
43
|
-
OPTIONAL {?imfClass rdfs:subClassOf ?parent }.
|
|
44
|
-
OPTIONAL {?imfClass rdfs:label | skos:prefLabel ?name }.
|
|
45
|
-
|
|
46
|
-
# Note: Bug in PCA has lead to the use non-existing term skos:description. This will be replaced
|
|
47
|
-
# with the correct skos:definition in the near future, so both terms are included here.
|
|
48
|
-
OPTIONAL {?imfClass rdfs:comment | skos:definition | skos:description ?description} .
|
|
49
|
-
|
|
50
|
-
# Finding the last segment of the class IRI
|
|
51
|
-
BIND(STR(?imfClass) AS ?classString)
|
|
52
|
-
BIND(REPLACE(?classString, "^.*[/#]([^/#]*)$", "$1") AS ?tempSegment)
|
|
53
|
-
BIND(REPLACE(?tempSegment, "-", "_") AS ?classSegment)
|
|
54
|
-
BIND(IF(CONTAINS(?classString, "imf/"), CONCAT("IMF_", ?classSegment) , ?classSegment) AS ?class)
|
|
55
|
-
|
|
56
|
-
# Add imf:Attribute as parent class
|
|
57
|
-
BIND(IF(!bound(?parent) && ?type = imf:AttributeType, imf:Attribute, ?parent) AS ?parentClass)
|
|
58
|
-
|
|
59
|
-
# Rebind the IRI of the IMF-type to the ?reference variable to align with dataframe column headers
|
|
60
|
-
# This is solely for readability, the ?imfClass could have been returned directly instead of ?reference
|
|
61
|
-
BIND(?imfClass AS ?reference)
|
|
62
|
-
|
|
63
|
-
FILTER (!isBlank(?class))
|
|
64
|
-
FILTER (!bound(?parentClass) || !isBlank(?parentClass))
|
|
65
|
-
FILTER (!bound(?name) || LANG(?name) = "" || LANGMATCHES(LANG(?name), "en"))
|
|
66
|
-
FILTER (!bound(?description) || LANG(?description) = "" || LANGMATCHES(LANG(?description), "en"))
|
|
67
|
-
}
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
# create raw dataframe
|
|
71
|
-
raw_df = parse_raw_classes_dataframe(cast(list[tuple], list(graph.query(query.replace("en", language)))))
|
|
72
|
-
if raw_df.empty:
|
|
73
|
-
return []
|
|
74
|
-
|
|
75
|
-
# group values and clean up
|
|
76
|
-
processed_df = clean_up_classes(raw_df)
|
|
77
|
-
|
|
78
|
-
# make compliant
|
|
79
|
-
processed_df = make_classes_compliant(processed_df, importer="IMF")
|
|
80
|
-
|
|
81
|
-
# Make Parent Class list elements into string joined with comma
|
|
82
|
-
processed_df["Implements"] = processed_df["Implements"].apply(
|
|
83
|
-
lambda x: ", ".join(x) if isinstance(x, list) and x else None
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
return processed_df.dropna(axis=0, how="all").replace(float("nan"), None).to_dict(orient="records")
|