cognite-neat 1.0.0__py3-none-any.whl → 1.0.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.
- cognite/neat/_session/_session.py +4 -4
- cognite/neat/_session/_usage_analytics/_collector.py +2 -2
- cognite/neat/_version.py +1 -1
- cognite_neat-1.0.1.dist-info/METADATA +111 -0
- {cognite_neat-1.0.0.dist-info → cognite_neat-1.0.1.dist-info}/RECORD +7 -8
- cognite/neat/_session/_opt.py +0 -35
- cognite_neat-1.0.0.dist-info/METADATA +0 -145
- {cognite_neat-1.0.0.dist-info → cognite_neat-1.0.1.dist-info}/WHEEL +0 -0
- {cognite_neat-1.0.0.dist-info → cognite_neat-1.0.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -5,12 +5,12 @@ from cognite.client import ClientConfig, CogniteClient
|
|
|
5
5
|
from cognite.neat import _version
|
|
6
6
|
from cognite.neat._client import NeatClient
|
|
7
7
|
from cognite.neat._config import NeatConfig, PredefinedProfile
|
|
8
|
+
from cognite.neat._session._usage_analytics._collector import Collector
|
|
8
9
|
from cognite.neat._state_machine import EmptyState, PhysicalState
|
|
9
10
|
from cognite.neat._store import NeatStore
|
|
10
11
|
from cognite.neat._utils.http_client import ParametersRequest, SuccessResponse
|
|
11
12
|
|
|
12
13
|
from ._issues import Issues
|
|
13
|
-
from ._opt import Opt
|
|
14
14
|
from ._physical import PhysicalDataModel
|
|
15
15
|
from ._result import Result
|
|
16
16
|
|
|
@@ -38,10 +38,10 @@ class NeatSession:
|
|
|
38
38
|
self.physical_data_model = PhysicalDataModel(self._store, self._client, self._config)
|
|
39
39
|
self.issues = Issues(self._store)
|
|
40
40
|
self.result = Result(self._store)
|
|
41
|
-
self.opt = Opt(self._store)
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
collector = Collector()
|
|
43
|
+
if collector.can_collect:
|
|
44
|
+
collector.collect("initSession", {"mode": self._config.modeling.mode})
|
|
45
45
|
|
|
46
46
|
self._welcome_message()
|
|
47
47
|
|
|
@@ -61,11 +61,11 @@ class Collector:
|
|
|
61
61
|
|
|
62
62
|
@property
|
|
63
63
|
def is_opted_out(self) -> bool:
|
|
64
|
-
return
|
|
64
|
+
return False
|
|
65
65
|
|
|
66
66
|
@property
|
|
67
67
|
def is_opted_in(self) -> bool:
|
|
68
|
-
return
|
|
68
|
+
return True
|
|
69
69
|
|
|
70
70
|
def enable(self) -> None:
|
|
71
71
|
self._storage.write(self._opt_status_key, "opted-in")
|
cognite/neat/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "1.0.
|
|
1
|
+
__version__ = "1.0.1"
|
|
2
2
|
__engine__ = "^2.0.4"
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cognite-neat
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Knowledge graph transformation
|
|
5
|
+
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
6
|
+
Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
|
|
7
|
+
Project-URL: GitHub, https://github.com/cognitedata/neat
|
|
8
|
+
Project-URL: Changelog, https://github.com/cognitedata/neat/releases
|
|
9
|
+
Author-email: Nikola Vasiljevic <nikola.vasiljevic@cognite.com>, Anders Albert <anders.albert@cognite.com>
|
|
10
|
+
License-Expression: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: backports-strenum<2.0.0,>=1.2; python_version < '3.11'
|
|
14
|
+
Requires-Dist: cognite-sdk<8.0.0,>=7.83.0
|
|
15
|
+
Requires-Dist: elementpath<5.0.0,>=4.0.0
|
|
16
|
+
Requires-Dist: exceptiongroup<2.0.0,>=1.1.3; python_version < '3.11'
|
|
17
|
+
Requires-Dist: httpx>=0.28.1
|
|
18
|
+
Requires-Dist: jsonpath-python<2.0.0,>=1.0.6
|
|
19
|
+
Requires-Dist: mixpanel<5.0.0,>=4.10.1
|
|
20
|
+
Requires-Dist: networkx<4.0.0,>=3.4.2
|
|
21
|
+
Requires-Dist: openpyxl<4.0.0,>=3.0.10
|
|
22
|
+
Requires-Dist: packaging>=22.0
|
|
23
|
+
Requires-Dist: pandas<3.0.0,>=1.5.3
|
|
24
|
+
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
25
|
+
Requires-Dist: pyvis<1.0.0,>=0.3.2
|
|
26
|
+
Requires-Dist: pyyaml<7.0.0,>=6.0.1
|
|
27
|
+
Requires-Dist: rdflib<8.0.0,>=7.0.0
|
|
28
|
+
Requires-Dist: requests<3.0.0,>=2.28.1
|
|
29
|
+
Requires-Dist: rich[jupyter]<14.0.0,>=13.7.1
|
|
30
|
+
Requires-Dist: tomli<3.0.0,>=2.0.1; python_version < '3.11'
|
|
31
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.8.0; python_version < '3.11'
|
|
32
|
+
Requires-Dist: urllib3<3.0.0,>=1.26.15
|
|
33
|
+
Provides-Extra: docs
|
|
34
|
+
Requires-Dist: mistune==3.0.2; extra == 'docs'
|
|
35
|
+
Requires-Dist: mkdocs-autorefs<1.0.0,>=0.5.0; extra == 'docs'
|
|
36
|
+
Requires-Dist: mkdocs-git-authors-plugin<1.0.0,>=0.9.4; extra == 'docs'
|
|
37
|
+
Requires-Dist: mkdocs-git-revision-date-localized-plugin; extra == 'docs'
|
|
38
|
+
Requires-Dist: mkdocs-gitbook<1.0.0,>=0.0.1; extra == 'docs'
|
|
39
|
+
Requires-Dist: mkdocs-glightbox<1.0.0,>=0.4.0; extra == 'docs'
|
|
40
|
+
Requires-Dist: mkdocs-jupyter<1.0.0,>=0.25.1; extra == 'docs'
|
|
41
|
+
Requires-Dist: mkdocs-material-extensions<2.0.0,>=1.3.1; extra == 'docs'
|
|
42
|
+
Requires-Dist: mkdocs<2.0.0,>=1.4.0; extra == 'docs'
|
|
43
|
+
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.25.2; extra == 'docs'
|
|
44
|
+
Requires-Dist: pymdown-extensions<11.0.0,>=10.14.3; extra == 'docs'
|
|
45
|
+
Provides-Extra: google
|
|
46
|
+
Requires-Dist: google-api-python-client<3.0.0,>=2.70.0; extra == 'google'
|
|
47
|
+
Requires-Dist: google-auth-oauthlib<2.0.0,>=1.0.0; extra == 'google'
|
|
48
|
+
Requires-Dist: gspread<6.0.0,>=5.0.0; extra == 'google'
|
|
49
|
+
Provides-Extra: lxml
|
|
50
|
+
Requires-Dist: lxml<6.0.0,>=5.3.0; extra == 'lxml'
|
|
51
|
+
Provides-Extra: oxi
|
|
52
|
+
Requires-Dist: oxrdflib<0.5.0,>=0.4.0; extra == 'oxi'
|
|
53
|
+
Requires-Dist: pyoxigraph<0.5.0,>=0.4.3; extra == 'oxi'
|
|
54
|
+
Description-Content-Type: text/markdown
|
|
55
|
+
|
|
56
|
+
# kNowlEdge grAph Transformer (NEAT)
|
|
57
|
+
|
|
58
|
+
[](https://github.com/cognitedata/neat/actions/workflows/release.yaml)
|
|
59
|
+
[](https://cognite-neat.readthedocs-hosted.com/en/latest/?badge=latest)
|
|
60
|
+
[](https://github.com/cognitedata/neat)
|
|
61
|
+
[](https://pypi.org/project/cognite-neat/)
|
|
62
|
+
[](https://pypistats.org/packages/cognite-neat)
|
|
63
|
+
[](https://github.com/cognitedata/neat/blob/master/LICENSE)
|
|
64
|
+
[](https://github.com/ambv/black)
|
|
65
|
+
[](https://github.com/astral-sh/ruff)
|
|
66
|
+
[](http://mypy-lang.org)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
There was no easy way to make knowledge graphs, especially data models, and onboard them to
|
|
71
|
+
[Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform), so we have built NEAT!
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
NEAT is great for data model development, validation and deployment. It comes with an evergrowing library of validators,
|
|
75
|
+
which will assure that your data model adheres to the best practices and that is performant. Unlike other solutions,
|
|
76
|
+
which require you to be a technical wizard or modeling expert, NEAT provides you a guiding data modeling experience.
|
|
77
|
+
|
|
78
|
+
We offer various interfaces on how you can develop your data model, where majority of our users prefer
|
|
79
|
+
a combination of Jupyter Notebooks, leveraging NEAT features through so called [NeatSession](https://cognite-neat.readthedocs-hosted.com/en/latest/reference/NeatSession/session.html), with [a Spreadsheet data model template](https://cognite-neat.readthedocs-hosted.com/en/latest/excel_data_modeling/data_model.html).
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
Only Data modeling? There was more before!?
|
|
83
|
+
True, NEAT v0.x (legacy) offered a complete knowledge graph
|
|
84
|
+
tooling. Do not worry though, all the legacy features are still available and will be gradually
|
|
85
|
+
ported to NEAT v1.x according to the [roadmap](https://cognite-neat.readthedocs-hosted.com/en/latest/roadmap.html).
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
## Usage
|
|
89
|
+
The user interface for `NEAT` features is through `NeatSession`, which is typically instantiated in a notebook-based environment due to simplified interactivity with `NEAT`
|
|
90
|
+
and navigation of the session content. Once you have set up your notebook environment, and installed neat via:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pip install cognite-neat
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
you start by creating a `CogniteClient` and instantiate a `NeatSession` object:
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from cognite.neat import NeatSession, get_cognite_client
|
|
100
|
+
|
|
101
|
+
client = get_cognite_client(".env")
|
|
102
|
+
|
|
103
|
+
neat = NeatSession(client)
|
|
104
|
+
|
|
105
|
+
neat.physical_data_model.read.cdf("cdf_cdm", "CogniteCore", "v1")
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Documentation
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
@@ -2,7 +2,7 @@ cognite/neat/__init__.py,sha256=u5EhnGuNS2GKydU6lVFCNrBpHBBKUnCDAE63Cqk__eo,244
|
|
|
2
2
|
cognite/neat/_config.py,sha256=NXObeA-860LV40KlY4orsqjMGACa0jKRz2UE5L9kH6U,8401
|
|
3
3
|
cognite/neat/_exceptions.py,sha256=ox-5hXpee4UJlPE7HpuEHV2C96aLbLKo-BhPDoOAzhA,1650
|
|
4
4
|
cognite/neat/_issues.py,sha256=wH1mnkrpBsHUkQMGUHFLUIQWQlfJ_qMfdF7q0d9wNhY,1871
|
|
5
|
-
cognite/neat/_version.py,sha256=
|
|
5
|
+
cognite/neat/_version.py,sha256=4u0odea2n_kDMh-RrqZiEQvbH-i7WPm2CMDSC6GsjRA,44
|
|
6
6
|
cognite/neat/legacy.py,sha256=eI2ecxOV8ilGHyLZlN54ve_abtoK34oXognkFv3yvF0,219
|
|
7
7
|
cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
cognite/neat/_client/__init__.py,sha256=75Bh7eGhaN4sOt3ZcRzHl7pXaheu1z27kmTHeaI05vo,114
|
|
@@ -85,10 +85,9 @@ cognite/neat/_data_model/validation/dms/_orchestrator.py,sha256=XrozA27fbzWCuCQK
|
|
|
85
85
|
cognite/neat/_data_model/validation/dms/_views.py,sha256=M4egIa7UAMGtZlqzIxx6ZzL4e_qo8GbDGh7vs9wywD8,4266
|
|
86
86
|
cognite/neat/_session/__init__.py,sha256=owqW5Mml2DSZx1AvPvwNRTBngfhBNrQ6EH-7CKL7Jp0,61
|
|
87
87
|
cognite/neat/_session/_issues.py,sha256=E8UQeSJURg2dm4MF1pfD9dp-heSRT7pgQZgKlD1-FGs,2723
|
|
88
|
-
cognite/neat/_session/_opt.py,sha256=QcVK08JMmVzJpD0GKHelbljMOQi6CMD1w-maQOlbyZQ,1350
|
|
89
88
|
cognite/neat/_session/_physical.py,sha256=ajNanS87THBESx_y1x6p6LomqOe51b197VKPaBPLZ30,11377
|
|
90
89
|
cognite/neat/_session/_result.py,sha256=po2X4s-Tioe0GQAGCfK862hKXNRX5YjJZsEzNcTC8nI,7879
|
|
91
|
-
cognite/neat/_session/_session.py,sha256=
|
|
90
|
+
cognite/neat/_session/_session.py,sha256=STrX0Q7dXw9W7y9LFgLV_3XoYJk1fGSyBalSblLEj5w,3264
|
|
92
91
|
cognite/neat/_session/_wrappers.py,sha256=9t_MnJ0Sw_v-f6oTIh8dtAT-3oEbqumGuND97aPCC3M,3581
|
|
93
92
|
cognite/neat/_session/_html/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
93
|
cognite/neat/_session/_html/_render.py,sha256=fD8iee4ql50CrHGH41SSh9Tw1lM0tHt-NF0OnnxHosg,1193
|
|
@@ -102,7 +101,7 @@ cognite/neat/_session/_html/templates/__init__.py,sha256=hgufJuBxUZ2nLCMTCxGixmk
|
|
|
102
101
|
cognite/neat/_session/_html/templates/deployment.html,sha256=rhqcBI5no8h0BEiwTIQy5A3wvBygytCUolpc50yFiTE,3487
|
|
103
102
|
cognite/neat/_session/_html/templates/issues.html,sha256=k9Ml3LLeWGhpMfqSoCl6QuNRRy__E6Sa5S_I1Kc33NU,1659
|
|
104
103
|
cognite/neat/_session/_usage_analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
cognite/neat/_session/_usage_analytics/_collector.py,sha256=
|
|
104
|
+
cognite/neat/_session/_usage_analytics/_collector.py,sha256=8yVfzt8KFfZ-ldkVjDWazuQbs45Q3r6vWKcZEwU8i18,4734
|
|
106
105
|
cognite/neat/_session/_usage_analytics/_constants.py,sha256=-tVdYrCTMKfuMlbO7AlzC29Nug41ug6uuX9DFuihpJg,561
|
|
107
106
|
cognite/neat/_session/_usage_analytics/_storage.py,sha256=w3mUvmPysww6vM3PZBjg6jzNEsDISl7FJ1j19LNs26E,7779
|
|
108
107
|
cognite/neat/_state_machine/__init__.py,sha256=wrtQUHETiLzYM0pFo7JC6pJCiXetHADQbyMu8pU8rQU,195
|
|
@@ -313,7 +312,7 @@ cognite/neat/_v0/session/_to.py,sha256=AnsRSDDdfFyYwSgi0Z-904X7WdLtPfLlR0x1xsu_j
|
|
|
313
312
|
cognite/neat/_v0/session/_wizard.py,sha256=baPJgXAAF3d1bn4nbIzon1gWfJOeS5T43UXRDJEnD3c,1490
|
|
314
313
|
cognite/neat/_v0/session/exceptions.py,sha256=jv52D-SjxGfgqaHR8vnpzo0SOJETIuwbyffSWAxSDJw,3495
|
|
315
314
|
cognite/neat/_v0/session/_state/README.md,sha256=o6N7EL98lgyWffw8IoEUf2KG5uSKveD5__TW45YzVjA,902
|
|
316
|
-
cognite_neat-1.0.
|
|
317
|
-
cognite_neat-1.0.
|
|
318
|
-
cognite_neat-1.0.
|
|
319
|
-
cognite_neat-1.0.
|
|
315
|
+
cognite_neat-1.0.1.dist-info/METADATA,sha256=l7yHL8mmgURNdl9lHb2Gy6QmuUg8zaMJCYwEzUDTt8o,6030
|
|
316
|
+
cognite_neat-1.0.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
317
|
+
cognite_neat-1.0.1.dist-info/licenses/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
318
|
+
cognite_neat-1.0.1.dist-info/RECORD,,
|
cognite/neat/_session/_opt.py
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from cognite.neat._session._usage_analytics._collector import Collector
|
|
2
|
-
from cognite.neat._session._wrappers import session_wrapper
|
|
3
|
-
from cognite.neat._store import NeatStore
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
@session_wrapper
|
|
7
|
-
class Opt:
|
|
8
|
-
"""For the user to decide if they want their usage of neat to be collected or not. We do not collect personal
|
|
9
|
-
information like name etc. only usage.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
def __init__(self, store: NeatStore) -> None:
|
|
13
|
-
self._collector = Collector()
|
|
14
|
-
self._display()
|
|
15
|
-
self._store = store
|
|
16
|
-
|
|
17
|
-
def _display(self) -> None:
|
|
18
|
-
if self._collector.is_opted_in or self._collector.is_opted_out:
|
|
19
|
-
return
|
|
20
|
-
print(
|
|
21
|
-
"For Neat to improve, we need to collect usage information. "
|
|
22
|
-
"You acknowledge and agree that neat may collect usage information."
|
|
23
|
-
"To remove this message run 'neat.opt.in_() "
|
|
24
|
-
"or to stop collecting usage information run 'neat.opt.out()'."
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
def in_(self) -> None:
|
|
28
|
-
"""Consent to collection of neat user insights."""
|
|
29
|
-
self._collector.enable()
|
|
30
|
-
print("You have successfully opted in to data collection.")
|
|
31
|
-
|
|
32
|
-
def out(self) -> None:
|
|
33
|
-
"""Opt out of allowing usage of neat to be collected from current user."""
|
|
34
|
-
self._collector.disable()
|
|
35
|
-
print("You have successfully opted out of data collection.")
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: cognite-neat
|
|
3
|
-
Version: 1.0.0
|
|
4
|
-
Summary: Knowledge graph transformation
|
|
5
|
-
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
6
|
-
Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
|
|
7
|
-
Project-URL: GitHub, https://github.com/cognitedata/neat
|
|
8
|
-
Project-URL: Changelog, https://github.com/cognitedata/neat/releases
|
|
9
|
-
Author-email: Nikola Vasiljevic <nikola.vasiljevic@cognite.com>, Anders Albert <anders.albert@cognite.com>
|
|
10
|
-
License-Expression: Apache-2.0
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Requires-Python: >=3.10
|
|
13
|
-
Requires-Dist: backports-strenum<2.0.0,>=1.2; python_version < '3.11'
|
|
14
|
-
Requires-Dist: cognite-sdk<8.0.0,>=7.83.0
|
|
15
|
-
Requires-Dist: elementpath<5.0.0,>=4.0.0
|
|
16
|
-
Requires-Dist: exceptiongroup<2.0.0,>=1.1.3; python_version < '3.11'
|
|
17
|
-
Requires-Dist: httpx>=0.28.1
|
|
18
|
-
Requires-Dist: jsonpath-python<2.0.0,>=1.0.6
|
|
19
|
-
Requires-Dist: mixpanel<5.0.0,>=4.10.1
|
|
20
|
-
Requires-Dist: networkx<4.0.0,>=3.4.2
|
|
21
|
-
Requires-Dist: openpyxl<4.0.0,>=3.0.10
|
|
22
|
-
Requires-Dist: packaging>=22.0
|
|
23
|
-
Requires-Dist: pandas<3.0.0,>=1.5.3
|
|
24
|
-
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
25
|
-
Requires-Dist: pyvis<1.0.0,>=0.3.2
|
|
26
|
-
Requires-Dist: pyyaml<7.0.0,>=6.0.1
|
|
27
|
-
Requires-Dist: rdflib<8.0.0,>=7.0.0
|
|
28
|
-
Requires-Dist: requests<3.0.0,>=2.28.1
|
|
29
|
-
Requires-Dist: rich[jupyter]<14.0.0,>=13.7.1
|
|
30
|
-
Requires-Dist: tomli<3.0.0,>=2.0.1; python_version < '3.11'
|
|
31
|
-
Requires-Dist: typing-extensions<5.0.0,>=4.8.0; python_version < '3.11'
|
|
32
|
-
Requires-Dist: urllib3<3.0.0,>=1.26.15
|
|
33
|
-
Provides-Extra: docs
|
|
34
|
-
Requires-Dist: mistune==3.0.2; extra == 'docs'
|
|
35
|
-
Requires-Dist: mkdocs-autorefs<1.0.0,>=0.5.0; extra == 'docs'
|
|
36
|
-
Requires-Dist: mkdocs-git-authors-plugin<1.0.0,>=0.9.4; extra == 'docs'
|
|
37
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin; extra == 'docs'
|
|
38
|
-
Requires-Dist: mkdocs-gitbook<1.0.0,>=0.0.1; extra == 'docs'
|
|
39
|
-
Requires-Dist: mkdocs-glightbox<1.0.0,>=0.4.0; extra == 'docs'
|
|
40
|
-
Requires-Dist: mkdocs-jupyter<1.0.0,>=0.25.1; extra == 'docs'
|
|
41
|
-
Requires-Dist: mkdocs-material-extensions<2.0.0,>=1.3.1; extra == 'docs'
|
|
42
|
-
Requires-Dist: mkdocs<2.0.0,>=1.4.0; extra == 'docs'
|
|
43
|
-
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.25.2; extra == 'docs'
|
|
44
|
-
Requires-Dist: pymdown-extensions<11.0.0,>=10.14.3; extra == 'docs'
|
|
45
|
-
Provides-Extra: google
|
|
46
|
-
Requires-Dist: google-api-python-client<3.0.0,>=2.70.0; extra == 'google'
|
|
47
|
-
Requires-Dist: google-auth-oauthlib<2.0.0,>=1.0.0; extra == 'google'
|
|
48
|
-
Requires-Dist: gspread<6.0.0,>=5.0.0; extra == 'google'
|
|
49
|
-
Provides-Extra: lxml
|
|
50
|
-
Requires-Dist: lxml<6.0.0,>=5.3.0; extra == 'lxml'
|
|
51
|
-
Provides-Extra: oxi
|
|
52
|
-
Requires-Dist: oxrdflib<0.5.0,>=0.4.0; extra == 'oxi'
|
|
53
|
-
Requires-Dist: pyoxigraph<0.5.0,>=0.4.3; extra == 'oxi'
|
|
54
|
-
Description-Content-Type: text/markdown
|
|
55
|
-
|
|
56
|
-
# kNowlEdge grAph Transformer (NEAT)
|
|
57
|
-
|
|
58
|
-
[](https://github.com/cognitedata/neat/actions/workflows/release.yaml)
|
|
59
|
-
[](https://cognite-neat.readthedocs-hosted.com/en/latest/?badge=latest)
|
|
60
|
-
[](https://github.com/cognitedata/neat)
|
|
61
|
-
[](https://pypi.org/project/cognite-neat/)
|
|
62
|
-
[](https://pypistats.org/packages/cognite-neat)
|
|
63
|
-
[](https://hub.docker.com/r/cognite/neat)
|
|
64
|
-
[](https://github.com/cognitedata/neat/blob/master/LICENSE)
|
|
65
|
-
[](https://github.com/ambv/black)
|
|
66
|
-
[](https://github.com/astral-sh/ruff)
|
|
67
|
-
[](http://mypy-lang.org)
|
|
68
|
-
|
|
69
|
-
NEAT is a domain expert centric and developer friendly solution for rapid:
|
|
70
|
-
|
|
71
|
-
- data modeling
|
|
72
|
-
- extraction, transformation and loading of instances
|
|
73
|
-
- and ingestion of the models and instances (i.e. knowledge graphs) into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
|
|
74
|
-
|
|
75
|
-
NEAT is using open and globally recognized standards maintained by the [World Wide Web Consortium (W3C)](https://www.w3.org/RDF/).
|
|
76
|
-
NEAT represents an essential tool for creation of standardized, machine-actionable, linked and semantic (meta)data.
|
|
77
|
-
|
|
78
|
-
> NEAT is a funny acronym derived from k**N**owl**Ed**ge gr**A**ph **T**ransformer produced using [ACRONIMIFY](https://acronymify.com/NEAT/?q=knowledge+graph+transformer).
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## History
|
|
82
|
-
|
|
83
|
-
NEAT emerged from years of experience in semantic tooling and knowledge graph development. The foundation was laid in 2020 with [sheet2rdf](https://github.com/nikokaoja/sheet2rdf), an Excel-based tool that trained data stewards to build domain-specific knowledge graphs and supported CI/CD processes in the Dutch Covid program and european wind energy community.
|
|
84
|
-
|
|
85
|
-
By mid of 2022, sheet2rdf was used in several POCs in Cognite. As Cognite's Data Modeling Service (DMS) development progressed, the need for simplified data modeling experience led to demonstration of proto-NEAT, known as [sheet2fdm](https://github.com/cognitedata/sheet2fdm), an extension of sheet2rdf, enabling semantic data model definitions in OWL, SHACL, Python and GraphQL (see e.g., [wind energy data model](https://cognitedata.github.io/wind-energy-data-model/)) using a simplified version of sheet2rdf Excel template.
|
|
86
|
-
|
|
87
|
-
Presented in various forums in 2022, this approach paved the way for NEAT’s formal development in November 2022 to enable cost-saving and empowerment of Cognite customers to self-sufficiently maintain and onboard knowledge graphs to Cognite Data Fusion.
|
|
88
|
-
|
|
89
|
-
## Authorship
|
|
90
|
-
|
|
91
|
-
### Authors
|
|
92
|
-
The plot below shows the NEAT authorship from the start until present day.
|
|
93
|
-
|
|
94
|
-

|
|
95
|
-
|
|
96
|
-
#### Current authors
|
|
97
|
-
- [Nikola Vasiljević](www.linkedin.com/in/thisisnikola)
|
|
98
|
-
- [Anders Albert](https://www.linkedin.com/in/anders-albert-00790483/)
|
|
99
|
-
|
|
100
|
-
#### Former authors
|
|
101
|
-
- [Aleksandrs Livincovs](https://www.linkedin.com/in/aleksandrslivincovs/)
|
|
102
|
-
- [Julia Graham](https://www.linkedin.com/in/julia-graham-959a78a7/)
|
|
103
|
-
- [Rogerio Júnior](https://www.linkedin.com/in/rogerio-saboia-j%C3%BAnior-087118a7/)
|
|
104
|
-
|
|
105
|
-
### Contributors
|
|
106
|
-
We are very grateful for the contributions made by:
|
|
107
|
-
|
|
108
|
-
- [Kristina Tomičić](https://www.linkedin.com/in/kristina-tomicic-6bb443108/), who implemented Data Model and Instances visualization
|
|
109
|
-
- [Marie Solvik Lepoutre](https://www.linkedin.com/in/mslepoutre/), who improved RDF triples projections to Cognite Data Fusion
|
|
110
|
-
- [Bård Henning Tvedt](https://www.linkedin.com/in/bhtvedt/), who implemented IMF importer
|
|
111
|
-
- [Hassan Gomaa](https://www.linkedin.com/in/dr-hassan-gomaa-232638121/), who extended the DEXPI extractor
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## Sponsors
|
|
115
|
-
NEAT is developed and maintained by Cognite. We are grateful for the past support of our sponsors, who funded us to develop NEAT and to make it open source.
|
|
116
|
-
|
|
117
|
-
- [Statnett](https://www.statnett.no/) - the MIMIR team ([Ola Hagen Øyan](https://www.linkedin.com/in/ola-%C3%B8yan-b0205b19/), [Olav Westeng Alstad](https://www.linkedin.com/in/olav-w-alstad-52329191/),[Andreas Kimsås](https://www.linkedin.com/in/andreas-kims%C3%A5s-964a0b2/) and [Anders Willersrud](https://www.linkedin.com/in/anders-willersrud-13a20220/)) – who supported the development of NEAT from end of 2022 to mid of 2023 and its integration with Statnett's infrastructure, where NEAT was battle-tested as a tool for non-sematic experts to define data models and transform large knowledge graphs representing the entire Norwegian power grid system. Without Statnett's support NEAT would not exist in the first place, and would not be open-source.
|
|
118
|
-
- [Aker Solutions](https://www.akersolutions.com/) – the IMod Team (currently lead by [Maria Kenderkova](https://www.linkedin.com/in/maria-kenderkova/)), who funded development of NEAT from mid of 2023 till end of 2024 (multi-level and role-based data modeling, support for ontologies, IMF, DEXPI, AML,...) , as well who were early adopters and embraced NEAT and who were patient with us when things did not work so well. Aker Solutions was instrumental to elevating NEAT to a product level, and who selflessly advocate for NEAT globally.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
## Installation
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
pip install cognite-neat
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Usage
|
|
128
|
-
|
|
129
|
-
The user interface for `NEAT` is a notebook-based environment. Once you have set up your notebook
|
|
130
|
-
environment, you start by creating a `CogniteClient` and instantiate a `NeatSession` object.
|
|
131
|
-
|
|
132
|
-
```python
|
|
133
|
-
from cognite.neat import NeatSession, get_cognite_client
|
|
134
|
-
|
|
135
|
-
client = get_cognite_client(".env")
|
|
136
|
-
|
|
137
|
-
neat = NeatSession(client)
|
|
138
|
-
|
|
139
|
-
neat.read.cdf.data_model(("my_space", "MyDataModel", "v1"))
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Documentation
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
|
|
File without changes
|
|
File without changes
|