多属性值表示

  • 问题的具体描述

我之前使用的是RDF数据库,在我的RDF数据里面存在多属性值的情况(例如,属性:别称altLabel,可以有多个属性值),这种情况在我的数据里面比较普遍。我一开始的想法是使用Nebula List类型表达多值属性,但发现目前并不支持属性类型为List。想请教一下是否还有什么表达方式可以采用。

我有搜寻到使用 新的节点 表达多值属性,但还是上面那个例子,别称altLabel建模为节点后,就只是拥有一个以字符串为类型的属性,感觉有点冗余。而且还有其他许多属性字段,也是类似这种多属性值的情况。

我们一般都是把多属性值做展开。例如属性名为A,这个属性对应三个值,就展开成A.a1, A.a2, A.a3。

感谢您的回复!把属性名展开是一种可以考虑的很好方法。但在A属性的具体对应值个数不确定的情况下,那是否就需要去动态的在Nebula Schema里面添加属性?
具体来说,以您的例子为例,假设我有实体Instance_1和Instance_2,Instance_1属性A有2个值,而Instance_2属性A有3个值(这个在我的数据里面非常常见,例如属性altLabel,pdfUrls,fieldsOfStudy等,都是无法预先明确具有多少数量的属性),这种情况的话按您的方法,是就需要不断动态判断并修改Schema添加新的属性字段吗?(例如A.a1, A.a2, A.a3…)

1 个赞

属性值个数不确定的话,就比较麻烦了。

很好的话题:+1:t2:

如果不确定 nested 属性的数量,展开的话就涉及到schema,可以考虑利用自旋边,就是指向自己的边,这里边可以利用 nebula 边的四元组特性(rank)做到和 schema 取消绑定支持灵活属性。

比如可变数量的二级属性的 key 作为 rank,value作为边的一个属性的值

1 个赞

感谢您的回复!结合自旋边和rank,这个方案是我从未想到的,非常巧妙的运用了nebula特性来解决了多值问题。在nebula尚未直接支持多值属性的前提下,我非常赞同您的方案。

接下来我准备采取这个方法尝试完成自己数据的迁移。再次感谢您的解答!

1 个赞

期待您的探索结果

2 个赞

文档中原来已经有这个内容,感谢您的补充!这给我带来了很好参考。

1 个赞

问题解决了的话,你可以勾选 wey 或者 min.wu 的回复为解决方法哈,谢谢 Imforestbird

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。

浙ICP备20010487号