Data Modeling

Data Models

Retrieve data models by id(s)

DataModelsAPI.retrieve(ids: cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str]], inline_views: Literal[True]) DataModelList[View]
DataModelsAPI.retrieve(ids: cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str]], 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:

>>> 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:

>>> 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: cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str]]) list[cognite.client.data_classes.data_modeling.ids.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: Optional[str] = None, name: Optional[str] = None, views: Optional[Sequence[cognite.client.data_classes.data_modeling.ids.ViewId | cognite.client.data_classes.data_modeling.views.ViewApply]] = 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 (Sequence[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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[DataModelApply]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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: Optional[str] = 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: Iterable[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[cognite.client.data_classes.data_modeling.ids.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) cognite.client.data_classes.data_modeling.spaces.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(spaces='mySpace')

Get multiple spaces by id:

>>> 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:

>>> for space in client.data_modeling.spaces:
...     space # do something with the space

Iterate over chunks of spaces to reduce memory load:

>>> 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: Union[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: Optional[str] = None, name: Optional[str] = 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: Optional[str] = None, name: Optional[str] = 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: Iterable[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: Iterable[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]

extend(other: Iterable[Any]) None

S.extend(iterable) – extend sequence by appending elements from the iterable

get(space: str) cognite.client.data_classes.data_modeling.spaces.Space | None

Get a space object from this list by space ID.

Parameters

space (str) – The space identifier to get.

Returns

The requested space if present, else None

Return type

Space | None

Views

Retrieve views by id(s)

ViewsAPI.retrieve(ids: cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]], include_inherited_properties: bool = True, all_versions: bool = True) ViewList

Retrieve a single view by id.

Parameters
  • ids (ViewIdentifier | Sequence[ViewIdentifier]) – The view identifier(s). This can be given as a tuple of strings or a ViewId object. For example, (“my_space”, “my_view”), (“my_space”, “my_view”, “my_version”), or ViewId(“my_space”, “my_view”, “my_version”). Note that version is optional, if not provided, all versions will be returned.

  • 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: Optional[str] = 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:

>>> for view in client.data_modeling.views:
...     view # do something with the view

Iterate over chunks of views to reduce memory load:

>>> 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.data_classes.data_modeling import (
...     ContainerId,
...     DirectRelationReference,
...     MappedPropertyApply,
...     MultiEdgeConnectionApply,
...     ViewApply,
...     ViewId
... )
>>> acts_in_edge_type = DirectRelationReference(space="imdb", external_id="acts-in")
>>> movie_view = ViewApply(
...     space="imdb",
...     external_id="Movie",
...     version="1",
...     name="Movie",
...     properties={
...         "title": MappedPropertyApply(
...             container=ContainerId(space="imdb", external_id="Movie"),
...             container_property_identifier="title",
...         ),
...         "actors": MultiEdgeConnectionApply(
...             type=acts_in_edge_type,
...             direction="inwards",
...             source=ViewId("imdb", "Actor", "1"),
...             name="actors",
...         ),
...     }
... )
>>> 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=acts_in_edge_type,
...             direction="outwards",
...             source=ViewId("imdb", "Movie", "1"),
...             name="movies",
...         ),
...     }
... )
>>> res = client.data_modeling.views.apply([movie_view, actor_view])

Delete views

ViewsAPI.delete(ids: cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]]) list[cognite.client.data_classes.data_modeling.ids.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: cognite.client.data_classes.data_modeling.ids.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: Optional[str] = None, description: Optional[str] = None, edge_source: Optional[ViewId] = 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', immutable: '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: Optional[str] = None, description: Optional[str] = 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: Optional[str] = None, description: Optional[str] = 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, cognite.client.data_classes.data_modeling.views.ViewProperty], last_updated_time: int, created_time: int, description: str | None, name: str | None, filter: cognite.client.data_classes.filters.Filter | None, implements: list[cognite.client.data_classes.data_modeling.ids.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 view.

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[cognite.client.data_classes.data_modeling.ids.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: Optional[str] = None, name: Optional[str] = None, filter: Optional[Filter] = None, implements: Optional[list[cognite.client.data_classes.data_modeling.ids.ViewId]] = None, properties: Optional[dict[str, cognite.client.data_classes.data_modeling.views.ViewPropertyApply]] = 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[cognite.client.data_classes.data_modeling.ids.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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[ViewApply]

as_ids() list[cognite.client.data_classes.data_modeling.ids.ViewId]

Returns the list of ViewIds

Returns

The list of ViewIds

Return type

list[ViewId]

referenced_containers() set[cognite.client.data_classes.data_modeling.ids.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: cognite.client.data_classes.filters.Filter | None, implements: list[cognite.client.data_classes.data_modeling.ids.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: Optional[str] = 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: Iterable[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[cognite.client.data_classes.data_modeling.ids.ViewId]

Returns the list of ViewIds

Returns

The list of ViewIds

Return type

list[ViewId]

referenced_containers() set[cognite.client.data_classes.data_modeling.ids.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: cognite.client.data_classes.data_modeling.ids.ContainerId | tuple[str, str]) cognite.client.data_classes.data_modeling.containers.Container | None
ContainersAPI.retrieve(ids: Sequence[cognite.client.data_classes.data_modeling.ids.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.data_classes.data_modeling import ContainerId
>>> res = client.data_modeling.containers.retrieve(ContainerId(space='mySpace', external_id='myContainer'))

List containers

ContainersAPI.list(space: Optional[str] = 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:

>>> for container in client.data_modeling.containers:
...     container # do something with the container

Iterate over chunks of containers to reduce memory load:

>>> 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)

Create new container with unit-aware properties:

>>> from cognite.client.data_classes.data_modeling import Float64
>>> from cognite.client.data_classes.data_modeling.data_types import UnitReference
>>> container = ContainerApply(
...     space="mySpace",
...     external_id="myContainer",
...     properties={
...         "maxPressure": ContainerProperty(
...             nullable=True,
...             description="Maximum Pump Pressure",
...             name="maxPressure",
...             type=Float64(
...                 unit=UnitReference(
...                     external_id="pressure:bar",
...                     source_unit="BAR"
...                 )
...             )
...         ),
...         "rotationConfigurations": ContainerProperty(
...             nullable=True,
...             description="Rotation Configurations",
...             name="rotationConfigurations",
...             type=Float64(
...                 is_list=True,
...                 unit=UnitReference(
...                     external_id="angular_velocity:rev-per-min"
...                 )
...             )
...         )
...     }
... )
>>> res = client.data_modeling.containers.apply(container)

Example container with all available properties (for illustration purposes). Note that ContainerProperty has several options not shown here, like name, description, nullable, auto_increment, default_value and immutable that may be specified, depending on the choice of property type (e.g. auto_increment only works with integer types).

>>> from cognite.client.data_classes.data_modeling.data_types import UnitReference, EnumValue
>>> from cognite.client.data_classes.data_modeling.data_types import (
...     Boolean, Date, DirectRelation, Enum, FileReference, Float32, Float64,
...     Int32, Int64, Json, SequenceReference, Text, TimeSeriesReference, Timestamp
... )
>>> container_properties = {
...     "prop01": ContainerProperty(Boolean),
...     "prop02": ContainerProperty(Boolean(is_list=True)),
...     "prop03": ContainerProperty(Date),
...     "prop04": ContainerProperty(Date(is_list=True)),
...     "prop05": ContainerProperty(Timestamp),
...     "prop06": ContainerProperty(Timestamp(is_list=True)),
...     "prop07": ContainerProperty(Text),
...     "prop08": ContainerProperty(Text(is_list=True)),
...     # Note: DirectRelation(list) support `container`: The (optional) required type for the node
...     #       the direct relation points to.
...     "prop09": ContainerProperty(DirectRelation),
...     "prop10": ContainerProperty(DirectRelation(is_list=True)),
...     # Note: Enum also support `unknown_value`: The value to use when the enum value is unknown.
...     "prop11": ContainerProperty(
...         Enum({"Closed": EnumValue("Valve is closed"),
...               "Opened": EnumValue("Valve is opened")})),
...     # Note: Floats support unit references, e.g. `unit=UnitReference("pressure:bar")`:
...     "prop12": ContainerProperty(Float32),
...     "prop13": ContainerProperty(Float32(is_list=True)),
...     "prop14": ContainerProperty(Float64),
...     "prop15": ContainerProperty(Float64(is_list=True)),
...     "prop16": ContainerProperty(Int32),
...     "prop17": ContainerProperty(Int32(is_list=True)),
...     "prop18": ContainerProperty(Int64),
...     "prop19": ContainerProperty(Int64(is_list=True)),
...     "prop20": ContainerProperty(Json),
...     "prop21": ContainerProperty(Json(is_list=True)),
...     "prop22": ContainerProperty(SequenceReference),
...     "prop23": ContainerProperty(SequenceReference(is_list=True)),
...     # Note: It is adviced to represent files and time series directly as nodes
...     #       instead of referencing existing:
...     "prop24": ContainerProperty(FileReference),
...     "prop25": ContainerProperty(FileReference(is_list=True)),
...     "prop26": ContainerProperty(TimeSeriesReference),
...     "prop27": ContainerProperty(TimeSeriesReference(is_list=True)),
... }
>>> container = ContainerApply(
...     space="my-space",
...     external_id="my-everything-container",
...     properties=container_properties,
... )

Delete containers

ContainersAPI.delete(ids: cognite.client.data_classes.data_modeling.ids.ContainerId | tuple[str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.ContainerId | tuple[str, str]]) list[cognite.client.data_classes.data_modeling.ids.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"))

Delete constraints

ContainersAPI.delete_constraints(ids: Sequence[tuple[cognite.client.data_classes.data_modeling.ids.ContainerId, str]]) list[tuple[cognite.client.data_classes.data_modeling.ids.ContainerId, str]]

Delete one or more constraints

Parameters

ids (Sequence[ConstraintIdentifier]) – The constraint identifier(s).

Returns

The constraints(s) which have been deleted.

Return type

list[ConstraintIdentifier]

Examples

Delete constraints by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.containers.delete_constraints(
...     [(ContainerId("mySpace", "myContainer"), "myConstraint")]
... )

Delete indexes

ContainersAPI.delete_indexes(ids: Sequence[tuple[cognite.client.data_classes.data_modeling.ids.ContainerId, str]]) list[tuple[cognite.client.data_classes.data_modeling.ids.ContainerId, str]]

Delete one or more indexes

Parameters

ids (Sequence[IndexIdentifier]) – The index identifier(s).

Returns

The indexes(s) which has been deleted.

Return type

list[IndexIdentifier]

Examples

Delete indexes by id:

>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> client.data_modeling.containers.delete_indexes(
...     [(ContainerId("mySpace", "myContainer"), "myIndex")]
... )

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, cognite.client.data_classes.data_modeling.containers.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, cognite.client.data_classes.data_modeling.containers.Constraint] | None, indexes: dict[str, cognite.client.data_classes.data_modeling.containers.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 container.

  • 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 container

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

  • 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, cognite.client.data_classes.data_modeling.containers.ContainerProperty], description: Optional[str] = None, name: Optional[str] = None, used_for: Optional[Literal['node', 'edge', 'all']] = None, constraints: Optional[dict[str, cognite.client.data_classes.data_modeling.containers.Constraint]] = None, indexes: Optional[dict[str, cognite.client.data_classes.data_modeling.containers.Index]] = 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 container.

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

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

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

  • 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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[ContainerApply]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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, cognite.client.data_classes.data_modeling.containers.ContainerProperty], description: str | None, name: str | None, constraints: dict[str, cognite.client.data_classes.data_modeling.containers.Constraint] | None, indexes: dict[str, cognite.client.data_classes.data_modeling.containers.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 container.

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

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

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

  • 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.ContainerList(resources: Iterable[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[cognite.client.data_classes.data_modeling.ids.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 | float | bool | dict | None' = None, description: 'str | None' = None, immutable: 'bool' = False)

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: Optional[Union[NodeId, Sequence[NodeId], tuple[str, str], Sequence[tuple[str, str]]]] = None, edges: Optional[Union[EdgeId, Sequence[EdgeId], tuple[str, str], Sequence[tuple[str, str]]]] = None, sources: Optional[Union[SourceSelector, View, ViewId, tuple[str, str], tuple[str, str, str], Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]]]] = None, include_typing: bool = False) InstancesResult[Node, Edge]

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 (Source | Sequence[Source] | 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[Node, Edge]

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.data_classes.data_modeling import NodeId, EdgeId, ViewId
>>> 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.data_classes.data_modeling import NodeId, EdgeId
>>> res = client.data_modeling.instances.retrieve(
...     NodeId("mySpace", "myNode"),
...     EdgeId("mySpace", "myEdge"),
...     sources=("myspace", "myView"))

Retrieve Nodes by id(s)

InstancesAPI.retrieve_nodes(nodes: cognite.client.data_classes.data_modeling.ids.NodeId | tuple[str, str], *, node_cls: type[T_Node]) Optional[T_Node]
InstancesAPI.retrieve_nodes(nodes: cognite.client.data_classes.data_modeling.ids.NodeId | tuple[str, str], *, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, include_typing: bool = False) cognite.client.data_classes.data_modeling.instances.Node | None
InstancesAPI.retrieve_nodes(nodes: collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.NodeId] | collections.abc.Sequence[tuple[str, str]], *, node_cls: type[T_Node]) NodeList[T_Node]
InstancesAPI.retrieve_nodes(nodes: collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.NodeId] | collections.abc.Sequence[tuple[str, str]], *, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, include_typing: bool = False) NodeList[Node]

Retrieve one or more nodes by id(s).

Note

This method should be used for retrieving nodes with a custom node class. You can use it without providing a custom node class, but in that case, the retrieved nodes will be of the built-in Node class.

Parameters
  • nodes (NodeId | Sequence[NodeId] | tuple[str, str] | Sequence[tuple[str, str]]) – Node id(s) to retrieve.

  • node_cls (type[T_Node]) – The custom node class to use, the retrieved nodes will automatically be serialized to this class.

  • sources (Source | Sequence[Source] | None) – Retrieve properties from the listed - by reference - views. This only applies if you do not provide a custom node class.

  • include_typing (bool) – Whether to include typing information

Returns

The requested edges.

Return type

NodeList[T_Node] | T_Node | Node | None

Retrieve nodes using a custom typed node class “Person”. Any property that you want to look up by a different attribute name, e.g. you want my_node.birth_year to return the data for property birthYear, must use the PropertyOptions as shown below. We strongly suggest you use snake_cased attribute names, as is done here:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, TypedNode, PropertyOptions, DirectRelationReference, ViewId
>>> class Person(TypedNode):
...    birth_year = PropertyOptions(identifier="birthYear")
...
...    def __init__(
...        self,
...        space: str,
...        external_id: str,
...        version: int,
...        last_updated_time: int,
...        created_time: int,
...        name: str,
...        birth_year: int | None = None,
...        type: DirectRelationReference | None = None,
...        deleted_time: int | None = None,
...    ):
...        super().__init__(
...            space=space,
...            external_id=external_id,
...            version=version,
...            last_updated_time=last_updated_time,
...            created_time=created_time,
...            type=type,
...            deleted_time=deleted_time
...        )
...        self.name = name
...        self.birth_year = birth_year
...
...    @classmethod
...    def get_source(cls) -> ViewId:
...        return ViewId("myModelSpace", "Person", "1")
...
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.retrieve_nodes(
...     NodeId("myDataSpace", "myPerson"), node_cls=Person
... )
>>> isinstance(res, Person)

Retrieve Edges by id(s)

InstancesAPI.retrieve_edges(edges: cognite.client.data_classes.data_modeling.ids.EdgeId | tuple[str, str], *, edge_cls: type[T_Edge]) Optional[T_Edge]
InstancesAPI.retrieve_edges(edges: cognite.client.data_classes.data_modeling.ids.EdgeId | tuple[str, str], *, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, include_typing: bool = False) cognite.client.data_classes.data_modeling.instances.Edge | None
InstancesAPI.retrieve_edges(edges: collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.EdgeId] | collections.abc.Sequence[tuple[str, str]], *, edge_cls: type[T_Edge]) EdgeList[T_Edge]
InstancesAPI.retrieve_edges(edges: collections.abc.Sequence[cognite.client.data_classes.data_modeling.ids.EdgeId] | collections.abc.Sequence[tuple[str, str]], *, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, include_typing: bool = False) EdgeList[Edge]

Retrieve one or more edges by id(s).

Note

This method should be used for retrieving edges with a custom edge class.You can use it without providing a custom node class, but in that case, the retrieved nodes will be of the built-in Edge class.

Parameters
  • edges (EdgeId | Sequence[EdgeId] | tuple[str, str] | Sequence[tuple[str, str]]) – Edge id(s) to retrieve.

  • edge_cls (type[T_Edge]) – The custom edge class to use, the retrieved edges will automatically be serialized into this class.

  • sources (Source | Sequence[Source] | None) – Retrieve properties from the listed - by reference - views. This only applies if you do not provide a custom edge class.

  • include_typing (bool) – Whether to include typing information

Returns

The requested edges.

Return type

EdgeList[T_Edge] | T_Edge | Edge | None

Retrieve edges using a custom typed class “Flow”. Any property that you want to look up by a different attribute name, e.g. you want my_edge.flow_rate to return the data for property flowRate, must use the PropertyOptions as shown below. We strongly suggest you use snake_cased attribute names, as is done here:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import EdgeId, TypedEdge, PropertyOptions, DirectRelationReference, ViewId
>>> class Flow(TypedEdge):
...    flow_rate = PropertyOptions(identifier="flowRate")
...
...    def __init__(
...        self,
...        space: str,
...        external_id: str,
...        version: int,
...        type: DirectRelationReference,
...        last_updated_time: int,
...        created_time: int,
...        flow_rate: float,
...        start_node: DirectRelationReference,
...        end_node: DirectRelationReference,
...        deleted_time: int | None = None,
...    ) -> None:
...        super().__init__(
...            space, external_id, version, type, last_updated_time, created_time, start_node, end_node, deleted_time
...        )
...        self.flow_rate = flow_rate
...
...    @classmethod
...    def get_source(cls) -> ViewId:
...        return ViewId("sp_model_space", "flow", "1")
...
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.retrieve_edges(
...     EdgeId("mySpace", "theFlow"), edge_cls=Flow
... )
>>> isinstance(res, Flow)

List instances

InstancesAPI.list(instance_type: Literal['node'] = 'node', include_typing: bool = False, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, limit: int | None = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None) NodeList[Node]
InstancesAPI.list(instance_type: Literal['edge'], include_typing: bool = False, sources: cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str] | collections.abc.Sequence[cognite.client.data_classes.data_modeling.query.SourceSelector | cognite.client.data_classes.data_modeling.views.View | cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, limit: int | None = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None) EdgeList[Edge]
InstancesAPI.list(instance_type: type[T_Node], *, space: Optional[Union[str, SequenceNotStr[str]]] = None, limit: int | None = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None) NodeList[T_Node]
InstancesAPI.list(instance_type: type[T_Edge], *, space: Optional[Union[str, SequenceNotStr[str]]] = None, limit: int | None = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None) EdgeList[T_Edge]

List instances

Parameters
  • instance_type (Literal['node', 'edge'] | type[T_Node] | type[T_Edge]) – Whether to query for nodes or edges. You can also pass a custom typed node (or edge class) inheriting from TypedNode (or TypedEdge). See apply, retrieve_nodes or retrieve_edges for an example.

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

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

  • space (str | SequenceNotStr[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[str, Any] | None) – Advanced filtering of instances.

Returns

List of requested instances

Return type

NodeList[T_Node] | EdgeList[T_Edge]

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: Optional[Union[NodeApply, Sequence[NodeApply]]] = None, edges: Optional[Union[EdgeApply, Sequence[EdgeApply]]] = 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()
>>> node = NodeApply("mySpace", "myNodeId")
>>> res = client.data_modeling.instances.apply(node)

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

>>> 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.data_classes.data_modeling import EdgeApply
>>> 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
... )

Using helper function to create valid graphql timestamp for a datetime object:

>>> from cognite.client.utils import datetime_to_ms_iso_timestamp
>>> from datetime import datetime, timezone
>>> my_date = datetime(2020, 3, 14, 15, 9, 26, 535000, tzinfo=timezone.utc)
>>> data_model_timestamp = datetime_to_ms_iso_timestamp(my_date)  # "2020-03-14T15:09:26.535+00:00"

Create a typed node apply. Any property that you want to look up by a different attribute name, e.g. you want my_node.birth_year to return the data for property birthYear, must use the PropertyOptions as shown below. We strongly suggest you use snake_cased attribute names, as is done here:

>>> from cognite.client.data_classes.data_modeling import TypedNodeApply, PropertyOptions
>>> class PersonApply(TypedNodeApply):
...     birth_year = PropertyOptions(identifier="birthYear")
...
...     def __init__(self, space: str, external_id, name: str, birth_year: int):
...         super().__init__(space, external_id, type=("sp_model_space", "Person"))
...         self.name = name
...         self.birth_year = birth_year
...     def get_source(self):
...         return ViewId("sp_model_space", "Person", "v1")
...
>>> person = PersonApply("sp_date_space", "my_person", "John Doe", 1980)
>>> res = client.data_modeling.instances.apply(nodes=person)

Search instances

InstancesAPI.search(view: ViewId, query: str | None = None, *, instance_type: Literal['node'] = 'node', properties: list[str] | None = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, include_typing: bool = False, limit: int = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None) NodeList[Node]
InstancesAPI.search(view: ViewId, query: str | None = None, *, instance_type: Literal['edge'], properties: list[str] | None = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, include_typing: bool = False, limit: int = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None) EdgeList[Edge]
InstancesAPI.search(view: ViewId, query: str | None = None, *, instance_type: type[T_Node], properties: list[str] | None = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, include_typing: bool = False, limit: int = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None) NodeList[T_Node]
InstancesAPI.search(view: ViewId, query: str | None = None, *, instance_type: type[T_Edge], properties: list[str] | None = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, include_typing: bool = False, limit: int = DEFAULT_LIMIT_READ, sort: collections.abc.Sequence[cognite.client.data_classes.data_modeling.instances.InstanceSort | dict] | cognite.client.data_classes.data_modeling.instances.InstanceSort | dict | None = None) EdgeList[T_Edge]

Search instances

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

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

  • instance_type (Literal['node', 'edge'] | type[T_Node] | type[T_Edge]) – Whether to search for nodes or edges. You can also pass a custom typed node (or edge class) inheriting from TypedNode (or TypedEdge). See apply, retrieve_nodes or retrieve_edges for an example.

  • 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.

  • target_units (list[TargetUnit] | None) – Properties to convert to another unit. The API can only convert to another unit if a unit has been defined as part of the type on the underlying container being queried.

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

  • filter (Filter | dict[str, Any] | None) – Advanced filtering of instances.

  • include_typing (bool) – Whether to include typing information.

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

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

Returns

Search result with matching nodes or edges.

Return type

NodeList[T_Node] | EdgeList[T_Edge]

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.data_classes.data_modeling import ViewId
>>> from cognite.client.data_classes import filters
>>> 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: cognite.client.data_classes.aggregations.MetricAggregation | dict, group_by: None = None, instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: Optional[Union[str, SequenceNotStr[str]]] = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, limit: int = DEFAULT_LIMIT_READ) AggregatedNumberedValue
InstancesAPI.aggregate(view: ViewId, aggregates: Sequence[cognite.client.data_classes.aggregations.MetricAggregation | dict], group_by: None = None, instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: Optional[Union[str, SequenceNotStr[str]]] = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | None = None, limit: int = DEFAULT_LIMIT_READ) list[cognite.client.data_classes.aggregations.AggregatedNumberedValue]
InstancesAPI.aggregate(view: ViewId, aggregates: cognite.client.data_classes.aggregations.MetricAggregation | dict | collections.abc.Sequence[cognite.client.data_classes.aggregations.MetricAggregation | dict], group_by: Union[str, SequenceNotStr[str]], instance_type: Literal['node', 'edge'] = 'node', query: str | None = None, properties: Optional[Union[str, SequenceNotStr[str]]] = None, target_units: list[cognite.client.data_classes.data_modeling.instances.TargetUnit] | None = None, space: Optional[Union[str, SequenceNotStr[str]]] = None, filter: cognite.client.data_classes.filters.Filter | dict[str, Any] | 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.

  • target_units (list[TargetUnit] | None) – Properties to convert to another unit. The API can only convert to another unit if a unit has been defined as part of the type on the underlying container being queried.

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

  • filter (Filter | dict[str, Any] | 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, include_typing: bool = False) 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.

  • include_typing (bool) – Should we return property type information as part of the result?

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)

To convert units, specify what your target units are in the SourceSelector. You can either use a UnitReference or a UnitSystemReference. Note that in order for a property to be converted, they need to have a unit defined in the underlying container.

>>> from cognite.client.data_classes.data_modeling.data_types import UnitReference, UnitSystemReference
>>> selected_source = SourceSelector(
...     source=ViewId("my-space", "my-xid", "v1"),
...     properties=["f32_prop1", "f32_prop2", "f64_prop1", "f64_prop2"],
...     target_units=[
...         TargetUnit("f32_prop1", UnitReference("pressure:kilopa")),
...         TargetUnit("f32_prop2", UnitReference("pressure:barg")),
...         TargetUnit("f64_prop1", UnitSystemReference("SI")),
...         TargetUnit("f64_prop2", UnitSystemReference("Imperial")),
...     ],
... )

To select all properties, use ‘[*]’ in your SourceSelector:

>>> SourceSelector(source=ViewId("my-space", "my-xid", "v1"), properties=["*"])

Inspect instances

InstancesAPI.inspect(nodes: Optional[Union[NodeId, Sequence[NodeId], tuple[str, str], Sequence[tuple[str, str]]]] = None, edges: Optional[Union[EdgeId, Sequence[EdgeId], tuple[str, str], Sequence[tuple[str, str]]]] = None, *, involved_views: Optional[InvolvedViews] = None, involved_containers: Optional[InvolvedContainers] = None) InstanceInspectResults

Reverse lookup for instances.

This method will return the involved views and containers for the given nodes and edges.

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.

  • involved_views (InvolvedViews | None) – Whether to include involved views. Must pass at least one of involved_views or involved_containers.

  • involved_containers (InvolvedContainers | None) – Whether to include involved containers. Must pass at least one of involved_views or involved_containers.

Returns

List of instance inspection results.

Return type

InstanceInspectResults

Examples

Look up the involved views for a given node and edge:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId, InvolvedViews
>>> client = CogniteClient()
>>> res = client.data_modeling.instances.inspect(
...     nodes=NodeId("my-space", "foo1"),
...     edges=EdgeId("my-space", "bar2"),
...     involved_views=InvolvedViews(all_versions=False),
... )

Look up the involved containers:

>>> from cognite.client.data_classes.data_modeling import InvolvedContainers
>>> res = client.data_modeling.instances.inspect(
...     nodes=[("my-space", "foo1"), ("my-space", "foo2")],
...     involved_containers=InvolvedContainers(),
... )

Sync instances

InstancesAPI.sync(query: Query, include_typing: bool = False) 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.

  • include_typing (bool) – Should we return property type information as part of the result?

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: Optional[Union[NodeId, Sequence[NodeId], tuple[str, str], Sequence[tuple[str, str]]]] = None, edges: Optional[Union[EdgeId, Sequence[EdgeId], tuple[str, str], Sequence[tuple[str, str]]]] = 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.data_classes.data_modeling import NodeId, EdgeId
>>> client.data_modeling.instances.delete(NodeId('mySpace', 'myNode'), EdgeId('mySpace', 'myEdge'))

Delete all nodes from a NodeList

>>> from cognite.client.data_classes.data_modeling import NodeId, EdgeId
>>> 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

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

Bases: WriteableCogniteResourceList[T_WriteClass, T_Instance], ABC

extend(other: Iterable[Any]) None

S.extend(iterable) – extend sequence by appending elements from the iterable

get(instance_id: Optional[Union[InstanceId, tuple[str, str]]] = None, external_id: Optional[str] = None, *, id: Optional[Union[InstanceId, tuple[str, str]]] = None) Optional[T_Instance]

Get an instance from this list by instance ID.

Parameters
  • instance_id (InstanceId | tuple[str, str] | None) – The instance ID to get. A tuple on the form (space, external_id) is also accepted.

  • external_id (str | None) – The external ID of the instance to return. Will raise ValueError when ambiguous (in presence of multiple spaces).

  • id (InstanceId | tuple[str, str] | None) – (DEPRECATED) Backwards-compatible alias for instance_id. Will be removed in the next major version.

Returns

The requested instance if present, else None

Return type

T_Instance | None

to_pandas(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. Note that if the properties column is expanded and there are keys in the metadata that already exist in the DataFrame, then an error will be raised by pandas during joining.

Parameters
  • camel_case (bool) – Convert column names to camel case (e.g. externalId instead of external_id). Does not apply to properties.

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

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

  • remove_property_prefix (bool) – Attempt to remove the view ID prefix from columns names of expanded properties. Requires data to be from a single view and that all property names do not conflict with base properties (e.g. ‘space’ or ‘type’). In such cases, a warning is issued and the prefix is kept.

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

Returns

The Cognite resource as a dataframe.

Return type

pd.DataFrame

class cognite.client.data_classes.data_modeling.instances.Edge(space: str, external_id: str, version: int, type: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], last_updated_time: int, created_time: int, start_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], end_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], deleted_time: int | None, properties: cognite.client.data_classes.data_modeling.instances.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) – Current version of the edge.

  • type (DirectRelationReference | tuple[str, str]) – 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 | 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.

  • 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: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], start_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], end_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], existing_version: Optional[int] = None, sources: Optional[list[cognite.client.data_classes.data_modeling.instances.NodeOrEdgeData]] = 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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[EdgeApply]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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) – Current version of the edge.

  • 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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[EdgeApplyResult]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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], typing: TypeInformation | None = None, cognite_client: CogniteClient | None = None)

Bases: DataModelingInstancesList[EdgeApply, T_Edge]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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

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

This method dumps the list with extra information in addition to the items.

Parameters

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

Returns

A dictionary representation of the list.

Return type

dict[str, Any]

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

Bases: EdgeList

extend(other: EdgeListWithCursor) None

S.extend(iterable) – extend sequence by appending elements from the iterable

class cognite.client.data_classes.data_modeling.instances.InspectOperation

Bases: ABC

class cognite.client.data_classes.data_modeling.instances.InspectionResults(involved_views: list[cognite.client.data_classes.data_modeling.ids.ViewId] | None, involved_containers: list[cognite.client.data_classes.data_modeling.ids.ContainerId] | None)

Bases: CogniteResource

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.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: cognite.client.data_classes.data_modeling.instances.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) – Current version of the instance.

  • 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) – Attempt to remove the view ID prefix from row names of expanded properties (in index). Requires data to be from a single view and that all property names do not conflict with base properties (e.g. ‘space’ or ‘type’). In such cases, a warning is issued and the prefix is kept.

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

Returns

The dataframe.

Return type

pd.DataFrame

class cognite.client.data_classes.data_modeling.instances.InstanceAggregationResult(aggregates: list[cognite.client.data_classes.aggregations.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: Iterable[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: Optional[int] = None, sources: Optional[list[cognite.client.data_classes.data_modeling.instances.NodeOrEdgeData]] = 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']) – The type of instance.

  • existing_version (int | None) – Fail the ingestion request if the instance’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 instance (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 instance already exists. If skipOnVersionConflict is set on the ingestion request, then the instance 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.

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.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: The type of instance. :type instance_type: Literal[‘node’, ‘edge’]

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

Bases: CogniteResource

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.InstanceInspectResultList(resources: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[InstanceInspectResult]

class cognite.client.data_classes.data_modeling.instances.InstanceInspectResults(nodes: 'InstanceInspectResultList', edges: 'InstanceInspectResultList')

Bases: object

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

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[cognite.client.data_classes.data_modeling.ids.NodeId], edges: list[cognite.client.data_classes.data_modeling.ids.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[T_Node], edges: EdgeList[T_Edge])

Bases: Generic[T_Node, T_Edge]

This represents the read result of an instance query

Parameters
class cognite.client.data_classes.data_modeling.instances.InvolvedContainers

Bases: InspectOperation

class cognite.client.data_classes.data_modeling.instances.InvolvedViews(all_versions: 'bool' = False)

Bases: InspectOperation

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: cognite.client.data_classes.data_modeling.instances.Properties | None, type: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str] | 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) – Current version of the node.

  • 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 | tuple[str, str] | 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: Optional[int] = None, sources: Optional[list[cognite.client.data_classes.data_modeling.instances.NodeOrEdgeData]] = None, type: Optional[Union[DirectRelationReference, tuple[str, str]]] = 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() Self

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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[NodeApply]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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) – Current 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: Iterable[Any], cognite_client: CogniteClient | None = None)

Bases: CogniteResourceList[NodeApplyResult]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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], typing: TypeInformation | None = None, cognite_client: CogniteClient | None = None)

Bases: DataModelingInstancesList[NodeApply, T_Node]

as_ids() list[cognite.client.data_classes.data_modeling.ids.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

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

This method dumps the list with extra information in addition to the items.

Parameters

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

Returns

A dictionary representation of the list.

Return type

dict[str, Any]

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

Bases: NodeList[T_Node]

extend(other: NodeListWithCursor) None

S.extend(iterable) – extend sequence by appending elements from the iterable

class cognite.client.data_classes.data_modeling.instances.NodeOrEdgeData(source: cognite.client.data_classes.data_modeling.ids.ContainerId | cognite.client.data_classes.data_modeling.ids.ViewId, properties: Mapping[str, Optional[Union[str, int, float, bool, dict, SequenceNotStr[str], Sequence[int], Sequence[float], Sequence[bool], Sequence[dict], NodeId, DirectRelationReference, date, datetime, Sequence[cognite.client.data_classes.data_modeling.ids.NodeId | cognite.client.data_classes.data_modeling.data_types.DirectRelationReference], Sequence[date], Sequence[datetime]]]])

Bases: CogniteObject

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.

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.instances.Properties(properties: MutableMapping[ViewId, MutableMapping[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]]])

Bases: MutableMapping[ViewId | tuple[str, str] | tuple[str, str, str], MutableMapping[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]]]

get(view: cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str]) collections.abc.MutableMapping[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]] | None
get(view: cognite.client.data_classes.data_modeling.ids.ViewId | tuple[str, str] | tuple[str, str, str], default: Union[MutableMapping[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]], _T]) Union[MutableMapping[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]], _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.PropertyOptions(identifier: Optional[str] = None)

Bases: object

This is a descriptor class for instance properties in a typed class.

It is used when you have a property that has a different name in the Data Model compared to the name in the Python class.

Parameters

identifier (str | None) – The name of the property in the Data Model. Defaults to the name of the property in the Python class.

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.TargetUnit(property: 'str', unit: 'UnitReference | UnitSystemReference')

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.instances.TypeInformation(data: Optional[dict[str, dict[str, dict[str, cognite.client.data_classes.data_modeling.instances.TypePropertyDefinition]]]] = None)

Bases: UserDict, 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.instances.TypePropertyDefinition(type: 'PropertyType', nullable: 'bool' = True, auto_increment: 'bool' = False, immutable: 'bool' = False, default_value: 'str | int | dict | None' = None, name: 'str | None' = None, description: 'str | None' = None)

Bases: CogniteObject

dump(camel_case: bool = True, return_flat_dict: bool = False) 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.TypedEdge(space: str, external_id: str, version: int, type: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], last_updated_time: int, created_time: int, start_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], end_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], deleted_time: int | None)

Bases: Edge, TypedInstance

class cognite.client.data_classes.data_modeling.instances.TypedEdgeApply(space: str, external_id: str, type: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], start_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], end_node: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str], existing_version: Optional[int] = None)

Bases: EdgeApply, TypedInstance

class cognite.client.data_classes.data_modeling.instances.TypedInstance

Bases: ABC

class cognite.client.data_classes.data_modeling.instances.TypedNode(space: str, external_id: str, version: int, last_updated_time: int, created_time: int, deleted_time: int | None, type: cognite.client.data_classes.data_modeling.data_types.DirectRelationReference | tuple[str, str] | None)

Bases: Node, TypedInstance

class cognite.client.data_classes.data_modeling.instances.TypedNodeApply(space: str, external_id: str, existing_version: Optional[int] = None, type: Optional[Union[DirectRelationReference, tuple[str, str]]] = None)

Bases: NodeApply, TypedInstance

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_: Optional[str] = None, max_distance: Optional[int] = None, direction: Literal['outwards', 'inwards'] = 'outwards', filter: Optional[Filter] = None, node_filter: Optional[Filter] = None, termination_filter: Optional[Filter] = None, limit_each: Optional[int] = None, sort: Optional[list[cognite.client.data_classes.data_modeling.instances.InstanceSort]] = None, post_sort: Optional[list[cognite.client.data_classes.data_modeling.instances.InstanceSort]] = None, limit: Optional[int] = 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_: Optional[str] = None, filter: Optional[Filter] = None, sort: Optional[list[cognite.client.data_classes.data_modeling.instances.InstanceSort]] = None, limit: Optional[int] = None, through: Optional[Union[list[str], tuple[str, str, str], PropertyId]] = 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, cognite.client.data_classes.data_modeling.query.ResultSetExpression], select: dict[str, cognite.client.data_classes.data_modeling.query.Select], parameters: Optional[dict[str, str | int | float | bool | dict | list[str] | list[int] | list[float] | list[bool] | list[dict]]] = None, cursors: Optional[Mapping[str, str | 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.QueryResult(dict=None, /, **kwargs)

Bases: UserDict

class cognite.client.data_classes.data_modeling.query.ResultSetExpression(from_: str | None, filter: cognite.client.data_classes.filters.Filter | None, limit: int | None, sort: list[cognite.client.data_classes.data_modeling.instances.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] | None' = None, target_units: 'list[TargetUnit] | 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]

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(space: 'str', external_id: 'str')

Bases: DataModelingId

class cognite.client.data_classes.data_modeling.ids.DataModelId(space: 'str', external_id: 'str', version: 'str | None' = None)

Bases: VersionedDataModelingId

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

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.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(space: 'str', external_id: 'str', version: 'str | None' = None)

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(space: 'str', external_id: 'str', version: 'str | None' = None)

Bases: VersionedDataModelingId

GraphQL

Apply DML

DataModelingGraphQLAPI.apply_dml(id: cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str], dml: str, name: Optional[str] = None, description: Optional[str] = None, previous_version: Optional[str] = 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: cognite.client.data_classes.data_modeling.ids.DataModelId | tuple[str, str] | tuple[str, str, str], query: str, variables: Optional[dict[str, Any]] = 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 } }",
... )