Declares a link type in the graph’s ontology: a name, its source and target object types, an optional cardinality hint (for example many-to-one), and property definitions. Source and target must name declared object types by the time the ontology is frozen. After freezing, this command fails with failed_precondition.engine.graph_ontology_frozen.
Successful mutations return an acknowledgement that identifies the affected target, the mutation effect, and commit facts when the operation changed stored state.
Examples
Define a link (edge) type between two object types.
CLI
$ strata graph create g
$ strata graph ontology define-object-type g person
$ strata graph ontology define-link-type g knows person person
$ strata graph ontology get g
Wire
{"graph":"g","type":"graph_create"}
{"graph":"g","name":"person","type":"graph_define_object_type"}
{"graph":"g","name":"knows","source":"person","target":"person","type":"graph_define_link_type"}
{"graph":"g","type":"graph_get_ontology"}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
cardinality | string | no | Optional cardinality hint (e.g. one-to-many). |
graph | string | yes | Graph name. |
name | string | yes | Link type name. |
properties | object | no | Declared properties by name. |
source | string | yes | Declared source object type. |
target | string | yes | Declared target object type. |
Plus the optional scope: branch and space (default to the session branch and the "default" space).
Returns
MutationAck<GraphOntologyWrite>.
Errors
failed_precondition.engine.runtime_closednot_found.engine.branchinvalid_argument.engine.product_spaceinvalid_argument.engine.graph_namenot_found.engine.graphinvalid_argument.engine.graph_type_nameinvalid_argument.engine.graph_type_name_reservedinvalid_argument.engine.graph_property_namefailed_precondition.engine.graph_ontology_frozen
Invocation
- CLI:
strata graph ontology define-link-type - Wire type:
graph_define_link_type