You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by jo...@apache.org on 2021/07/07 00:06:57 UTC

[tinkerpop] 02/04: Add a model for Graph.Features

This is an automated email from the ASF dual-hosted git repository.

joshsh pushed a commit to branch TINKERPOP-2563-language
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 7e7f7d37f8973e2958685c4ac30dd1fa385a5a15
Author: Joshua Shinavier <jo...@uber.com>
AuthorDate: Mon Jul 5 18:10:39 2021 -0700

    Add a model for Graph.Features
---
 .../tinkerpop/gremlin/language/graph_features.yaml | 114 +++++++++++++++++++++
 1 file changed, 114 insertions(+)

diff --git a/gremlin-language/src/main/yaml/org/apache/tinkerpop/gremlin/language/graph_features.yaml b/gremlin-language/src/main/yaml/org/apache/tinkerpop/gremlin/language/graph_features.yaml
new file mode 100644
index 0000000..be29175
--- /dev/null
+++ b/gremlin-language/src/main/yaml/org/apache/tinkerpop/gremlin/language/graph_features.yaml
@@ -0,0 +1,114 @@
+description: "TinkerPop graph features"
+status: development
+comments:
+  - >
+    Note: many graph features have to do with writes (i.e. whether adds or removals of a given kind are allowed).
+          These are excluded from the current data types, though noted below.
+          Also note that these types rearrange the features somewhat, preserving information.
+  - >
+    Excluded ElementFeatures (vertex and edge):
+      FEATURE_ADD_PROPERTY, FEATURE_REMOVE_PROPERTY, FEATURE_CUSTOM_IDS, FEATURE_USER_SUPPLIED_IDS
+  - >
+    Excluded EdgeFeatures:
+      FEATURE_ADD_EDGES, FEATURE_REMOVE_EDGES
+  - >
+    Excluded VertexFeatures:
+      FEATURE_ADD_VERTICES, FEATURE_REMOVE_VERTICES
+  - >
+    Excluded DataTypeFeatures: none
+  - >
+    Excluded GraphFeatures: all of them, i.e.
+      FEATURE_COMPUTER, FEATURE_CONCURRENT_ACCESS, FEATURE_PERSISTENCE, FEATURE_THREADED_TRANSACTIONS, FEATURE_TRANSACTIONS
+
+definitions:
+
+  - name: AtomicType
+    description: "Any of a set of atomic types specifically supported as a graph feature in TinkerPop"
+    type:
+      enum:
+        - boolean
+        - byte
+        - double
+        - float
+        - integer
+        - long
+        - string
+
+  - name: DataType
+    description: "A data type for property values"
+    type:
+      union:
+        - name: atomic
+          description: >
+            The type of an atomic value
+          type: AtomicType
+
+        - name: array
+          description: >
+            The type of an array of values
+          type: DataType
+
+        - name: map
+          description: >
+            The type of map values. The map can contain arbitrary serializable values
+            that may or may not be defined as features themselves.
+
+        - name: mixedList
+          description: >
+            The type of a mixed list; as such lists are "mixed", they may contain objects of different types.
+            These objects may be arbitrary serializable values that may or may not be defined as features themselves.
+
+        - name: serializable
+          description: "The type of a Java serializable value"
+
+        - name: uniformList
+          description: >
+            The type of a uniform list; as such lists are "uniform", they must contain objects of the same type.
+            These objects may be arbitrary serializable values that may or may not be defined as features themselves.
+
+  - name: Feature
+    description: "A supported feature"
+    type:
+      union:
+        - name: supportsVertexIds
+          description: "All supported id types for vertices"
+          type:
+            set: IdType
+
+        - name: supportsEdgeIds
+          description: "All supported id types for edges"
+          type:
+            set: IdType
+
+        - name: supportsVertexProperties
+          description: >
+            Determines whether a Vertex allows for the processing of at least one data type defined by the features.
+            In this case "processing" refers to at least "reading" the data type.
+
+        - name: supportsEdgeProperties
+          description: >
+            Determines whether an Edge allows for the processing of at least one data type defined by the features.
+            In this case "processing" refers to at least "reading" the data type.
+
+        - name: supportsVertexMetaProperties
+          description: >
+            Determines whether a Vertex can support properties on vertex properties.
+
+        - name: supportsVertexMultiProperties
+          description: >
+            Determines whether a Vertex can support multiple properties with the same key.
+
+        - name: supportsDataTypes
+          description: >
+            This bundles together individual features relating to supported property value types.
+          type:
+            set: DataType
+
+  - name: IdType
+    description: "A supported id type"
+    type:
+      enum:
+        - any
+        - numeric
+        - string
+        - uuid