Releases: cognitedata/neat
Releases · cognitedata/neat
0.112.0
Added
- Drop-down menus for columns in the Excel representation of DMS Rules
(data model)
Fixed
- The
neat.read.cdf.classic.graph()
no longer loses asset partens when
identifier='externalId'
.
0.111.2
Improved
- The
neat.to.cdf.instances()
no longer loads CogniteAsset (and
extensions) twice.
0.111.1
Dummy release, testing of new release flow.
v0.111.0
Fixed
- Passing
space_property
toneat.to.cdf.instances()
is no longer ignored. - The
neat.inspect.issues(...)
andneat.inspect.outcome.issues(...)
now prints out a maximum of 50 issues. This is
to avoid the output being too large. You can passreturn_dataframe=True
to get all issues as a DataFrame. - The
neat.read.cdf.classic.graph(..., identifier="externalId")
now correctly looks up external ID for
label.dataSetId, relationship.dataSetId, relationship.sourceExternalId, and relationship.targetExternalId. - The
neat.read.cdf.graph()
extracts json as a json-string instead of a regular string. - The
neat.read.cdf.graph()
has start and endNode properties for edges. - Now DMS rules validation are checked for existence of all components of schema, raise error if at least one is missing
- The
neat.to.cdf.instances(space_property=)'
now automatically fixes spaces with invalid characters - Filters were not taken into account when importing DMS Data Model
- Description was not properly parsed from DMS data model (e.g. split between creator and description)
- Print out of errors in
neat.inspect.issues()
- Handling of empty strings for implements in DMS and Information rules
Added
- Enable data model to be composed of views from multiple spaces with warning being raised
- The
neat.to.cdf.instances(space_property=)'
now automatically fixes spaces with invalid characters. - Support for less restrictive edge type
- Public interface for exporting data model to ontology via
neat.to.ontology()
- Alpha flags to readers / to-ers that are not critical for v1 of neat
- The
neat.read.cdf.raw(...)
method which supports reading raw data from CDF. - Added "Extending Core Data Model via Concept Selection" tutorial to docs
Improved
- Setting of proper value type for default
- Errors that do not have loc are now well handled in neat session
- Validation on used spaces
- The
neat.set.data_model_id()
now also sets the display name of the data model. - Data model implements visualization in NeatSession
v0.110.0
[0.110.0] - 17-02-2025
Added
- [ALPHA] Added standardization of version and space for views in DMS data model under
neat.prepare.data_model.standardize_space_and_version()
. - The
neat.to.excel(...)
now supports passing a data model directly in theinclude_reference
parameter. - [ALPHA] Ability to subset data model to desired concepts (classes/views) via
neat.subset.data_model
endpoint - Validation of DMS rules does not allow re-definition of any of the resources
- Validation of INFO rules does not allow re-definition of any of the resources
- Validation of DMS rules does not allow re-definition of any of the resources
Fixed
- In Model was not automatically set to True importing from spreadsheet missing value in this column
- Change the
Instance source
field on InformationProperty to be less restrictive. All URIs are now allowed. - The
neat.infer()
maintains acronyms when renaming invalid properties/classes. - neat.show.data_model() fixed for information rules
Changed
- Moved examples under neat.read.examples[nordic44, pump_example]
- [BREAKING] In Information rules, the
Instance Source
field is now a URIRef list instead of a RDFPath. In addition,
the classes now also have anInstance Source
column with the rdf:type of the class.
Improved
- The
neat.read.excel(...)
now gives more information about the location of the error in the Excel file. - Automatic drop of rows in Excel rules if cells for critical columns are missing
- [BREAKING] multi value types are now serialized as a comma separated values (previous we used
|
as separator) - The
neat.infer()
now is case-insensitive when inferring the data model. This is to match CDF's behavior.
[0.109.4] - 03-02-2025
Fixed
- The
neat.create.enterprise_model()
now sorts properties based on (view + property) in alphabetical order.
[0.109.3] - 03-02-2025
Added
- Support for standardizing of naming in the
neat.prepare.data_model.standardize_naming()
method.
Improved
neat.inspect.issues()
for errors in Metadata sheet and ill-formed views in te Views and Properties sheetsneat.infer()
now automatically makes the inferred classes and properties comply with the CDF naming conventions.
Fixed
- The
neat.create
+neat.to.excel(..., include_reference=True)
now correctly includes the reference data model
in the Excel file.
[0.109.2] - 31-01-2025
Added
- [ALPHA] Support for external modification of data model from NeatSession and its re-import
- Export of data model to Excel will now automatically hide the columns used for the internal neat processes.
- [ALPHA] when exporting data model to Excel one can specify to export only properties of views which are in the same space as the data model
Fixed
- The
neat.create.data_product_model
no longer includes properties pointing to views not in the model.
[0.109.1] - 28-01-2025
Fixed
- The
neat.inspect.issue()
now returns data model issues. - Issue with setting new data model id for rules that have raw filter
[0.109.0] - 28-01-2025
Improved
- AML and DEXPI reader for neat session automatically perform extraction and transformation
- The
get_cognite_client
function no longer prints an irrelevant warning message when running outside a git
repository. - The
neat.verify()
no longer gives warnings about emptyCognite
system containers. - The
neat.infer()
is now much faster for large number of instances. (It now scales linearly with number of properties
and not instances.). In addition, it supports inferring schema with an existing data model.
Changed
- [BREAKING] NeatSession.prepare.data_model.cdf_compliant_external_ids is moved under NeatSession.fix.data_model.cdf_compliant_external_ids
- [BREAKING]
cdf_compliant_external_ids
expects validated InformationRules as input instead of InformationInputRules - [BREAKING] The
neat.prepare.data_model.to_solution/to_enterprise/to_data_product
methods are moved to
neat.create.solution_model/enterprise_model/data_product_model
. In addition, the methods been simplified with
fewer parameters and better defaults. - [BREAKING] NeatSession.prepare.data_model.prefix works only on verified Information and DMS rules, where in case of both rules are provided, it will use DMS rules
- [BREAKING] The
neat.convert()
no longer takes a target parameter. Only conversion from Information to DMS rules is
supported. - [BREAKING] The
neat.prepare.data_model.drop(...)
has been moved toneat.drop.data_model.views(...)
. In addition,
thedrop
paramter has been split intoview_external_id
andgroup
to differentiate between dropping individual
views and groups of views.
Removed
- [BREAKING] NeatSession.prepare.dexpi and NeatSession.prepare.aml methods are removed. Use NeatSession.read.rdf.dexpi and NeatSession.read.rdf.aml instead.
- [BREAKING] NeatSession.prepare.data_model.cdf_compliant_external_ids
Fixed
- Fixed issue with not correctly set of max count when inferring properties which value type are multi type
neat.read.cdf.classic.graph
no longer requires read access to data sets in CDF.
Added
- Support for "on-disk" storage for oxigraph in NeatSession
- New method
neat.inspect.views()
to check the views in the data model.
[0.108.0] - 22-01-2025
Added
- Support RDF Datasets in NeatGraphStore enabling writing of sources triples to dedicated named graphs
- Support for classic graph using externalIDs
neat.read.cdf.classic.graph(..., id="externalId")
Improved
- The
neat.infer()
no longer skipsexternalId
/external_id
properties when inferring the data model. - Importing rules which were exported then modified externally then re-imported to the neat session
- The
neat.read.cdf.classic.graph(...)
gives an error is the root asset is not found in CDF. - The
neat.read.cdf.graph(...)
method now shows progress bars for each view when loading large graphs. - Initiating NeatSession will automatically select the best possible graph storage
- Form of internal neat data model
- The
neat.read.cdf.classic.graph(...)
now looks-up internal ids for external ids upon extraction instead of a
separate step. This has a significant performance improvement for large graphs.
Changed
- The
neat.read.cdf.graph(...)
no longer extracts instances from cognite views by default. Instead, the parameter
skip_cognite_views
has been added to the method to allow for this.
[0.107.0] - 15-01-2025
Fixed
- The
neat.prepare.instances.relationships_as_edges()
no longer creates invalid identifiers for the edges. - The
neat.to.cdf.instances()
can now create edges with properties.
Added
- Fast serialization of NeatGraphStore
neat.to.session(...)
andneat.from.session(...)
methods to save and load aNeatSession
object to and from a file.- Internal support for remote oxigraph store
- Neat can now read a knowledge graph from DMS with the
neat.read.cdf.graph(...)
method.
Improved
- Better error message if
NeatSession(..., storage="oxigraph")
and theoxigraph
package is not installed. - NeatIDs are now human-readable and deterministic.
- The
neat.convert()
from DMS ot information now sets the container.usedFor to "node"/"edge"/"all" based on
how the classes are implemented.
Changed
- [BREAKING] The
Transformation
column in the Information Data Model properties sheet has been renamed to
Instnace Source
. - [BREAKING] The
neat.convert()
no longer has a propertymode
used to recognize classes that should be implemented
as edges. Instead, information model to dms model conversion classes with bothstartNode
andendNode
properties
are implemented as edges.
Removed
- [BREAKING] The
neat.prepare.instances.classic_to_core()
andneat.prepare.data_models.add_implents_to_classes()
methods have been removed. These were only used for the classic to core flow. The simplified classic to core flow
now solves this automatically.
[0.106.0] - 09-01-2025
Added
- Method for setting session client,
neat.set.client(...)
.
Fixed
neat.prepare.instances.make_connection_on_exact_match
can now run multiple times.- The
mapping.data_model.classic_to_core
method now produces a..SourceSystem
with aguid
property that ensures
that only instances written through this view are returned when querying it. - The
neat.read.cdf.classic.graph(...)
now handles lack of access to CDF resources more gracefully.
Improved
neat.infer(...)
andneat.to.cdf.instances(...)
now display a progress bar if the number of instances is large.
[0.105.2] - 08-01-2025
Added
- The
get_cognite_client
function uses the current working directory to store the environment file if neat
is not run inside a git repository.
[0.105.1] - 08-01-2025
Added
neat.to.cdf.instances()
now automatically ignore relations above the DMS limit of 100. This is to ensure that
the instances are successfully loaded into CDF. A warning is issued to the user if any relations are ignored.
Fixed
- The
neat.prepare.instances.make_connection_on_exact_match
no longer raises aSyntaxError
when called.
[0.105.0] - 07-01-2025
Added
- All
neat.read
methods now supports reading from a URL. neat.prepare.instances.connection_to_data_type(...)
added to convert connection to data type.neat.prepare.instances.classic_to_core()
which bundles the preparation from classic to core.
Fixed
neat.read.yaml(...)
no longer raises aValueError
if a view is referencing an enum property in a container
that is not part of the model.neat.read.yaml('....zip', format='toolkit')
now correctly puts containers into a subfolder in the zip file.- `neat.to.cdf.data_model(......
v0.90.2
Changes from 0.88.3 until and including 0.90.2
-
Added:
DMSExtractor
to extract instances from CDF into NeatStore.- Support for edges with properties, explicit node types, and units on
fload64
andfloat32
in DMS Rules. - Support for enums in DMS Rules.
-
Improved:
- Data model visualization reduced to export-only in the Knowledge Acquisition tutorial.
- New video added for the Export Semantic Data Model chapter.
- Default handling for connections and unknown value types in DMS rules.
- Improved handling of properties pointing to non-existing nodes in data model inference.
- Improved handling of cardinality for attribute properties and multiple predicates in concept definitions.
-
Changed:
- Workflow renamed from
Visualize_Semantic_Data_Model
toExport_Semantic_Data_Model
. - Breaking change: Removed
InformationRules.as_dms_rules()
method, usecognite.neat.rules.transformers
andtransform
method instead.
- Workflow renamed from
-
Removed:
Visualize_Data_Model_Using_Mock_Graph
removed from UI, leaving only the workflow builder and executor features.
-
Fixed:
- File upload issue causing blank screens in UI.
- Graph store step config issue preventing triple loading.
- Circular dependency issue.
DMSLoader
now correctly identifies edges and sets node types.- IMF rules importer issue with non-compliant identifiers.
- Duplicate generation of properties.
v0.88.3
v0.88.2
Added
- IMF rules importer
Improved
- Organization of RDF based importers
Details
- Neat 341 inference importer issues with namespace prefix collision by @nikokaoja in #530
- Neat 336 asset loader introduce asset rule analysis module by @nikokaoja in #517
- [NEAT-343] 🎢 Asset Migration Toy Example Tutorial by @doctrino in #531
- [NEAT-344] 🙉 Custom Asset Types by @doctrino in #532
- [NEAT-310]🏰Large Example by @doctrino in #533
- Neat 345 unpack or not resource metadata by @nikokaoja in #535
- Neat 355 inference importer json string value type by @nikokaoja in #536
- Neat 347 extend depth transformer with typing by @nikokaoja in #538
- [NEAT-360] 🤹Add Reference Model by @doctrino in #539
- Neat 357 dms loader json type extension by @nikokaoja in #537
- [NEAT-364] 😼 Simplifying names by @doctrino in #543
- READ via DESCRIBE query by @nikokaoja in #541
- [NEAT-366] ✂Remove parent entity by @doctrino in #544
- [NEAT-153, NEAT-365]🧐Refactor analysis module by @doctrino in #545
- Neat 334 asset loader graph store interface by @nikokaoja in #542
- [NEAT-370] 🫷Added sentinel by @doctrino in #548
- [NEAT-120, NEAT-368 Part 1] 👷 Refactor utility module by @doctrino in #546
- [NEAT-374, NEAT-368 Part 2]👻 Refactor utility module part2 by @doctrino in #549
- Neat 371 asset loader topological sort of classes by @nikokaoja in #550
- Wrapping up asset loader by @nikokaoja in #551
- [NEAT-377]🫣Update Cognite-SDK by @doctrino in #553
- [NEAT-329]🧱Support Immutable by @doctrino in #555
- [NEAT-378] 💣 Removed superfluous linters by @doctrino in #556
- [NEAT-181, NEAT-358] Fix workflow name + update immutable by @doctrino in #557
- [NEAT-102] 🧹Cleanup Docs by @doctrino in #558
- Neat 371 relationship loader by @nikokaoja in #554
- Neat 373 labels by @nikokaoja in #559
- [NEAT-352] 🛎 Migraton tutorial part2 by @doctrino in #561
- [NEAT-380]😁 feat: add favicon by @doctrino in #562
- [NEAT-353] 😯Remove regex from inference. by @doctrino in #563
- remove legacy by @nikokaoja in #560
- [NEAT-379] 🏋 Skip bad metadata by @doctrino in #564
- Neat 381 clean up UI after legacy removal by @nikokaoja in #565
- Update _rdfpath.py by @nikokaoja in #567
- [NEAT-363] 🔥 Speedup tests by @doctrino in #566
- [NEAT-354] 🙂
↕️ Shared regex in utility by @doctrino in #568 - Neat 359 redo oxistore by @nikokaoja in #570
- [NEAT-243] 😵💫 Cleanup issues part2 by @doctrino in #569
- feat: Add IMF rules importer (#552) by @nikokaoja in #571
- [NEAT-243] 🥴Cleanup issues Part 3 by @doctrino in #572
- [NEAT-243] 😬 Cleanup Issues part 4 by @doctrino in #573
- [NEAT-243]🤨Issue cleanup part 5 by @doctrino in #574
- [NEAT-243]😮💨Cleanup issues part 6 by @doctrino in #575
- [NEAT-243] 🙄Cleanup Issues part 7 by @doctrino in #576
- [NEAT-243] 😏Cleanup Issues part 8 by @doctrino in #577
- [NEAT-243] 😑Cleanup Issues part 9 by @doctrino in #578
- [NEAT-243] 😒Cleanup Issues part 10 by @doctrino in #579
- [NEAT-243] 😶🌫️Cleanup Issues part 11 by @doctrino in #580
- [NEAT-243] 🥳Cleanup Issues part 12 by @doctrino in #581
Full Changelog: v0.85.4...v0.88.2