Data Modeling

Data Models

Retrieve data models by id(s)

DataModelsAPI.retrieve(ids: DataModelIdentifier | Sequence[DataModelIdentifier], inline_views: Literal[True]) DataModelList[View]
DataModelsAPI.retrieve(ids: DataModelIdentifier | Sequence[DataModelIdentifier], inline_views: Literal[False] = False) DataModelList[ViewId]

Retrieve data_model(s) by id(s).

Parameters
  • ids (DataModelIdentifier | Sequence[DataModelIdentifier]) – Data Model identifier(s).

  • inline_views (bool) – Whether to expand the referenced views inline in the returned result.

Returns

Requested data model(s) or empty if none exist.

Return type

DataModelList[ViewId] | DataModelList[View]

Examples

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.data_models.retrieve(("mySpace", "myDataModel", "v1"))

List data models

DataModelsAPI.list(inline_views: Literal[True], limit: int | None = DATA_MODELING_DEFAULT_LIMIT_READ, space: str | None = None, all_versions: bool = False, include_global: bool = False) DataModelList[View]
DataModelsAPI.list(inline_views: Literal[False] = False, limit: int | None = DATA_MODELING_DEFAULT_LIMIT_READ, space: str | None = None, all_versions: bool = False, include_global: bool = False) DataModelList[ViewId]

List data models

Parameters
  • inline_views (bool) – Whether to expand the referenced views inline in the returned result.

  • limit (int | None) – Maximum number of data model to return. Defaults to 10. Set to -1, float(“inf”) or None to return all items.

  • space (str | None) – The space to query.

  • all_versions (bool) – Whether to return all versions. If false, only the newest version is returned, which is determined based on the ‘createdTime’ field.

  • include_global (bool) – Whether to include global data models.

Returns

List of requested data models

Return type

DataModelList[View] | DataModelList[ViewId]

Examples

List 5 data model:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> data_model_list = client.data_modeling.data_models.list(limit=5)

Iterate over data model:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for data_model in client.data_modeling.data_models:
...     data_model # do something with the data_model

Iterate over chunks of data model to reduce memory load:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for data_model_list in client.data_modeling.data_models(chunk_size=10):
...     data_model_list # do something with the data model

Apply data models

DataModelsAPI.apply(data_model: Sequence[DataModelApply]) DataModelList
DataModelsAPI.apply(data_model: DataModelApply) DataModel

Create or update one or more data model.

Parameters

data_model (DataModelApply | Sequence[DataModelApply]) – Data model(s) to create or update (upsert).

Returns

Created data model(s)

Return type

DataModel | DataModelList

Examples

Create new data model:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import DataModelApply
>>> client = CogniteClient()
>>> data_models = [
...     DataModelApply(space="mySpace",external_id="myDataModel",version="v1"),
...     DataModelApply(space="mySpace",external_id="myOtherDataModel",version="v1")]
>>> res = client.data_modeling.data_models.apply(data_models)

Delete data models

DataModelsAPI.delete(ids: DataModelIdentifier | Sequence[DataModelIdentifier]) list[DataModelId]

Delete one or more data model

Parameters

ids (DataModelIdentifier | Sequence[DataModelIdentifier]) – Data Model identifier(s).

Returns

The data_model(s) which has been deleted. None if nothing was deleted.

Return type

list[DataModelId]

Examples

Delete data model by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.data_models.delete(("mySpace", "myDataModel", "v1"))

Data model data classes

class cognite.client.data_classes.data_modeling.data_models.DataModel(space: str, external_id: str, version: str, is_global: bool, last_updated_time: int, created_time: int, description: str | None, name: str | None, views: list[T_View] | None)

Bases: DataModelCore, Generic[T_View]

A group of views. This is the read version of a Data Model

Parameters
  • space (str) – The workspace for the data model, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the data model.

  • version (str) – DMS version.

  • is_global (bool) – Whether this is a global data model.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • description (str | None) – Textual description of the data model

  • name (str | None) – Human readable name for the data model.

  • views (list[T_View] | None) – List of views included in this data model.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.data_models.DataModelApply(space: str, external_id: str, version: str, description: str | None = None, name: str | None = None, views: list[ViewId | ViewApply] | None = None)

Bases: DataModelCore

A group of views. This is the write version of a Data Model.

Parameters
  • space (str) – The workspace for the data model, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the data model.

  • version (str) – DMS version.

  • description (str | None) – Textual description of the data model

  • name (str | None) – Human readable name for the data model.

  • views (list[ViewId | ViewApply] | None) – List of views included in this data model.

as_write() DataModelApply

Returns this DataModelApply instance.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.data_models.DataModelApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[DataModelApply]

as_ids() list[DataModelId]

Convert the list of data models to a list of data model ids.

Returns

The list of data model ids.

Return type

list[DataModelId]

class cognite.client.data_classes.data_modeling.data_models.DataModelCore(space: str, external_id: str, version: str, description: str | None, name: str | None)

Bases: DataModelingSchemaResource[DataModelApply], ABC

A group of views.

Parameters
  • space (str) – The workspace for the data model, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the data model.

  • version (str) – DMS version.

  • description (str | None) – Textual description of the data model

  • name (str | None) – Human readable name for the data model.

class cognite.client.data_classes.data_modeling.data_models.DataModelFilter(space: str | None = None, inline_views: bool = False, all_versions: bool = False, include_global: bool = False)

Bases: CogniteFilter

Represent the filer arguments for the list endpoint.

Parameters
  • space (str | None) – The space to query

  • inline_views (bool) – Whether to expand the referenced views inline in the returned result.

  • all_versions (bool) – Whether to return all versions. If false, only the newest version is returned, which is determined based on the ‘createdTime’ field.

  • include_global (bool) – Whether to include global views.

class cognite.client.data_classes.data_modeling.data_models.DataModelList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: WriteableCogniteResourceList[DataModelApply, DataModel[T_View]]

as_apply() DataModelApplyList

Convert the list of data models to a list of data model applies.

Returns

The list of data model applies.

Return type

DataModelApplyList

as_ids() list[DataModelId]

Convert the list of data models to a list of data model ids.

Returns

The list of data model ids.

Return type

list[DataModelId]

latest_version(key: Literal['created_time', 'last_updated_time'] = 'created_time') DataModel[T_View]

Get the data model in the list with the latest version. The latest version is determined based on the created_time or last_updated_time field.

Parameters

key (Literal["created_time", "last_updated_time"]) – The field to use for determining the latest version.

Returns

The data model with the latest version.

Return type

DataModel[T_View]

class cognite.client.data_classes.data_modeling.data_models.DataModelsSort(property: Literal['space', 'external_id', 'name', 'description', 'version', 'created_time', 'last_updated_time'], direction: Literal['ascending', 'descending'] = 'ascending', nulls_first: bool = False)

Bases: DataModelingSort

Spaces

Retrieve a space by id

SpacesAPI.retrieve(spaces: str) Space | None
SpacesAPI.retrieve(spaces: SequenceNotStr[str]) SpaceList

Retrieve one or more spaces.

Parameters

spaces (str | SequenceNotStr[str]) – Space ID

Returns

Requested space or None if it does not exist.

Return type

Space | SpaceList | None

Examples

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.spaces.retrieve(space='mySpace')

Get multiple spaces by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.spaces.retrieve(spaces=["MySpace", "MyAwesomeSpace", "MyOtherSpace"])

List spaces

SpacesAPI.list(limit: int | None = 25, include_global: bool = False) SpaceList

List spaces

Parameters
  • limit (int | None) – Maximum number of spaces to return. Defaults to 10. Set to -1, float(“inf”) or None to return all items.

  • include_global (bool) – Whether to include global spaces. Defaults to False.

Returns

List of requested spaces

Return type

SpaceList

Examples

List spaces and filter on max start time:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> space_list = client.data_modeling.spaces.list(limit=5)

Iterate over spaces:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for space in client.data_modeling.spaces:
...     space # do something with the space

Iterate over chunks of spaces to reduce memory load:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for space_list in client.data_modeling.spaces(chunk_size=2500):
...     space_list # do something with the spaces

Apply spaces

SpacesAPI.apply(spaces: Sequence[SpaceApply]) SpaceList
SpacesAPI.apply(spaces: SpaceApply) Space

Create or patch one or more spaces.

Parameters

spaces (SpaceApply | Sequence[SpaceApply]) – Space | Sequence[Space]): Space or spaces of spacesda to create or update.

Returns

Created space(s)

Return type

Space | SpaceList

Examples

Create new spaces:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import SpaceApply
>>> client = CogniteClient()
>>> spaces = [SpaceApply(space="mySpace", description="My first space", name="My Space"),
... SpaceApply(space="myOtherSpace", description="My second space", name="My Other Space")]
>>> res = client.data_modeling.spaces.apply(spaces)

Delete spaces

SpacesAPI.delete(spaces: str | SequenceNotStr[str]) list[str]

Delete one or more spaces

Parameters

spaces (str | SequenceNotStr[str]) – ID or ID list ids of spaces.

Returns

The space(s) which has been deleted.

Return type

list[str]

Examples

Delete spaces by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.spaces.delete(spaces=["mySpace", "myOtherSpace"])

Data classes

class cognite.client.data_classes.data_modeling.spaces.Space(space: str, is_global: bool, last_updated_time: int, created_time: int, description: str | None = None, name: str | None = None)

Bases: SpaceCore

A workspace for data models and instances. This is the read version.

Parameters
  • space (str) – A unique identifier for the space.

  • is_global (bool) – Whether the space is global or not.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • description (str | None) – Textual description of the space

  • name (str | None) – Human readable name for the space.

class cognite.client.data_classes.data_modeling.spaces.SpaceApply(space: str, description: str | None = None, name: str | None = None)

Bases: SpaceCore

A workspace for data models and instances. This is the write version

Parameters
  • space (str) – A unique identifier for the space.

  • description (str | None) – Textual description of the space

  • name (str | None) – Human readable name for the space.

as_write() SpaceApply

Returns this SpaceApply instance.

class cognite.client.data_classes.data_modeling.spaces.SpaceApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[SpaceApply]

as_ids() list[str]

Converts all the spaces to a space id list.

Returns

A list of space ids.

Return type

list[str]

class cognite.client.data_classes.data_modeling.spaces.SpaceCore(space: str, description: str | None, name: str | None)

Bases: WritableDataModelingResource[SpaceApply], ABC

A workspace for data models and instances.

Parameters
  • space (str) – A unique identifier for the space.

  • description (str | None) – Textual description of the space

  • name (str | None) – Human readable name for the space.

class cognite.client.data_classes.data_modeling.spaces.SpaceList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: WriteableCogniteResourceList[SpaceApply, Space]

as_apply() SpaceApplyList

Converts all the spaces to a space apply list.

Returns

A list of space applies.

Return type

SpaceApplyList

as_ids() list[str]

Converts all the spaces to a space id list..

Returns

A list of space ids.

Return type

list[str]

Views

Retrieve views by id(s)

ViewsAPI.retrieve(ids: ViewIdentifier | Sequence[ViewIdentifier], include_inherited_properties: bool = True, all_versions: bool = True) ViewList

Retrieve a single view by id.

Parameters
  • ids (ViewIdentifier | Sequence[ViewIdentifier]) – View identifier(s)

  • include_inherited_properties (bool) – Whether to include properties inherited from views this view implements.

  • all_versions (bool) – Whether to return all versions. If false, only the newest version is returned,

Returns

Requested view or None if it does not exist.

Return type

ViewList

Examples

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.views.retrieve(('mySpace', 'myView', 'v1'))

List views

ViewsAPI.list(limit: int | None = 10, space: str | None = None, include_inherited_properties: bool = True, all_versions: bool = False, include_global: bool = False) ViewList

List views

Parameters
  • limit (int | None) – Maximum number of views to return. Defaults to 10. Set to -1, float(“inf”) or None to return all items.

  • space (str | None) – (str | None): The space to query.

  • include_inherited_properties (bool) – Whether to include properties inherited from views this view implements.

  • all_versions (bool) – Whether to return all versions. If false, only the newest version is returned, which is determined based on the ‘createdTime’ field.

  • include_global (bool) – Whether to include global views.

Returns

List of requested views

Return type

ViewList

Examples

List 5 views:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> view_list = client.data_modeling.views.list(limit=5)

Iterate over views:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for view in client.data_modeling.views:
...     view # do something with the view

Iterate over chunks of views to reduce memory load:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for view_list in client.data_modeling.views(chunk_size=10):
...     view_list # do something with the views

Apply view

ViewsAPI.apply(view: Sequence[ViewApply]) ViewList
ViewsAPI.apply(view: ViewApply) View

Create or update (upsert) one or more views.

Parameters

view (ViewApply | Sequence[ViewApply]) – View(s) to create or update.

Returns

Created view(s)

Return type

View | ViewList

Examples

Create new views:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ViewApply, MappedPropertyApply, ContainerId
>>> client = CogniteClient()
>>> views = [
...     ViewApply(
...         space="mySpace",
...         external_id="myView",
...         version="v1",
...         properties={
...             "someAlias": MappedPropertyApply(
...                 container=ContainerId("mySpace", "myContainer"),
...                 container_property_identifier="someProperty",
...             ),
...         }
...    )
... ]
>>> res = client.data_modeling.views.apply(views)

Create views with edge relations:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import (
...     ContainerId,
...     DirectRelationReference,
...     MappedPropertyApply,
...     MultiEdgeConnectionApply,
...     ViewApply,
...     ViewId
... )
>>> client = CogniteClient()
>>> movie_view = ViewApply(
...     space="imdb",
...     external_id="Movie",
...     version="1",
...     name="Movie",
...     properties={
...         "name": MappedPropertyApply(
...             container=ContainerId("imdb", "Movie"),
...             name="name",
...             container_property_identifier="name",
...         ),
...         "actors": MultiEdgeConnectionApply(
...             type=DirectRelationReference(
...                 space="imdb", external_id="Movie.actors"
...             ),
...             source=ViewId("imdb", "Actor", "1"),
...             name="actors",
...             direction="outwards",
...         ),
...     }
... )
>>> actor_view = ViewApply(
...     space="imdb",
...     external_id="Actor",
...     version="1",
...     name="Actor",
...     properties={
...         "name": MappedPropertyApply(
...             container=ContainerId("imdb", "Actor"),
...             name="name",
...             container_property_identifier="name",
...         ),
...         "movies": MultiEdgeConnectionApply(
...             type=DirectRelationReference(
...                 space="imdb", external_id="Movie.actors"
...             ),
...             source=ViewId("imdb", "Movie", "1"),
...             name="movies",
...             direction="inwards",
...         ),
...     }
... )
>>> res = client.data_modeling.views.apply([movie_view, actor_view])

Delete views

ViewsAPI.delete(ids: ViewIdentifier | Sequence[ViewIdentifier]) list[ViewId]

Delete one or more views

Parameters

ids (ViewIdentifier | Sequence[ViewIdentifier]) – View identifier(s)

Returns

The identifier for the view(s) which has been deleted. Empty list if nothing was deleted.

Return type

list[ViewId]

Examples

Delete views by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.views.delete(('mySpace', 'myView', 'v1'))

View data classes

class cognite.client.data_classes.data_modeling.views.ConnectionDefinition

Bases: ViewProperty, ABC

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.ConnectionDefinitionApply

Bases: ViewPropertyApply, ABC

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.EdgeConnection(type: DirectRelationReference, source: ViewId, name: str | None, description: str | None, edge_source: ViewId | None, direction: Literal['outwards', 'inwards'])

Bases: ConnectionDefinition, ABC

Describes the edge(s) that are likely to exist to aid in discovery and documentation of the view. A listed edge is not required. i.e. It does not have to exist when included in this list. A connection has a max distance of one hop.

Parameters
  • type (DirectRelationReference) – Reference to the node pointed to by the direct relation. The reference consists of a space and an external-id.

  • source (ViewId) – The target node(s) of this connection can be read through the view specified in ‘source’.

  • name (str | None) – Readable property name.

  • description (str | None) – Description of the content and suggested use for this property.

  • edge_source (ViewId | None) – The edge(s) of this connection can be read through the view specified in ‘edgeSource’.

  • direction (Literal["outwards", "inwards"]) – The direction of the edge. The outward direction is used to indicate that the edge points from the source to the target. The inward direction is used to indicate that the edge points from the target to the source.

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.EdgeConnectionApply(type: DirectRelationReference, source: ViewId, name: str | None = None, description: str | None = None, edge_source: ViewId | None = None, direction: Literal['outwards', 'inwards'] = 'outwards')

Bases: ConnectionDefinitionApply, ABC

Describes the edge(s) that are likely to exist to aid in discovery and documentation of the view. A listed edge is not required. i.e. It does not have to exist when included in this list. A connection has a max distance of one hop.

It is called ‘EdgeConnection’ in the API spec.

Parameters
  • type (DirectRelationReference) – Reference to the node pointed to by the direct relation. The reference consists of a space and an external-id.

  • source (ViewId) – The target node(s) of this connection can be read through the view specified in ‘source’.

  • name (str | None) – Readable property name.

  • description (str | None) – Description of the content and suggested use for this property.

  • edge_source (ViewId | None) – The edge(s) of this connection can be read through the view specified in ‘edgeSource’.

  • direction (Literal["outwards", "inwards"]) – The direction of the edge. The outward direction is used to indicate that the edge points from the source to the target. The inward direction is used to indicate that the edge points from the target to the source.

abstract dump(camel_case: bool = True) dict

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MappedProperty(container: 'ContainerId', container_property_identifier: 'str', type: 'PropertyType', nullable: 'bool', auto_increment: 'bool', source: 'ViewId | None' = None, default_value: 'str | int | dict | None' = None, name: 'str | None' = None, description: 'str | None' = None)

Bases: ViewProperty

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MappedPropertyApply(container: 'ContainerId', container_property_identifier: 'str', name: 'str | None' = None, description: 'str | None' = None, source: 'ViewId | None' = None)

Bases: ViewPropertyApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MultiEdgeConnection(type: 'DirectRelationReference', source: 'ViewId', name: 'str | None', description: 'str | None', edge_source: 'ViewId | None', direction: "Literal[('outwards', 'inwards')]")

Bases: EdgeConnection

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MultiEdgeConnectionApply(type: 'DirectRelationReference', source: 'ViewId', name: 'str | None' = None, description: 'str | None' = None, edge_source: 'ViewId | None' = None, direction: "Literal[('outwards', 'inwards')]" = 'outwards')

Bases: EdgeConnectionApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MultiReverseDirectRelation(source: 'ViewId', through: 'PropertyId', name: 'str | None' = None, description: 'str | None' = None)

Bases: ReverseDirectRelation

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.MultiReverseDirectRelationApply(source: 'ViewId', through: 'PropertyId', name: 'str | None' = None, description: 'str | None' = None)

Bases: ReverseDirectRelationApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.ReverseDirectRelation(source: ViewId, through: PropertyId, name: str | None = None, description: str | None = None)

Bases: ConnectionDefinition, ABC

Describes the direct relation(s) pointing to instances read through this view. This connection type is used to aid in discovery and documentation of the view

It is called ‘ReverseDirectRelationConnection’ in the API spec.

Parameters
  • source (ViewId) – The node(s) containing the direct relation property can be read through the view specified in ‘source’.

  • through (PropertyId) – The view or container of the node containing the direct relation property.

  • name (str | None) – Readable property name.

  • description (str | None) – Description of the content and suggested use for this property.

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.ReverseDirectRelationApply(source: ViewId, through: PropertyId, name: str | None = None, description: str | None = None)

Bases: ConnectionDefinitionApply, ABC

Describes the direct relation(s) pointing to instances read through this view. This connection type is used to aid in discovery and documentation of the view.

It is called ‘ReverseDirectRelationConnection’ in the API spec.

Parameters
  • source (ViewId) – The node(s) containing the direct relation property can be read through the view specified in ‘source’.

  • through (PropertyId) – The view or container of the node containing the direct relation property.

  • name (str | None) – Readable property name.

  • description (str | None) – Description of the content and suggested use for this property.

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.SingleEdgeConnection(type: 'DirectRelationReference', source: 'ViewId', name: 'str | None', description: 'str | None', edge_source: 'ViewId | None', direction: "Literal[('outwards', 'inwards')]")

Bases: EdgeConnection

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.SingleEdgeConnectionApply(type: 'DirectRelationReference', source: 'ViewId', name: 'str | None' = None, description: 'str | None' = None, edge_source: 'ViewId | None' = None, direction: "Literal[('outwards', 'inwards')]" = 'outwards')

Bases: EdgeConnectionApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

cognite.client.data_classes.data_modeling.views.SingleHopConnectionDefinition

alias of MultiEdgeConnection

cognite.client.data_classes.data_modeling.views.SingleHopConnectionDefinitionApply

alias of MultiEdgeConnectionApply

class cognite.client.data_classes.data_modeling.views.SingleReverseDirectRelation(source: 'ViewId', through: 'PropertyId', name: 'str | None' = None, description: 'str | None' = None)

Bases: ReverseDirectRelation

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.SingleReverseDirectRelationApply(source: 'ViewId', through: 'PropertyId', name: 'str | None' = None, description: 'str | None' = None)

Bases: ReverseDirectRelationApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.View(space: str, external_id: str, version: str, properties: dict[str, ViewProperty], last_updated_time: int, created_time: int, description: str | None, name: str | None, filter: Filter | None, implements: list[ViewId] | None, writable: bool, used_for: Literal['node', 'edge', 'all'], is_global: bool)

Bases: ViewCore

A group of properties. Read only version.

Parameters
  • space (str) – The workspace for the view, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the view.

  • version (str) – DMS version.

  • properties (dict[str, ViewProperty]) – View with included properties and expected edges, indexed by a unique space-local identifier.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • description (str | None) – Textual description of the view

  • name (str | None) – Human readable name for the view.

  • filter (Filter | None) – A filter Domain Specific Language (DSL) used to create advanced filter queries.

  • implements (list[ViewId] | None) – References to the views from where this view will inherit properties and edges.

  • writable (bool) – Whether the view supports write operations.

  • used_for (Literal["node", "edge", "all"]) – Does this view apply to nodes, edges or both.

  • is_global (bool) – Whether this is a global container, i.e., one of the out-of-the-box models.

as_apply() ViewApply

Convert to a view applies.

Returns

The view apply.

Return type

ViewApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

referenced_containers() set[ContainerId]

Helper function to get the set of containers referenced by this view.

Returns

The set of containers referenced by this view.

Return type

set[ContainerId]

class cognite.client.data_classes.data_modeling.views.ViewApply(space: str, external_id: str, version: str, description: str | None = None, name: str | None = None, filter: Filter | None = None, implements: list[ViewId] | None = None, properties: dict[str, ViewPropertyApply] | None = None)

Bases: ViewCore

A group of properties. Write only version.

Parameters
  • space (str) – The workspace for the view, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the view.

  • version (str) – DMS version.

  • description (str | None) – Textual description of the view

  • name (str | None) – Human readable name for the view.

  • filter (Filter | None) – A filter Domain Specific Language (DSL) used to create advanced filter queries.

  • implements (list[ViewId] | None) – References to the views from where this view will inherit properties and edges.

  • properties (dict[str, ViewPropertyApply] | None) – No description.

Note

The order of elements (i.e., ViewId) in implements matters, as it indicates priority on how to handle collisions of same properties from different views. See docs on implemented property conflicts for more details.

as_write() ViewApply

Returns this ViewApply instance.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

referenced_containers() set[ContainerId]

Helper function to get the set of containers referenced by this view.

Returns

The set of containers referenced by this view.

Return type

set[ContainerId]

class cognite.client.data_classes.data_modeling.views.ViewApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[ViewApply]

as_ids() list[ViewId]

Returns the list of ViewIds

Returns

The list of ViewIds

Return type

list[ViewId]

referenced_containers() set[ContainerId]

Helper function to get the set of containers referenced by this view.

Returns

The set of containers referenced by this view.

Return type

set[ContainerId]

class cognite.client.data_classes.data_modeling.views.ViewCore(space: str, external_id: str, version: str, description: str | None, name: str | None, filter: Filter | None, implements: list[ViewId] | None)

Bases: DataModelingSchemaResource[ViewApply], ABC

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.ViewFilter(space: str | None = None, include_inherited_properties: bool = True, all_versions: bool = False, include_global: bool = False)

Bases: CogniteFilter

Represent the filer arguments for the list endpoint.

Parameters
  • space (str | None) – The space to query

  • include_inherited_properties (bool) – Whether to include properties inherited from views this view implements.

  • all_versions (bool) – Whether to return all versions. If false, only the newest version is returned, which is determined based on the ‘createdTime’ field.

  • include_global (bool) – Whether to include global views.

class cognite.client.data_classes.data_modeling.views.ViewList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: WriteableCogniteResourceList[ViewApply, View]

as_apply() ViewApplyList

Convert to a view an apply list.

Returns

The view apply list.

Return type

ViewApplyList

as_ids() list[ViewId]

Returns the list of ViewIds

Returns

The list of ViewIds

Return type

list[ViewId]

referenced_containers() set[ContainerId]

Helper function to get the set of containers referenced by this view.

Returns

The set of containers referenced by this view.

Return type

set[ContainerId]

class cognite.client.data_classes.data_modeling.views.ViewProperty

Bases: CogniteObject, ABC

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.views.ViewPropertyApply

Bases: CogniteObject, ABC

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

Containers

Retrieve containers by id(s)

ContainersAPI.retrieve(ids: Union[ContainerId, Tuple[str, str]]) Container | None
ContainersAPI.retrieve(ids: Sequence[Union[ContainerId, Tuple[str, str]]]) ContainerList

Retrieve one or more container by id(s).

Parameters

ids (ContainerIdentifier | Sequence[ContainerIdentifier]) – Identifier for container(s).

Returns

Requested container or None if it does not exist.

Return type

Container | ContainerList | None

Examples

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.containers.retrieve(('mySpace', 'myContainer'))

Fetch using the ContainerId:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ContainerId
>>> client = CogniteClient()
>>> res = client.data_modeling.containers.retrieve(ContainerId(space='mySpace', external_id='myContainer'))

List containers

ContainersAPI.list(space: str | None = None, limit: int | None = 10, include_global: bool = False) ContainerList

List containers

Parameters
  • space (str | None) – The space to query

  • limit (int | None) – Maximum number of containers to return. Defaults to 10. Set to -1, float(“inf”) or None to return all items.

  • include_global (bool) – Whether the global containers should be returned.

Returns

List of requested containers

Return type

ContainerList

Examples

List containers and limit to 5:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> container_list = client.data_modeling.containers.list(limit=5)

Iterate over containers:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for container in client.data_modeling.containers:
...     container # do something with the container

Iterate over chunks of containers to reduce memory load:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> for container_list in client.data_modeling.containers(chunk_size=10):
...     container_list # do something with the containers

Apply containers

ContainersAPI.apply(container: Sequence[ContainerApply]) ContainerList
ContainersAPI.apply(container: ContainerApply) Container

Add or update (upsert) containers.

Parameters

container (ContainerApply | Sequence[ContainerApply]) – Container(s) to create or update.

Returns

Created container(s)

Return type

Container | ContainerList

Examples

Create new containers:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ContainerApply, ContainerProperty, Text
>>> client = CogniteClient()
>>> container = [ContainerApply(space="mySpace", external_id="myContainer",
...     properties={"name": ContainerProperty(type=Text(), name="name")})]
>>> res = client.data_modeling.containers.apply(container)

Delete containers

ContainersAPI.delete(ids: ContainerIdentifier | Sequence[ContainerIdentifier]) list[ContainerId]

Delete one or more containers

Parameters

ids (ContainerIdentifier | Sequence[ContainerIdentifier]) – The container identifier(s).

Returns

The container(s) which has been deleted. Empty list if nothing was deleted.

Return type

list[ContainerId]

Examples

Delete containers by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.containers.delete(("mySpace", "myContainer"))

Containers data classes

class cognite.client.data_classes.data_modeling.containers.BTreeIndex(properties: 'list[str]', cursorable: 'bool' = False)

Bases: Index

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.Constraint

Bases: CogniteObject, ABC

abstract dump(camel_case: bool = True) dict[str, str | dict]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.Container(space: str, external_id: str, properties: dict[str, ContainerProperty], is_global: bool, last_updated_time: int, created_time: int, description: str | None, name: str | None, used_for: Literal['node', 'edge', 'all'], constraints: dict[str, Constraint] | None, indexes: dict[str, Index] | None)

Bases: ContainerCore

Represent the physical storage of data. This is the read format of the container

Parameters
  • space (str) – The workspace for the container, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the view.

  • properties (dict[str, ContainerProperty]) – We index the property by a local unique identifier.

  • is_global (bool) – Whether this is a global container, i.e., one of the out-of-the-box models.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • description (str | None) – Textual description of the view

  • name (str | None) – Human readable name for the view.

  • used_for (Literal["node", "edge", "all"]) – Should this operation apply to nodes, edges or both.

  • constraints (dict[str, Constraint] | None) – Set of constraints to apply to the container

  • indexes (dict[str, Index] | None) – Set of indexes to apply to the container.

class cognite.client.data_classes.data_modeling.containers.ContainerApply(space: str, external_id: str, properties: dict[str, ContainerProperty], description: str | None = None, name: str | None = None, used_for: Literal['node', 'edge', 'all'] | None = None, constraints: dict[str, Constraint] | None = None, indexes: dict[str, Index] | None = None)

Bases: ContainerCore

Represent the physical storage of data. This is the write format of the container

Parameters
  • space (str) – The workspace for the container, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the view.

  • properties (dict[str, ContainerProperty]) – We index the property by a local unique identifier.

  • description (str | None) – Textual description of the view

  • name (str | None) – Human readable name for the view.

  • used_for (Literal["node", "edge", "all"] | None) – Should this operation apply to nodes, edges or both.

  • constraints (dict[str, Constraint] | None) – Set of constraints to apply to the container

  • indexes (dict[str, Index] | None) – Set of indexes to apply to the container.

as_write() ContainerApply

Returns this ContainerApply instance.

class cognite.client.data_classes.data_modeling.containers.ContainerApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[ContainerApply]

as_ids() list[ContainerId]

Convert to a container id list.

Returns

The container id list.

Return type

list[ContainerId]

class cognite.client.data_classes.data_modeling.containers.ContainerCore(space: str, external_id: str, properties: dict[str, ContainerProperty], description: str | None, name: str | None, constraints: dict[str, Constraint] | None, indexes: dict[str, Index] | None)

Bases: DataModelingSchemaResource[ContainerApply], ABC

Represent the physical storage of data. This is the base class for the read and write version.

Parameters
  • space (str) – The workspace for the container, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the view.

  • properties (dict[str, ContainerProperty]) – We index the property by a local unique identifier.

  • description (str | None) – Textual description of the view

  • name (str | None) – Human readable name for the view.

  • constraints (dict[str, Constraint] | None) – Set of constraints to apply to the container

  • indexes (dict[str, Index] | None) – Set of indexes to apply to the container.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.ContainerFilter(space: str | None = None, include_global: bool = False)

Bases: CogniteFilter

Represent the filter arguments for the list endpoint.

Parameters
  • space (str | None) – The space to query

  • include_global (bool) – Whether the global containers should be included.

class cognite.client.data_classes.data_modeling.containers.ContainerList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: WriteableCogniteResourceList[ContainerApply, Container]

as_apply() ContainerApplyList

Convert to a ContainerApply list.

Returns

The container apply list.

Return type

ContainerApplyList

as_ids() list[ContainerId]

Convert to a container id list.

Returns

The container id list.

Return type

list[ContainerId]

class cognite.client.data_classes.data_modeling.containers.ContainerProperty(type: 'PropertyType', nullable: 'bool' = True, auto_increment: 'bool' = False, name: 'str | None' = None, default_value: 'str | int | dict | None' = None, description: 'str | None' = None)

Bases: CogniteObject

dump(camel_case: bool = True) dict[str, str | dict]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.Index

Bases: CogniteObject, ABC

abstract dump(camel_case: bool = True) dict[str, str | dict]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.InvertedIndex(properties: 'list[str]')

Bases: Index

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.RequiresConstraint(require: 'ContainerId')

Bases: Constraint

dump(camel_case: bool = True) dict[str, str | dict]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.containers.UniquenessConstraint(properties: 'list[str]')

Bases: Constraint

dump(camel_case: bool = True) dict[str, str | dict]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

Instances

Retrieve instances by id(s)

InstancesAPI.retrieve(nodes: NodeId | Sequence[NodeId] | tuple[str, str] | Sequence[tuple[str, str]] | None = None, edges: EdgeId | Sequence[EdgeId] | tuple[str, str] | Sequence[tuple[str, str]] | None = None, sources: ViewIdentifier | Sequence[ViewIdentifier] | View | Sequence[View] | None = None, include_typing: bool = False) InstancesResult

Retrieve one or more instance by id(s).

Parameters
  • nodes (NodeId | Sequence[NodeId] | tuple[str, str] | Sequence[tuple[str, str]] | None) – Node ids

  • edges (EdgeId | Sequence[EdgeId] | tuple[str, str] | Sequence[tuple[str, str]] | None) – Edge ids

  • sources (ViewIdentifier | Sequence[ViewIdentifier] | View | Sequence[View] | None) – Retrieve properties from the listed - by reference - views.

  • include_typing (bool) – Whether to return property type information as part of the result.

Returns

Requested instances.

Return type

InstancesResult

Examples

Retrieve instances by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.retrieve(
...     nodes=("mySpace", "myNodeExternalId"),
...     edges=("mySpace", "myEdgeExternalId"),
...     sources=("mySpace", "myViewExternalId", "myViewVersion"))

Retrieve nodes an edges using the built in data class

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId, ViewId
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.retrieve(
...     NodeId("mySpace", "myNode"),
...     EdgeId("mySpace", "myEdge"),
...     ViewId("mySpace", "myViewExternalId", "myViewVersion"))

Retrieve nodes an edges using the the view object as source

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.retrieve(
...     NodeId("mySpace", "myNode"),
...     EdgeId("mySpace", "myEdge"),
...     sources=("myspace", "myView"))

List instances

InstancesAPI.list(instance_type: Literal['node'] = 'node', include_typing: bool = False, sources: ViewIdentifier | Sequence[ViewIdentifier] | View | Sequence[View] | None = None, space: str | Sequence[str] | None = None, limit: int | None = DEFAULT_LIMIT_READ, sort: Sequence[InstanceSort | dict] | InstanceSort | dict | None = None, filter: Filter | dict | None = None) NodeList
InstancesAPI.list(instance_type: Literal['edge'], include_typing: bool = False, sources: ViewIdentifier | Sequence[ViewIdentifier] | View | Sequence[View] | None = None, space: str | Sequence[str] | None = None, limit: int | None = DEFAULT_LIMIT_READ, sort: Sequence[InstanceSort | dict] | InstanceSort | dict | None = None, filter: Filter | dict | None = None) EdgeList

List instances

Parameters
  • instance_type (Literal["node", "edge"]) – Whether to query for nodes or edges.

  • include_typing (bool) – Whether to return property type information as part of the result.

  • sources (ViewIdentifier | Sequence[ViewIdentifier] | View | Sequence[View] | None) – Views to retrieve properties from.

  • space (str | Sequence[str] | None) – Only return instances in the given space (or list of spaces).

  • limit (int | None) – Maximum number of instances to return. Defaults to 25. Set to -1, float(“inf”) or None to return all items.

  • sort (Sequence[InstanceSort | dict] | InstanceSort | dict | None) – How you want the listed instances information ordered.

  • filter (Filter | dict | None) – Advanced filtering of instances.

Returns

List of requested instances

Return type

NodeList | EdgeList

Examples

List instances and limit to 5:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> instance_list = client.data_modeling.instances.list(limit=5)

List some instances in the space ‘my-space’:

>>> instance_list = client.data_modeling.instances.list(space="my-space")

List instances and sort by some property:

>>> from cognite.client.data_classes.data_modeling import InstanceSort
>>> property_sort = InstanceSort(
...     property=('space', 'view_xid/view_version', 'some_property'),
...     direction="descending",
...     nulls_first=True)
>>> instance_list = client.data_modeling.instances.list(sort=property_sort)

Iterate over instances (note: returns nodes):

>>> for instance in client.data_modeling.instances:
...     instance # do something with the instance

Iterate over chunks of instances to reduce memory load:

>>> for instance_list in client.data_modeling.instances(chunk_size=100):
...     instance_list # do something with the instances

Apply instances

InstancesAPI.apply(nodes: NodeApply | Sequence[NodeApply] | None = None, edges: EdgeApply | Sequence[EdgeApply] | None = None, auto_create_start_nodes: bool = False, auto_create_end_nodes: bool = False, auto_create_direct_relations: bool = True, skip_on_version_conflict: bool = False, replace: bool = False) InstancesApplyResult

Add or update (upsert) instances.

Parameters
  • nodes (NodeApply | Sequence[NodeApply] | None) – Nodes to apply

  • edges (EdgeApply | Sequence[EdgeApply] | None) – Edges to apply

  • auto_create_start_nodes (bool) – Whether to create missing start nodes for edges when ingesting. By default, the start node of an edge must exist before it can be ingested.

  • auto_create_end_nodes (bool) – Whether to create missing end nodes for edges when ingesting. By default, the end node of an edge must exist before it can be ingested.

  • auto_create_direct_relations (bool) – Whether to create missing direct relation targets when ingesting.

  • skip_on_version_conflict (bool) – If existingVersion is specified on any of the nodes/edges in the input, the default behaviour is that the entire ingestion will fail when version conflicts occur. If skipOnVersionConflict is set to true, items with version conflicts will be skipped instead. If no version is specified for nodes/edges, it will do the writing directly.

  • replace (bool) – How do we behave when a property value exists? Do we replace all matching and existing values with the supplied values (true)? Or should we merge in new values for properties together with the existing values (false)? Note: This setting applies for all nodes or edges specified in the ingestion call.

Returns

Created instance(s)

Return type

InstancesApplyResult

Examples

Create new node without data:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import EdgeApply, NodeOrEdgeData, NodeApply
>>> client = CogniteClient()
>>> nodes = [NodeApply("mySpace", "myNodeId")]
>>> res = client.data_modeling.instances.apply(nodes)

Create two nodes with data with a one-to-many edge

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import EdgeApply, NodeOrEdgeData, NodeApply, ViewId
>>> actor = NodeApply(
...     space="actors",
...     external_id="arnold_schwarzenegger",
...     sources=[
...         NodeOrEdgeData(
...             ViewId("mySpace", "PersonView", "v1"),
...             {"name": "Arnold Schwarzenegger", "birthYear": 1947}
...         ),
...         NodeOrEdgeData(
...             ViewId("mySpace", "ActorView", "v1"),
...             {"wonOscar": False}
...         )
...     ]
... )
>>> movie = NodeApply(
...     space="movies",
...     external_id="Terminator",
...     sources=[
...         NodeOrEdgeData(
...             ViewId("mySpace", "MovieView", "v1"),
...             {"title": "Terminator", "releaseYear": 1984}
...         )
...     ]
... )
... # This is one-to-many edge, in this case from a person to a movie
>>> actor_to_movie = EdgeApply(
...     space="actors",
...     external_id="relation:arnold_schwarzenegger:terminator",
...     type=("types", "acts-in"),
...     start_node=("actors", "arnold_schwarzenegger"),
...     end_node=("movies", "Terminator"),
... )
>>> res = client.data_modeling.instances.apply([actor, movie], [actor_to_movie])

Create new edge and automatically create end nodes.

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import EdgeApply
>>> client = CogniteClient()
>>> actor_to_movie = EdgeApply(
...     space="actors",
...     external_id="relation:arnold_schwarzenegger:terminator",
...     type=("types", "acts-in"),
...     start_node=("actors", "arnold_schwarzenegger"),
...     end_node=("movies", "Terminator"),
... )
>>> res = client.data_modeling.instances.apply(
...     edges=actor_to_movie,
...     auto_create_start_nodes=True,
...     auto_create_end_nodes=True
... )

Search instances

InstancesAPI.search(view: ViewId, query: str, instance_type: Literal['node'] = 'node', properties: list[str] | None = None, space: str | Sequence[str] | None = None, filter: Filter | dict | None = None, limit: int = DEFAULT_LIMIT_READ) NodeList
InstancesAPI.search(view: ViewId, query: str, instance_type: Literal['edge'], properties: list[str] | None = None, space: str | Sequence[str] | None = None, filter: Filter | dict | None = None, limit: int = DEFAULT_LIMIT_READ) EdgeList

Search instances

Parameters
  • view (ViewId) – View to search in.

  • query (str) – Query string that will be parsed and used for search.

  • instance_type (Literal["node", "edge"]) – Whether to search for nodes or edges.

  • properties (list[str] | None) – Optional array of properties you want to search through. If you do not specify one or more properties, the service will search all text fields within the view.

  • space (str | Sequence[str] | None) – Restrict instance search to the given space (or list of spaces).

  • filter (Filter | dict | None) – Advanced filtering of instances.

  • limit (int) – Maximum number of instances to return. Defaults to 25.

Returns

Search result with matching nodes or edges.

Return type

NodeList | EdgeList

Examples

Search for Arnold in the person view in the name property:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ViewId
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.search(
...     ViewId("mySpace", "PersonView", "v1"),
...     query="Arnold",
...     properties=["name"])

Search for Quentin in the person view in the name property, but only born after 1970:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ViewId
>>> from cognite.client.data_classes import filters
>>> client = CogniteClient()
>>> born_after_1970 = filters.Range(["mySpace", "PersonView/v1", "birthYear"], gt=1970)
>>> res = client.data_modeling.instances.search(
...     ViewId("mySpace", "PersonView", "v1"),
...     query="Quentin",
...     properties=["name"],
...     filter=born_after_1970)

Aggregate instances

InstancesAPI.aggregate(view: ViewId, aggregates: MetricAggregation | dict, group_by: None = None, instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: str | SequenceNotStr[str] | None = None, space: str | Sequence[str] | None = None, filter: Filter | dict | None = None, limit: int = DEFAULT_LIMIT_READ) AggregatedNumberedValue
InstancesAPI.aggregate(view: ViewId, aggregates: Sequence[MetricAggregation | dict], group_by: None = None, instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: str | SequenceNotStr[str] | None = None, space: str | Sequence[str] | None = None, filter: Filter | dict | None = None, limit: int = DEFAULT_LIMIT_READ) list[AggregatedNumberedValue]
InstancesAPI.aggregate(view: ViewId, aggregates: MetricAggregation | dict | Sequence[MetricAggregation | dict], group_by: str | SequenceNotStr[str], instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: str | SequenceNotStr[str] | None = None, space: str | Sequence[str] | None = None, filter: Filter | dict | None = None, limit: int = DEFAULT_LIMIT_READ) InstanceAggregationResultList

Aggregate data across nodes/edges

Parameters
  • view (ViewId) – View to aggregate over.

  • aggregates (MetricAggregation | dict | Sequence[MetricAggregation | dict]) – The properties to aggregate over.

  • group_by (str | SequenceNotStr[str] | None) – The selection of fields to group the results by when doing aggregations. You can specify up to 5 items to group by.

  • instance_type (Literal["node", "edge"]) – The type of instance.

  • query (str | None) – Optional query string. The API will parse the query string, and use it to match the text properties on elements to use for the aggregate(s).

  • properties (str | SequenceNotStr[str] | None) – Optional list of properties you want to apply the query to. If you do not list any properties, you search through text fields by default.

  • space (str | Sequence[str] | None) – Restrict instance aggregate query to the given space (or list of spaces).

  • filter (Filter | dict | None) – Advanced filtering of instances.

  • limit (int) – Maximum number of instances to return. Defaults to 25.

Returns

Node or edge aggregation results.

Return type

AggregatedNumberedValue | list[AggregatedNumberedValue] | InstanceAggregationResultList

Examples

Get the average run time in minutes for movies grouped by release year:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import ViewId, aggregations as aggs
>>> client = CogniteClient()
>>> avg_run_time = aggs.Avg("runTimeMinutes")
>>> view_id = ViewId("mySpace", "PersonView", "v1")
>>> res = client.data_modeling.instances.aggregate(view_id, avg_run_time, group_by="releaseYear")

Query instances

InstancesAPI.query(query: Query) QueryResult

Advanced query interface for nodes/edges.

The Data Modelling API exposes an advanced query interface. The query interface supports parameterization, recursive edge traversal, chaining of result sets, and granular property selection.

Parameters

query (Query) – Query.

Returns

The resulting nodes and/or edges from the query.

Return type

QueryResult

Examples

Find actors in movies released before 2000 sorted by actor name:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling.query import Query, Select, NodeResultSetExpression, EdgeResultSetExpression, SourceSelector
>>> from cognite.client.data_classes.filters import Range, Equals
>>> from cognite.client.data_classes.data_modeling.ids import ViewId
>>> client = CogniteClient()
>>> movie_id = ViewId("mySpace", "MovieView", "v1")
>>> actor_id = ViewId("mySpace", "ActorView", "v1")
>>> query = Query(
...     with_ = {
...         "movies": NodeResultSetExpression(filter=Range(movie_id.as_property_ref("releaseYear"), lt=2000)),
...         "actors_in_movie": EdgeResultSetExpression(from_="movies", filter=Equals(["edge", "type"], {"space": movie_id.space, "externalId": "Movie.actors"})),
...         "actors": NodeResultSetExpression(from_="actors_in_movie"),
...     },
...     select = {
...         "actors": Select(
...             [SourceSelector(actor_id, ["name"])], sort=[InstanceSort(actor_id.as_property_ref("name"))]),
...     },
... )
>>> res = client.data_modeling.instances.query(query)

Sync instances

InstancesAPI.sync(query: Query) QueryResult

Subscription to changes for nodes/edges.

Subscribe to changes for nodes and edges in a project, matching a supplied filter.

Parameters

query (Query) – Query.

Returns

The resulting nodes and/or edges from the query.

Return type

QueryResult

Examples

Find actors in movies released before 2000 sorted by actor name:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling.instances import InstanceSort
>>> from cognite.client.data_classes.data_modeling.query import Query, Select, NodeResultSetExpression, EdgeResultSetExpression, SourceSelector
>>> from cognite.client.data_classes.filters import Range, Equals
>>> from cognite.client.data_classes.data_modeling.ids import ViewId
>>> client = CogniteClient()
>>> movie_id = ViewId("mySpace", "MovieView", "v1")
>>> actor_id = ViewId("mySpace", "ActorView", "v1")
>>> query = Query(
...     with_ = {
...         "movies": NodeResultSetExpression(filter=Range(movie_id.as_property_ref("releaseYear"), lt=2000)),
...         "actors_in_movie": EdgeResultSetExpression(from_="movies", filter=Equals(["edge", "type"], {"space": movie_id.space, "externalId": "Movie.actors"})),
...         "actors": NodeResultSetExpression(from_="actors_in_movie"),
...     },
...     select = {
...         "actors": Select(
...             [SourceSelector(actor_id, ["name"])], sort=[InstanceSort(actor_id.as_property_ref("name"))]),
...     },
... )
>>> res = client.data_modeling.instances.sync(query)
>>> # Added a new movie with actors released before 2000
>>> query.cursors = res.cursors
>>> res_new = client.data_modeling.instances.sync(query)

In the last example, the res_new will only contain the actors that have been added with the new movie.

InstancesAPI.subscribe(query: Query, callback: Callable[[QueryResult], None], poll_delay_seconds: float = 30, throttle_seconds: float = 1) SubscriptionContext

Subscribe to a query and get updates when the result set changes. This invokes the sync() method in a loop in a background thread.

We do not support chaining result sets when subscribing to a query.

Parameters
  • query (Query) – The query to subscribe to.

  • callback (Callable[[QueryResult], None]) – The callback function to call when the result set changes.

  • poll_delay_seconds (float) – The time to wait between polls when no data is present. Defaults to 30 seconds.

  • throttle_seconds (float) – The time to wait between polls despite data being present.

Returns

An object that can be used to cancel the subscription.

Return type

SubscriptionContext

Examples

Subscribe to a given query and print the changed data:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling.query import Query, QueryResult, NodeResultSetExpression, Select, SourceSelector
>>> from cognite.client.data_classes.data_modeling import ViewId
>>> from cognite.client.data_classes.filters import Range
>>>
>>> client = CogniteClient()
>>> def just_print_the_result(result: QueryResult) -> None:
...     print(result)
...
>>> view_id = ViewId("someSpace", "someView", "v1")
>>> filter = Range(view_id.as_property_ref("releaseYear"), lt=2000)
>>> query = Query(
...     with_={"movies": NodeResultSetExpression(filter=filter)},
...     select={"movies": Select([SourceSelector(view_id, ["releaseYear"])])}
... )
>>> subscription_context = client.data_modeling.instances.subscribe(query, just_print_the_result)
>>> subscription_context.cancel()

Example on syncing instances to local sqlite

import json
import time
import sqlite3

from cognite.client import CogniteClient
from cognite.client.data_classes.data_modeling.instances import (
    SubscriptionContext,
)
from cognite.client.data_classes.data_modeling.query import (
    QueryResult,
    Query,
    NodeResultSetExpression,
    Select,
)
from cognite.client.data_classes.filters import Equals

client = CogniteClient()


def sqlite_connection(db_name: str) -> sqlite3.Connection:
    return sqlite3.connect(db_name, check_same_thread=False)


def bootstrap_sqlite(db_name: str) -> None:
    with sqlite_connection(db_name) as connection:
        connection.execute(
            """
            CREATE TABLE IF NOT EXISTS instance (
                space TEXT,
                external_id TEXT,
                data JSON,
                PRIMARY KEY(space, external_id)
            )
            """
        )
        connection.execute("CREATE TABLE IF NOT EXISTS cursor (cursor TEXT)")


def sync_space_to_sqlite(
    db_name: str, space_to_sync: str
) -> SubscriptionContext:
    with sqlite_connection(db_name) as connection:
        existing_cursor = connection.execute(
            "SELECT cursor FROM cursor"
        ).fetchone()
        if existing_cursor:
            print("Found existing cursor, using that")

    query = Query(
        with_={
            "nodes": NodeResultSetExpression(
                filter=Equals(property=["node", "space"], value=space_to_sync)
            )
        },
        select={"nodes": Select()},
        cursors={"nodes": existing_cursor[0] if existing_cursor else None},
    )

    def _sync_batch_to_sqlite(result: QueryResult):
        with sqlite_connection(db_name) as connection:
            inserts = []
            deletes = []
            for node in result["nodes"]:
                if node.deleted_time is None:
                    inserts.append(
                        (node.space, node.external_id, json.dumps(node.dump()))
                    )
                else:
                    deletes.append((node.space, node.external_id))
            # Updates must be done in the same transaction as persisting the cursor.
            # A transaction is implicitly started by sqlite here.
            #
            # It is also important that deletes happen first as the same (space, external_id)
            # may appear as several tombstones and then a new instance, which must result in
            # the instance being saved.
            connection.executemany(
                "DELETE FROM instance WHERE space=? AND external_id=?", deletes
            )
            connection.executemany(
                "INSERT INTO instance VALUES (?, ?, ?) ON CONFLICT DO UPDATE SET data=excluded.data",
                inserts,
            )
            connection.execute(
                "INSERT INTO cursor VALUES (?)", [result.cursors["nodes"]]
            )
            connection.commit()
        print(f"Wrote {len(inserts)} nodes and deleted {len(deletes)} nodes")

    return client.data_modeling.instances.subscribe(query, _sync_batch_to_sqlite)


if __name__ == "__main__":
    SQLITE_DB_NAME = "test.db"
    SPACE_TO_SYNC = "mytestspace"
    bootstrap_sqlite(db_name=SQLITE_DB_NAME)
    sync_space_to_sqlite(db_name=SQLITE_DB_NAME, space_to_sync=SPACE_TO_SYNC)
    while True:
        # Keep main thread alive
        time.sleep(10)

Delete instances

InstancesAPI.delete(nodes: NodeId | Sequence[NodeId] | tuple[str, str] | Sequence[tuple[str, str]] | None = None, edges: EdgeId | Sequence[EdgeId] | tuple[str, str] | Sequence[tuple[str, str]] | None = None) InstancesDeleteResult

Delete one or more instances

Parameters
  • nodes (NodeId | Sequence[NodeId] | tuple[str, str] | Sequence[tuple[str, str]] | None) – Node ids

  • edges (EdgeId | Sequence[EdgeId] | tuple[str, str] | Sequence[tuple[str, str]] | None) – Edge ids

Returns

The instance(s) which has been deleted. Empty list if nothing was deleted.

Return type

InstancesDeleteResult

Examples

Delete instances by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.instances.delete(nodes=("mySpace", "myNode"))

Delete nodes and edges using the built in data class

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId
>>> client = CogniteClient()
>>> client.data_modeling.instances.delete(NodeId('mySpace', 'myNode'), EdgeId('mySpace', 'myEdge'))

Delete all nodes from a NodeList

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId
>>> client = CogniteClient()
>>> my_view = client.data_modeling.views.retrieve('mySpace', 'myView')
>>> my_nodes = client.data_modeling.instances.list(instance_type='node', sources=my_view, limit=None)
>>> client.data_modeling.instances.delete(nodes=my_nodes.as_ids())

Instances core data classes

final class cognite.client.data_classes.data_modeling.instances.Edge(space: str, external_id: str, version: int, type: DirectRelationReference, last_updated_time: int, created_time: int, start_node: DirectRelationReference, end_node: DirectRelationReference, deleted_time: int | None, properties: Properties | None)

Bases: Instance[EdgeApply]

An Edge. This is the read version of the edge.

Parameters
  • space (str) – The workspace for the edge, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the edge.

  • version (int) – DMS version.

  • type (DirectRelationReference) – The type of edge.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • start_node (DirectRelationReference) – Reference to the direct relation. The reference consists of a space and an external-id.

  • end_node (DirectRelationReference) – Reference to the direct relation. The reference consists of a space and an external-id.

  • deleted_time (int | None) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds. Timestamp when the instance was soft deleted. Note that deleted instances are filtered out of query results, but present in sync results

  • properties (Properties | None) – No description.

as_apply() EdgeApply

This is a convenience function for converting the read to a write edge.

It makes the simplifying assumption that all properties are from the same view. Note that this is not true in general.

Returns

A write edge, EdgeApply

Return type

EdgeApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.instances.EdgeApply(space: str, external_id: str, type: DirectRelationReference | tuple[str, str], start_node: DirectRelationReference | tuple[str, str], end_node: DirectRelationReference | tuple[str, str], existing_version: int | None = None, sources: list[NodeOrEdgeData] | None = None)

Bases: InstanceApply[EdgeApply]

An Edge. This is the write version of the edge.

Parameters
  • space (str) – The workspace for the edge, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the edge.

  • type (DirectRelationReference | tuple[str, str]) – The type of edge.

  • start_node (DirectRelationReference | tuple[str, str]) – Reference to the direct relation. The reference consists of a space and an external-id.

  • end_node (DirectRelationReference | tuple[str, str]) – Reference to the direct relation. The reference consists of a space and an external-id.

  • existing_version (int | None) – Fail the ingestion request if the node’s version is greater than or equal to this value. If no existingVersion is specified, the ingestion will always overwrite any existing data for the edge (for the specified container or edge). If existingVersion is set to 0, the upsert will behave as an insert, so it will fail the bulk if the item already exists. If skipOnVersionConflict is set on the ingestion request, then the item will be skipped instead of failing the ingestion request.

  • sources (list[NodeOrEdgeData] | None) – List of source properties to write. The properties are from the edge and/or container the container(s) making up this node.

as_write() EdgeApply

Returns this EdgeApply instance

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.instances.EdgeApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[EdgeApply]

as_ids() list[EdgeId]

Convert the list of edges to a list of edge ids.

Returns

A list of edge ids.

Return type

list[EdgeId]

class cognite.client.data_classes.data_modeling.instances.EdgeApplyResult(space: str, external_id: str, version: int, was_modified: bool, last_updated_time: int, created_time: int)

Bases: InstanceApplyResult

An Edge. This represents the update on the edge.

Parameters
  • space (str) – The workspace for the edge, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the edge.

  • version (int) – DMS version.

  • was_modified (bool) – Whether the edge was modified by the ingestion.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

class cognite.client.data_classes.data_modeling.instances.EdgeApplyResultList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[EdgeApplyResult]

as_ids() list[EdgeId]

Convert the list of edges to a list of edge ids.

Returns

A list of edge ids.

Return type

list[EdgeId]

class cognite.client.data_classes.data_modeling.instances.EdgeList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: DataModelingInstancesList[EdgeApply, Edge]

as_ids() list[EdgeId]

Convert the list of edges to a list of edge ids.

Returns

A list of edge ids.

Return type

list[EdgeId]

as_write() EdgeApplyList

Returns this EdgeList as a EdgeApplyList

class cognite.client.data_classes.data_modeling.instances.EdgeListWithCursor(resources: Collection[Any], cursor: str | None, cognite_client: CogniteClient | None = None)

Bases: EdgeList

class cognite.client.data_classes.data_modeling.instances.Instance(space: str, external_id: str, version: int, last_updated_time: int, created_time: int, instance_type: Literal['node', 'edge'], deleted_time: int | None, properties: Properties | None)

Bases: WritableInstanceCore[T_CogniteResource], ABC

A node or edge. This is the read version of the instance.

Parameters
  • space (str) – The workspace for the instance, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the instance.

  • version (int) – DMS version.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • instance_type (Literal["node", "edge"]) – The type of instance.

  • deleted_time (int | None) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds. Timestamp when the instance was soft deleted. Note that deleted instances are filtered out of query results, but present in sync results

  • properties (Properties | None) – Properties of the instance.

abstract as_apply() InstanceApply

Convert the instance to an apply instance.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

to_pandas(ignore: list[str] | None = None, camel_case: bool = False, convert_timestamps: bool = True, expand_properties: bool = False, remove_property_prefix: bool = True, **kwargs: Any) pd.DataFrame

Convert the instance into a pandas DataFrame.

Parameters
  • ignore (list[str] | None) – List of row keys to skip when converting to a data frame. Is applied before expansions.

  • camel_case (bool) – Convert attribute names to camel case (e.g. externalId instead of external_id). Does not affect properties if expanded.

  • convert_timestamps (bool) – Convert known attributes storing CDF timestamps (milliseconds since epoch) to datetime. Does not affect properties.

  • expand_properties (bool) – Expand the properties into separate rows. Note: Will change default to True in the next major version.

  • remove_property_prefix (bool) – Remove view ID prefix from row names of expanded properties (in index). Requires data to be from a single view.

  • **kwargs (Any) – For backwards compatability.

Returns

The dataframe.

Return type

pd.DataFrame

class cognite.client.data_classes.data_modeling.instances.InstanceAggregationResult(aggregates: list[AggregatedNumberedValue], group: dict[str, str | int | float | bool])

Bases: DataModelingResource

Represents instances aggregation results.

Parameters
  • aggregates (list[AggregatedNumberedValue]) – List of aggregated values.

  • group (dict[str, str | int | float | bool]) – The grouping used for the aggregation.

dump(camel_case: bool = True) dict[str, Any]

Dumps the aggregation results to a dictionary.

Parameters

camel_case (bool) – Whether to convert the keys to camel case.

Returns

A dictionary with the instance results.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.instances.InstanceAggregationResultList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[InstanceAggregationResult]

class cognite.client.data_classes.data_modeling.instances.InstanceApply(space: str, external_id: str, instance_type: Literal['node', 'edge'] = 'node', existing_version: int | None = None, sources: list[NodeOrEdgeData] | None = None)

Bases: WritableInstanceCore[T_CogniteResource], ABC

A node or edge. This is the write version of the instance.

Parameters
  • space (str) – The workspace for the instance, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the instance.

  • instance_type (Literal["node", "edge"]) – No description.

  • existing_version (int | None) – Fail the ingestion request if the node’s version is greater than or equal to this value. If no existingVersion is specified, the ingestion will always overwrite any existing data for the edge (for the specified container or instance). If existingVersion is set to 0, the upsert will behave as an insert, so it will fail the bulk if the item already exists. If skipOnVersionConflict is set on the ingestion request, then the item will be skipped instead of failing the ingestion request.

  • sources (list[NodeOrEdgeData] | None) – List of source properties to write. The properties are from the instance and/or container the container(s) making up this node.

class cognite.client.data_classes.data_modeling.instances.InstanceApplyResult(instance_type: Literal['node', 'edge'], space: str, external_id: str, version: int, was_modified: bool, last_updated_time: int, created_time: int)

Bases: InstanceCore, ABC

A node or edge. This represents the update on the instance.

Parameters
  • instance_type (Literal["node", "edge"]) – The type of instance.

  • space (str) – The workspace for the instance, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the instance.

  • version (int) – DMS version of the instance.

  • was_modified (bool) – Whether the instance was modified by the ingestion.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

class cognite.client.data_classes.data_modeling.instances.InstanceCore(space: str, external_id: str, instance_type: Literal['node', 'edge'])

Bases: DataModelingResource, ABC

A node or edge :param space: The workspace for the instance, a unique identifier for the space. :type space: str :param external_id: Combined with the space is the unique identifier of the instance. :type external_id: str :param instance_type: No description. :type instance_type: Literal[“node”, “edge”]

class cognite.client.data_classes.data_modeling.instances.InstanceSort(property: list[str] | tuple[str, ...], direction: Literal['ascending', 'descending'] = 'ascending', nulls_first: bool = False)

Bases: DataModelingSort

class cognite.client.data_classes.data_modeling.instances.InstancesApply(nodes: NodeApplyList, edges: EdgeApplyList)

Bases: object

This represents the write request of an instance query :param nodes: A list of nodes. :type nodes: NodeApplyList :param edges: A list of edges. :type edges: EdgeApplyList

class cognite.client.data_classes.data_modeling.instances.InstancesApplyResult(nodes: NodeApplyResultList, edges: EdgeApplyResultList)

Bases: object

This represents the write result of an instance query

Parameters
class cognite.client.data_classes.data_modeling.instances.InstancesDeleteResult(nodes: list[NodeId], edges: list[EdgeId])

Bases: object

This represents the delete result of an instance query

Parameters
  • nodes (list[NodeId]) – A list of node ids.

  • edges (list[EdgeId]) – A list of edge ids.

class cognite.client.data_classes.data_modeling.instances.InstancesResult(nodes: NodeList, edges: EdgeList)

Bases: object

This represents the read result of an instance query

Parameters
final class cognite.client.data_classes.data_modeling.instances.Node(space: str, external_id: str, version: int, last_updated_time: int, created_time: int, deleted_time: int | None, properties: Properties | None, type: DirectRelationReference | None)

Bases: Instance[NodeApply]

A node. This is the read version of the node.

Parameters
  • space (str) – The workspace for the node, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the node.

  • version (int) – DMS version.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • deleted_time (int | None) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds. Timestamp when the instance was soft deleted. Note that deleted instances are filtered out of query results, but present in sync results

  • properties (Properties | None) – Properties of the node.

  • type (DirectRelationReference | None) – Direct relation pointing to the type node.

as_apply() NodeApply

This is a convenience function for converting the read to a write node.

It makes the simplifying assumption that all properties are from the same view. Note that this is not true in general.

Returns

A write node, NodeApply

Return type

NodeApply

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.instances.NodeApply(space: str, external_id: str, existing_version: int | None = None, sources: list[NodeOrEdgeData] | None = None, type: DirectRelationReference | tuple[str, str] | None = None)

Bases: InstanceApply[NodeApply]

A node. This is the write version of the node.

Parameters
  • space (str) – The workspace for the node, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the node.

  • existing_version (int | None) – Fail the ingestion request if the node’s version is greater than or equal to this value. If no existingVersion is specified, the ingestion will always overwrite any existing data for the edge (for the specified container or node). If existingVersion is set to 0, the upsert will behave as an insert, so it will fail the bulk if the item already exists. If skipOnVersionConflict is set on the ingestion request, then the item will be skipped instead of failing the ingestion request.

  • sources (list[NodeOrEdgeData] | None) – List of source properties to write. The properties are from the node and/or container the container(s) making up this node.

  • type (DirectRelationReference | tuple[str, str] | None) – Direct relation pointing to the type node.

as_write() NodeApply

Returns this NodeApply instance

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.instances.NodeApplyList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[NodeApply]

as_ids() list[NodeId]

Convert the list of nodes to a list of node ids.

Returns

A list of node ids.

Return type

list[NodeId]

class cognite.client.data_classes.data_modeling.instances.NodeApplyResult(space: str, external_id: str, version: int, was_modified: bool, last_updated_time: int, created_time: int)

Bases: InstanceApplyResult

A node. This represents the update on the node.

Parameters
  • space (str) – The workspace for the node, a unique identifier for the space.

  • external_id (str) – Combined with the space is the unique identifier of the node.

  • version (int) – DMS version of the node.

  • was_modified (bool) – Whether the node was modified by the ingestion.

  • last_updated_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

  • created_time (int) – The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.

class cognite.client.data_classes.data_modeling.instances.NodeApplyResultList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[NodeApplyResult]

as_ids() list[NodeId]

Convert the list of nodes to a list of node ids.

Returns

A list of node ids.

Return type

list[NodeId]

class cognite.client.data_classes.data_modeling.instances.NodeList(resources: Collection[Any], cognite_client: CogniteClient | None = None)

Bases: DataModelingInstancesList[NodeApply, Node]

as_ids() list[NodeId]

Convert the list of nodes to a list of node ids.

Returns

A list of node ids.

Return type

list[NodeId]

as_write() NodeApplyList

Returns this NodeList as a NodeApplyList

class cognite.client.data_classes.data_modeling.instances.NodeListWithCursor(resources: Collection[Any], cursor: str | None, cognite_client: CogniteClient | None = None)

Bases: NodeList

class cognite.client.data_classes.data_modeling.instances.NodeOrEdgeData(source: ContainerId | ViewId, properties: Mapping[str, PropertyValue])

Bases: object

This represents the data values of a node or edge.

Parameters
  • source (ContainerId | ViewId) – The container or view the node or edge property is in

  • properties (Mapping[str, PropertyValue]) – The properties of the node or edge.

class cognite.client.data_classes.data_modeling.instances.Properties(properties: MutableMapping[ViewId, MutableMapping[str, Union[str, int, float, bool, dict, List[str], List[int], List[float], List[bool], List[dict], NodeId, DirectRelationReference]]])

Bases: MutableMapping[Union[ViewId, Tuple[str, str], Tuple[str, str, str]], MutableMapping[str, Union[str, int, float, bool, dict, List[str], List[int], List[float], List[bool], List[dict], NodeId, DirectRelationReference]]]

get(view: Union[ViewId, Tuple[str, str], Tuple[str, str, str]]) MutableMapping[PropertyIdentifier, PropertyValue] | None
get(view: Union[ViewId, Tuple[str, str], Tuple[str, str, str]], default: MutableMapping[PropertyIdentifier, PropertyValue] | _T) MutableMapping[PropertyIdentifier, PropertyValue] | _T

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class cognite.client.data_classes.data_modeling.instances.SubscriptionContext(last_successful_sync: 'datetime | None' = None, last_successful_callback: 'datetime | None' = None, _canceled: 'bool' = False, _thread: 'threading.Thread | None' = None)

Bases: object

class cognite.client.data_classes.data_modeling.instances.WritableInstanceCore(space: str, external_id: str, instance_type: Literal['node', 'edge'])

Bases: WritableDataModelingResource[T_CogniteResource], ABC

Instances query data classes

class cognite.client.data_classes.data_modeling.query.EdgeResultSetExpression(from_: str | None = None, max_distance: int | None = None, direction: Literal['outwards', 'inwards'] = 'outwards', filter: Filter | None = None, node_filter: Filter | None = None, termination_filter: Filter | None = None, limit_each: int | None = None, sort: list[InstanceSort] | None = None, post_sort: list[InstanceSort] | None = None, limit: int | None = None, chain_to: Literal['destination', 'source'] = 'destination')

Bases: ResultSetExpression

Describes how to query for edges in the data model.

Parameters
  • from (str | None) – Chain your result expression from this edge.

  • max_distance (int | None) – The largest - max - number of levels to traverse.

  • direction (Literal["outwards", "inwards"]) – The direction to use when traversing.

  • filter (Filter | None) – Filter the result set based on this filter.

  • node_filter (Filter | None) – Filter the result set based on this filter.

  • termination_filter (Filter | None) – Filter the result set based on this filter.

  • limit_each (int | None) – Limit the number of returned edges for each of the source nodes in the result set. The indicated uniform limit applies to the result set from the referenced from. limitEach only has meaning when you also specify maxDistance=1 and from.

  • sort (list[InstanceSort] | None) – Sort the result set based on this list of sort criteria.

  • post_sort (list[InstanceSort] | None) – Sort the result set based on this list of sort criteria.

  • limit (int | None) – Limit the result set to this number of instances.

  • chain_to (Literal["destination", "source"]) – Control which side of the edge to chain to. The chain_to option is only applicable if the result rexpression referenced in from contains edges. source will chain to start if you’re following edges outwards i.e direction=outwards. If you’re following edges inwards i.e direction=inwards, it will chain to end. destination (default) will chain to end if you’re following edges outwards i.e direction=outwards. If you’re following edges inwards i.e, direction=inwards, it will chain to start.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.query.NodeResultSetExpression(from_: str | None = None, filter: Filter | None = None, sort: list[InstanceSort] | None = None, limit: int | None = None, through: list[str] | tuple[str, str, str] | PropertyId | None = None, direction: Literal['outwards', 'inwards'] = 'outwards', chain_to: Literal['destination', 'source'] = 'destination')

Bases: ResultSetExpression

Describes how to query for nodes in the data model.

Parameters
  • from (str | None) – Chain your result-expression based on this view.

  • filter (Filter | None) – Filter the result set based on this filter.

  • sort (list[InstanceSort] | None) – Sort the result set based on this list of sort criteria.

  • limit (int | None) – Limit the result set to this number of instances.

  • through (list[str] | tuple[str, str, str] | PropertyId | None) – Chain your result-expression through this container or view. The property must be a reference to a direct relation property. from_ must be defined. The tuple must be on the form (space, container, property) or (space, view/version, property).

  • direction (Literal["outwards", "inwards"]) – The direction to use when traversing direct relations. Only applicable when through is specified.

  • chain_to (Literal["destination", "source"]) – Control which side of the edge to chain to. The chain_to option is only applicable if the result rexpression referenced in from contains edges. source will chain to start if you’re following edges outwards i.e direction=outwards. If you’re following edges inwards i.e direction=inwards, it will chain to end. destination (default) will chain to end if you’re following edges outwards i.e direction=outwards. If you’re following edges inwards i.e, direction=inwards, it will chain to start.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.query.Query(with_: dict[str, ResultSetExpression], select: dict[str, Select], parameters: dict[str, PropertyValue] | None = None, cursors: Mapping[str, str | None] | None = None)

Bases: CogniteObject

Query allows you to do advanced queries on the data model.

Parameters
  • with (dict[str, ResultSetExpression]) – A dictionary of result set expressions to use in the query. The keys are used to reference the result set expressions in the select and parameters.

  • select (dict[str, Select]) – A dictionary of select expressions to use in the query. The keys must match the keys in the with_ dictionary. The select expressions define which properties to include in the result set.

  • parameters (dict[str, PropertyValue] | None) – Values in filters can be parameterised. Parameters are provided as part of the query object, and referenced in the filter itself.

  • cursors (Mapping[str, str | None] | None) – A dictionary of cursors to use in the query. These are for pagination purposes, for example, in the sync endpoint.

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.query.ResultSetExpression(from_: str | None, filter: Filter | None, limit: int | None, sort: list[InstanceSort] | None, direction: Literal['outwards', 'inwards'] = 'outwards', chain_to: Literal['destination', 'source'] = 'destination')

Bases: CogniteObject, ABC

abstract dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.query.Select(sources: 'list[SourceSelector]' = <factory>, sort: 'list[InstanceSort]' = <factory>, limit: 'int | None' = None)

Bases: CogniteObject

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.query.SourceSelector(source: 'ViewId', properties: 'list[str]')

Bases: CogniteObject

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

Data Modeling ID data classes

class cognite.client.data_classes.data_modeling.ids.AbstractDataclass(*args: 'Any', **kwargs: 'Any')

Bases: ABC

class cognite.client.data_classes.data_modeling.ids.ContainerId(*args: 'Any', **kwargs: 'Any')

Bases: DataModelingId

class cognite.client.data_classes.data_modeling.ids.DataModelId(*args: 'Any', **kwargs: 'Any')

Bases: VersionedDataModelingId

class cognite.client.data_classes.data_modeling.ids.DataModelingId(*args: 'Any', **kwargs: 'Any')

Bases: AbstractDataclass

class cognite.client.data_classes.data_modeling.ids.EdgeId(space: 'str', external_id: 'str')

Bases: InstanceId

class cognite.client.data_classes.data_modeling.ids.IdLike(*args, **kwargs)

Bases: Protocol

class cognite.client.data_classes.data_modeling.ids.InstanceId(space: 'str', external_id: 'str')

Bases: object

class cognite.client.data_classes.data_modeling.ids.NodeId(space: 'str', external_id: 'str')

Bases: InstanceId

class cognite.client.data_classes.data_modeling.ids.PropertyId(source: 'ViewId | ContainerId', property: 'str')

Bases: CogniteObject

dump(camel_case: bool = True) dict[str, Any]

Dump the instance into a json serializable Python data type.

Parameters

camel_case (bool) – Use camelCase for attribute names. Defaults to True.

Returns

A dictionary representation of the instance.

Return type

dict[str, Any]

class cognite.client.data_classes.data_modeling.ids.VersionedDataModelingId(*args: 'Any', **kwargs: 'Any')

Bases: AbstractDataclass

class cognite.client.data_classes.data_modeling.ids.VersionedIdLike(*args, **kwargs)

Bases: IdLike, Protocol

class cognite.client.data_classes.data_modeling.ids.ViewId(*args: 'Any', **kwargs: 'Any')

Bases: VersionedDataModelingId

GraphQL

Apply DML

DataModelingGraphQLAPI.apply_dml(id: DataModelIdentifier, dml: str, name: str | None = None, description: str | None = None, previous_version: str | None = None) DMLApplyResult

Apply the DML for a given data model.

Parameters
  • id (DataModelIdentifier) – The data model to apply DML to.

  • dml (str) – The DML to apply.

  • name (str | None) – The name of the data model.

  • description (str | None) – The description of the data model.

  • previous_version (str | None) – The previous version of the data model. Specify to reuse view versions from previous data model version.

Returns

The id of the updated data model.

Return type

DMLApplyResult

Examples

Apply DML:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.graphql.apply_dml(
...     id=("mySpaceExternalId", "myModelExternalId", "1"),
...     dml="type MyType { id: String! }",
...     name="My model name",
...     description="My model description"
... )

Execute GraphQl query

DataModelingGraphQLAPI.query(id: DataModelIdentifier, query: str, variables: dict[str, Any] | None = None) dict[str, Any]

Execute a GraphQl query against a given data model.

Parameters
  • id (DataModelIdentifier) – The data model to query.

  • query (str) – The query to issue.

  • variables (dict[str, Any] | None) – An optional dict of variables to pass to the query.

Returns

The query result

Return type

dict[str, Any]

Examples

Execute a graphql query against a given data model:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.data_modeling.graphql.query(
...     id=("mySpace", "myDataModel", "v1"),
...     query="listThings { items { thingProperty } }",
... )