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.

Files changed (103) hide show
  1. cognite/neat/_client/__init__.py +4 -0
  2. cognite/neat/_client/_api/data_modeling_loaders.py +585 -0
  3. cognite/neat/_client/_api/schema.py +111 -0
  4. cognite/neat/_client/_api_client.py +17 -0
  5. cognite/neat/_client/data_classes/__init__.py +0 -0
  6. cognite/neat/{_utils/cdf/data_classes.py → _client/data_classes/data_modeling.py} +8 -135
  7. cognite/neat/_client/data_classes/schema.py +495 -0
  8. cognite/neat/_constants.py +27 -4
  9. cognite/neat/_graph/_shared.py +14 -15
  10. cognite/neat/_graph/extractors/_classic_cdf/_assets.py +14 -154
  11. cognite/neat/_graph/extractors/_classic_cdf/_base.py +154 -7
  12. cognite/neat/_graph/extractors/_classic_cdf/_classic.py +25 -14
  13. cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py +17 -92
  14. cognite/neat/_graph/extractors/_classic_cdf/_events.py +13 -162
  15. cognite/neat/_graph/extractors/_classic_cdf/_files.py +15 -179
  16. cognite/neat/_graph/extractors/_classic_cdf/_labels.py +32 -100
  17. cognite/neat/_graph/extractors/_classic_cdf/_relationships.py +27 -178
  18. cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +14 -139
  19. cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py +15 -173
  20. cognite/neat/_graph/extractors/_rdf_file.py +6 -7
  21. cognite/neat/_graph/loaders/_rdf2dms.py +2 -2
  22. cognite/neat/_graph/queries/_base.py +17 -1
  23. cognite/neat/_graph/transformers/_classic_cdf.py +74 -147
  24. cognite/neat/_graph/transformers/_prune_graph.py +1 -1
  25. cognite/neat/_graph/transformers/_rdfpath.py +1 -1
  26. cognite/neat/_issues/_base.py +26 -17
  27. cognite/neat/_issues/errors/__init__.py +4 -2
  28. cognite/neat/_issues/errors/_external.py +7 -0
  29. cognite/neat/_issues/errors/_properties.py +2 -7
  30. cognite/neat/_issues/errors/_resources.py +1 -1
  31. cognite/neat/_issues/warnings/__init__.py +8 -0
  32. cognite/neat/_issues/warnings/_external.py +16 -0
  33. cognite/neat/_issues/warnings/_properties.py +16 -0
  34. cognite/neat/_issues/warnings/_resources.py +26 -2
  35. cognite/neat/_issues/warnings/user_modeling.py +4 -4
  36. cognite/neat/_rules/_constants.py +8 -11
  37. cognite/neat/_rules/analysis/_base.py +8 -4
  38. cognite/neat/_rules/exporters/_base.py +3 -4
  39. cognite/neat/_rules/exporters/_rules2dms.py +33 -46
  40. cognite/neat/_rules/importers/__init__.py +1 -3
  41. cognite/neat/_rules/importers/_base.py +1 -1
  42. cognite/neat/_rules/importers/_dms2rules.py +6 -29
  43. cognite/neat/_rules/importers/_rdf/__init__.py +5 -0
  44. cognite/neat/_rules/importers/_rdf/_base.py +34 -11
  45. cognite/neat/_rules/importers/_rdf/_imf2rules.py +91 -0
  46. cognite/neat/_rules/importers/_rdf/_inference2rules.py +43 -35
  47. cognite/neat/_rules/importers/_rdf/_owl2rules.py +80 -0
  48. cognite/neat/_rules/importers/_rdf/_shared.py +138 -441
  49. cognite/neat/_rules/models/__init__.py +1 -1
  50. cognite/neat/_rules/models/_base_rules.py +22 -12
  51. cognite/neat/_rules/models/dms/__init__.py +4 -2
  52. cognite/neat/_rules/models/dms/_exporter.py +45 -48
  53. cognite/neat/_rules/models/dms/_rules.py +20 -17
  54. cognite/neat/_rules/models/dms/_rules_input.py +52 -8
  55. cognite/neat/_rules/models/dms/_validation.py +391 -119
  56. cognite/neat/_rules/models/entities/_single_value.py +32 -4
  57. cognite/neat/_rules/models/information/__init__.py +2 -0
  58. cognite/neat/_rules/models/information/_rules.py +0 -67
  59. cognite/neat/_rules/models/information/_validation.py +9 -9
  60. cognite/neat/_rules/models/mapping/__init__.py +2 -3
  61. cognite/neat/_rules/models/mapping/_classic2core.py +36 -146
  62. cognite/neat/_rules/models/mapping/_classic2core.yaml +343 -0
  63. cognite/neat/_rules/transformers/__init__.py +2 -2
  64. cognite/neat/_rules/transformers/_converters.py +110 -11
  65. cognite/neat/_rules/transformers/_mapping.py +105 -30
  66. cognite/neat/_rules/transformers/_pipelines.py +1 -1
  67. cognite/neat/_rules/transformers/_verification.py +31 -3
  68. cognite/neat/_session/_base.py +24 -8
  69. cognite/neat/_session/_drop.py +35 -0
  70. cognite/neat/_session/_inspect.py +17 -5
  71. cognite/neat/_session/_mapping.py +39 -0
  72. cognite/neat/_session/_prepare.py +219 -23
  73. cognite/neat/_session/_read.py +49 -12
  74. cognite/neat/_session/_to.py +8 -5
  75. cognite/neat/_session/exceptions.py +4 -0
  76. cognite/neat/_store/_base.py +27 -24
  77. cognite/neat/_utils/rdf_.py +34 -5
  78. cognite/neat/_version.py +1 -1
  79. cognite/neat/_workflows/steps/lib/current/rules_exporter.py +5 -88
  80. cognite/neat/_workflows/steps/lib/current/rules_importer.py +3 -14
  81. cognite/neat/_workflows/steps/lib/current/rules_validator.py +6 -7
  82. {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/METADATA +3 -3
  83. {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/RECORD +87 -92
  84. cognite/neat/_rules/importers/_rdf/_imf2rules/__init__.py +0 -3
  85. cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2classes.py +0 -86
  86. cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2metadata.py +0 -29
  87. cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2properties.py +0 -130
  88. cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2rules.py +0 -154
  89. cognite/neat/_rules/importers/_rdf/_owl2rules/__init__.py +0 -3
  90. cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2classes.py +0 -58
  91. cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2metadata.py +0 -65
  92. cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2properties.py +0 -59
  93. cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2rules.py +0 -39
  94. cognite/neat/_rules/models/dms/_schema.py +0 -1101
  95. cognite/neat/_rules/models/mapping/_base.py +0 -131
  96. cognite/neat/_utils/cdf/loaders/__init__.py +0 -25
  97. cognite/neat/_utils/cdf/loaders/_base.py +0 -54
  98. cognite/neat/_utils/cdf/loaders/_data_modeling.py +0 -339
  99. cognite/neat/_utils/cdf/loaders/_ingestion.py +0 -167
  100. /cognite/neat/{_utils/cdf → _client/_api}/__init__.py +0 -0
  101. {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/LICENSE +0 -0
  102. {cognite_neat-0.98.0.dist-info → cognite_neat-0.99.1.dist-info}/WHEEL +0 -0
  103. {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(rules=dms_rules, client=cdf_client, dry_run=dry_run):
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
- ref_datamodel_str = self.configs.get("Reference data model id", "")
291
- ref_model_id: DataModelId | None = None
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._utils.cdf.loaders import ViewLoader
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
- schema = dms_rules.as_schema()
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.98.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.3.3,<0.4.0) ; extra == "oxi" or extra == "all"
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.19) ; extra == "oxi" or extra == "all"
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=MI4VqDJHtTlwdxzVjQxiieyRSgoGYW-Gkr5tTlTPE6A,2080
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=WTDR46N3V8GZRZaqXcqR_IJnlMCQU7aT9xUmr_jBwFE,927
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=C_Bo5fy_SSdEqsX0nJma0IG1E0c4XLXS1cIWaghV7_0,6599
89
- cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=ZjD1EIxWU3vV9MsLE5HtSdW6s0EubXOTsXlX7-rKofQ,5069
90
- cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=H0pjg1G6Q9XXrPjLrJYOm-W6KFBguUDubVcQZfX_3k4,10185
91
- cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py,sha256=nwJXtbDRZtVBxezihuhUGGERTCKLi4NnRNl4OMT8QDc,4292
92
- cognite/neat/_graph/extractors/_classic_cdf/_events.py,sha256=S_lwxeiT6XWFH9yGjGtmfwuM4HrjFpV-zVba-DrItKo,6503
93
- cognite/neat/_graph/extractors/_classic_cdf/_files.py,sha256=5SG7rsBwLZiyl7ZSYf2nms6JPlxNCOam8Tx-XG8mzKE,7549
94
- cognite/neat/_graph/extractors/_classic_cdf/_labels.py,sha256=ASnszhR4vIvRPWOJ8zCLOrGESYmGbec54hNw73ZAckk,4761
95
- cognite/neat/_graph/extractors/_classic_cdf/_relationships.py,sha256=15q6RVtaKv_VKFwmwetXy4ooCFkDQUp0hxFkO_hXL4E,8788
96
- cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=99RejWhL4KypqtAGRtp5OcT6_iDnk80tDF-HXqoQEnc,6001
97
- cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py,sha256=vLE6PexiU9flNwwDDHfeVHueDPVz3LireAmkSGqGHqA,7497
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=WHsVAtfRhMdtjTTN0et3pAFMm2PTCTyHOJgPSVqsqi4,1688
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=kR5yjXS5VDHMUFff5WSTrZRqKSzX53SlEbcwHMVh8J8,15951
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=FhRCUQ-jpVdtC6qdBWqTlh6JP29BigQJoyACkrr5bBM,13700
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=-4GCCwXNLz8NrOeSMavuzPXDRAGbuq-lZtH_xOicuMk,19216
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=fWZ4sMBf3XqoYC5nOU75Gl6XwscRe-wGYT-GiBFmcK8,5277
115
- cognite/neat/_graph/transformers/_rdfpath.py,sha256=jTqrfoEn8cnQjM4u-d2rDo-VRvT9FJUzbWhMwXbk-WI,4157
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=ks4-3bbholOw0VaacazbaX4ViMh0EcS6KPND_srLCbE,19180
119
- cognite/neat/_issues/errors/__init__.py,sha256=sOfHXOh9BfBEKoHFsneB5pCq5s7wJNhzwIEUKUr7HI4,2160
120
- cognite/neat/_issues/errors/_external.py,sha256=AuV2PyJcGjYxEnuwmi3zfYWPCF-yr4w39Uy0lQpeoqo,1619
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=cr29pDs-Cc_kyRJjCk-9bS-HXV6naF27AOv3TSNbQdQ,2787
123
- cognite/neat/_issues/errors/_resources.py,sha256=SbiojpJ2J9Dk3NKRN0FoiN-vy14LXmEJCJM8xu_gTzQ,3964
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=I03MoPGujDUBx3b4kijxbNlh77M_Ff_ohaPxsMOMma8,2385
127
- cognite/neat/_issues/warnings/_external.py,sha256=8N8eJcixU0IBl7lzKHv2rhg51J_oXwJfI_H46LjqYHo,974
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=eHK0uv52T5TC_xQvSiMiuYIVVTJiKjttkcGwA5G0Uak,1966
131
- cognite/neat/_issues/warnings/_resources.py,sha256=s_HPZXrSyZroCnPjZ-gw4LDJF3FtFQsDhD-SNTk2fT4,1809
132
- cognite/neat/_issues/warnings/user_modeling.py,sha256=_DlhvR287jSvpVqKxImNpaztX-w3v9Ol-fBpqj_6nfo,3643
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=JrbtHRnF79mQN8Fkr6CowIKBMtrf8dRiI6Hjby34i3U,5606
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=W3fudZfgtdxWGLiH-ORIdrhcjWZLMCfLpOeGlCYQeco,15914
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=riUBmZCUlfUDgJo1rEseUWKkwgiUUsJoAd1I34d-FEM,1437
144
- cognite/neat/_rules/exporters/_rules2dms.py,sha256=gqMrNs7mcpY7hhPiIVcfavOjmI7xiJ8NOazrfAYHfEg,17247
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=Dg3zL5sFwFK-hu1rFREpwG9gw_RqhShMiM6TMwxYyfg,1389
151
- cognite/neat/_rules/importers/_base.py,sha256=R1Q-XP8Cs-A8d9qxwXbwuIxE-t4Hel21QxHsPMXLuAk,3247
152
- cognite/neat/_rules/importers/_dms2rules.py,sha256=elx9zfVLFJTKcYrTW1XYf9pUTEKlNfsUMvvbKoYhtFo,21423
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=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
- cognite/neat/_rules/importers/_rdf/_base.py,sha256=FCcLvhWWDBxXPUFBAz6DyztrI7gveBPp9OoSFeLvp2I,4604
160
- cognite/neat/_rules/importers/_rdf/_imf2rules/__init__.py,sha256=4ZuX81E-Tp4Vf6g_6Pb0iStzOCy7RJ83yxhvo4UddXY,63
161
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2classes.py,sha256=wx-AND5h7DSxYdGpwIuJ95mL46Pghm04MyMi1oOq9BM,3715
162
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2metadata.py,sha256=CX6kXXxD3RTKFOmY31OJFAzG6YJlUszTRwHNHwOlCOE,803
163
- cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2properties.py,sha256=sJ2PSOr2f-TcUkXo3Y5iS4LhCJ30MnyUzUkMrxQHJPg,6141
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=vjOK-q_WeUI94Y-zIOyfDMu4afHahgLAMXtro0VUips,996
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=nlXNqNwMTcMOvYltShEYIgVCv3ef0iybxZlOr3BCOZo,13555
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=CUqUlVjz4yZX_-61F-2ofSoV7N9MlSYx2N7vM-omp7E,640
181
- cognite/neat/_rules/models/dms/_exporter.py,sha256=AsysxEm-aIlx5J1xl3Abm28XEQ2sqXkDmgsdDYTRmRs,22211
182
- cognite/neat/_rules/models/dms/_rules.py,sha256=M5HgbBLWTsaJ-c42-VdUXra0aLgUWRZDtRhJ7tjP_kI,16487
183
- cognite/neat/_rules/models/dms/_rules_input.py,sha256=i7Q0VY2NiCP3r5livmo5Sc_ExhY1YZ44d9w5XloGVd0,10213
184
- cognite/neat/_rules/models/dms/_schema.py,sha256=mSeeXij2d6Rsp_WYiemG6DCp8xWJO3izKbw26kuA60Y,51290
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=tRu5jmCPnN35qxt0iJEVz_THcDUW6hShNCN_8DbREBE,17489
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=fVvgXt-JuyZCP_mLgIVaeKD9pdAXe2BWUxU_BZs8e5g,480
194
- cognite/neat/_rules/models/information/_rules.py,sha256=8ryAZ0ACuE5jmPoU56acgH1KwQDaaJgSVO-QeX6FhB0,11780
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=kFt8XoG16X86dVfAOxGeC8KGBJjKforICGBv3EVQVNo,6089
197
- cognite/neat/_rules/models/mapping/__init__.py,sha256=jSn-dCckmVQF0ClSBOBvVacprzNxdhPpdyIlYVajjMY,198
198
- cognite/neat/_rules/models/mapping/_base.py,sha256=xDjtbNvDXAh0F93WSvgdwoI_5K9XYu_w9hhG02ZZKtg,5922
199
- cognite/neat/_rules/models/mapping/_classic2core.py,sha256=JWJRLcEh7YSJrnYxSqaYboj1YrrsVnP7XTBj9AgVJ3A,6826
200
- cognite/neat/_rules/transformers/__init__.py,sha256=g-dsza2cx_zG8rEP1DyCs27_nfqiuzLCT3KVaKuNWu4,808
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=OkesAaIftYSnaKa5O3xPuu-SYzi1WZ4LACEo2MhaoPQ,35412
203
- cognite/neat/_rules/transformers/_mapping.py,sha256=xkGLs5PBRXKz8cbxhnfUwCL9tWJ4-Va2c3iW5fDQRWU,6536
204
- cognite/neat/_rules/transformers/_pipelines.py,sha256=-E5Hgitnr6ee8R9_3sqtjmWIPJ0w1xaLErG6Fo6ExVU,2603
205
- cognite/neat/_rules/transformers/_verification.py,sha256=PBZSm_WAzwBNFAcSsUR9oRMF9LDcbELnHu-IlqbxMm0,2505
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=gNaQga_XAdq4omLy_pH9PxMYLQVu2oNHzhEMIDFk-M4,9131
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/_inspect.py,sha256=g1WJzlh2DeEDitUXnXVUK2vlWFBzx7ypA9XrJWXrw3E,7023
210
- cognite/neat/_session/_prepare.py,sha256=izvC_dCkk3vy39qnSnx_Ifju2qBjWTv12LMXEujzyTE,11191
211
- cognite/neat/_session/_read.py,sha256=sHAMwVoqlo4BthK-pepbp6AQdrDo6XWKZj-zFFKgJ68,11821
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=T9tRrOpFoofhULVNmaLaJ2WRgQ9alkswdPDWhyG1PTI,5902
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=nFGeo-TVao_oaUJmfePcpfZehxCfjcsJ-kCCiUhJtuw,2148
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=nKfXaQmtW535aDQZs_EIhFiBnghazZkeuyMen2THxm0,13611
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=xMn9DyFEjT8kA5NR8I2eQN_k4Wn9EizBlT3LqNv16Pc,6715
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=opePcbRAsyGwmjfD6UH3EEM6usH0XYNJ2THpjNMChY4,45
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=oRNw5wVWOgYTryQaHKnFOQj8_hWcOUlHDtgoxDlD4iU,25506
263
- cognite/neat/_workflows/steps/lib/current/rules_importer.py,sha256=uoBne8M7lpLj3hb6hsjRL1sGDSQDWyxxuawVhe3lQCQ,17995
264
- cognite/neat/_workflows/steps/lib/current/rules_validator.py,sha256=-IwUv1GVTKQ-q2KVIIleuJ_5wzmmNvIEf6MLHpIHnqQ,4655
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.98.0.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
274
- cognite_neat-0.98.0.dist-info/METADATA,sha256=XjkNvkhFLWX-OAVwRvkz9-JpBThau_PwjHqkEJAErnA,9699
275
- cognite_neat-0.98.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
276
- cognite_neat-0.98.0.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
277
- cognite_neat-0.98.0.dist-info/RECORD,,
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,3 +0,0 @@
1
- from ._imf2rules import IMFImporter
2
-
3
- __all__ = ["IMFImporter"]
@@ -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")