[
https://issues.apache.org/jira/browse/TINKERPOP-3261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18092398#comment-18092398
]
ASF GitHub Bot commented on TINKERPOP-3261:
-------------------------------------------
spmallette commented on code in PR #3483:
URL: https://github.com/apache/tinkerpop/pull/3483#discussion_r3494100020
##########
docs/src/reference/implementations-tinkergraph.asciidoc:
##########
@@ -219,6 +220,31 @@ g.io("data/tinkerpop-crew.kryo").read().iterate()
g.V().properties()
----
+[[tinkergraph-multi-label]]
+=== Multi-Label Support
+
+TinkerGraph supports multiple labels per vertex when
`gremlin.tinkergraph.vertexLabelCardinality` is set to
+`ONE_OR_MORE` or `ZERO_OR_MORE`. This enables use of the `addLabel()`,
`dropLabel()`, `dropLabels()`, and `labels()`
+traversal steps.
+
+[source,groovy]
+----
+conf = new BaseConfiguration()
+conf.setProperty("gremlin.tinkergraph.vertexLabelCardinality", "ZERO_OR_MORE")
+graph = TinkerGraph.open(conf)
+g = traversal().with(graph)
+g.addV("person","employee").property("name","marko").iterate()
+g.V().has("name","marko").labels() // emits: person, employee
+g.V().has("name","marko").addLabel("manager").labels() // emits: person,
employee, manager
+g.V().has("name","marko").dropLabel("employee").labels() // emits: person,
manager
+----
+
+The `hasLabel()` step works with multi-label vertices using OR semantics:
`hasLabel("a","b")` matches any vertex that
+has label "a" OR label "b". To match vertices having both labels, chain
multiple `hasLabel()` calls:
+`hasLabel("a").hasLabel("b")`.
+
+IMPORTANT: Edge labels are currently fixed at cardinality `ONE` and are not
configurable.
Review Comment:
do we still even have a notion of edge cardinality?
> Enable multiple label support on vertex with configurable label cardinality
> ---------------------------------------------------------------------------
>
> Key: TINKERPOP-3261
> URL: https://issues.apache.org/jira/browse/TINKERPOP-3261
> Project: TinkerPop
> Issue Type: Task
> Affects Versions: 4.0.0
> Reporter: Yang Xia
> Priority: Major
>
> Vertices are currently limited to a single immutable label assigned at
> creation. This prevents modeling common real-world scenarios where entities
> naturally belong to multiple categories (e.g., a person who is both an
> employee and a manager).
>
> Introduce a configurable LabelCardinality that controls how many labels a
> vertex may have and whether they can be mutated after creation. Three
> proposed modes: ONE (current behavior, default), ONE_OR_MORE (mutable,
> minimum one), ZERO_OR_MORE (fully flexible).
>
> New steps:
>
> - labels() — flatMap step emitting each label as a traverser
> - addLabel(String, String...) — add labels to a vertex
> - dropLabel(String, String...) — remove specific labels
> - dropLabels() — remove all labels
> Edge labels remain at cardinality ONE. The infrastructure would support
> future edge multi-label enablement without wire format changes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)