Star

请问一个点/多个Tag的场景

在学习官方文档中
有提到

标签 :拥有一种或多种属性
每个标签都有一个人类可读的名称,并且每个标签内部都会分配一个 32 位的整数
每个标签与一个属性列表相关联,每个属性都有一个名称和类型
标签之间可存在依赖关系作为约束。例如,如果标签 S 依赖于标签 T,则除非标签 T 存在,否则标签 S 无法存在。

点 :图数据中代表实体的点
每个点都有一个唯一的 64 位(有符号整数)ID (VID)
一个点可以拥有多个标签

一个点同时拥有多个标签具体是指什么场景?
插入点时, 由于ID一样, 如果实现?

插入多个tag可以参考 https://docs.nebula-graph.io/manual-EN/2.query-language/4.statement-syntax/2.data-query-and-manipulation-statements/insert-vertex-syntax/

多tag的场景, 比如把人建模成点,人的不同角色建模成tag

@Shylock-Hg
多谢回复

nebula> CREATE TAG t1(i1 int)
nebula> CREATE TAG t2(s2 string)
nebula> INSERT VERTEX t1 (i1), t2(s2) VALUES 21: (321, “hello”) – insert vertex 21 with two tags.

看这个实际语句效果的话
这类似 一个匿名虚拟Tag 了?


这个例子的话, 直接人建模成tag, 角色建模成属性, 好像更接近传统设计

就是不大理解这块设计的初衷是想解决哪类问题
或这么设计后的带来的优势是什么

tag的解耦比属性更好,方便添加删除tag

21:(321, ‘hello’) 这个结构

1> 21点 理解为 没有定义tag / 还是含有t1,t2 两个tag ?
2> 321 会在插入时, t1 自动生成个 id, 另外 t1.i1=321 是这个流程吧?
3> 21点 由于只有21这个数值
查询时 只能 FETCH PROP ON * 100; 这类场景吧? 别的好像关联关系运算定向不到这个21节点

  1. 包含t1,t2
  2. 点的插入会使用tag的id作为key的一部分
  3. fetch, go 以及路径查询都可以

多谢回复
有点理解了

Tag 这个概念有点复杂
承担了 组合数据结构 和 表 双重角色

不过好像不影响使用
使用时当 传统单表定义用就没歧义了

nebula> CREATE TAG t1(i1 int)
nebula> CREATE TAG t2(s2 string)
nebula> INSERT VERTEX t1 (i1), t2(s2) VALUES 21: (321, “hello”) – insert vertex 21 with two tags.

nebula> CREATE TAG t3(t1, t2)
nebula> INSERT VERTEX t3(t1,t2) VALUES 21: (321, “hello”) – insert vertex 21 with t3 having two
sub tags t1, t2

tag可以类比表

浙ICP备20010487号