为什么multiplicity.SIMPLE边不能包含在以顶点为中心的索引中?

时间:2016-03-06 22:02:27

标签: graph graph-databases titan multiplicity

我有一个Edgelabel

ContainsAttributeMultiplicity.SIMPLE

这些边缘也有一个属性,我想把它称为x,我想要以顶点为中心的索引。

PropertyKey propertyX = mgmt.getPropertyKey("x");
EdgeLabel containsAttributeLabel = mgmt.makeEdgeLabel(EdgeLabels.ContainsAttribute).multiplicity(Multiplicity.SIMPLE).make();
mgmt.buildEdgeIndex(containsAttributeLabel,"propXIndex",Direction.IN, propertyX);

所以边缘代表Entity --containsAttribute --> Attribute。我尝试进行的查询将尝试通过对属性x进行过滤来搜索给定查询的实体。

我想知道为什么它不允许我说:

The relation type [ContainsAttribute] has a multiplicity or cardinality constraint in direction [IN] and can therefore not be indexed

我认为我的用例是有道理的,我不想放宽我的边缘标签多样性从SIMPLEMANY2ONEONE2MANYMULTI,让它发挥作用。

编辑:根据示例http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html赫拉克勒斯与很多怪物作战,所以边缘标记为“#39;被发现出来的大力士'多次连接不同的怪物。然后边缘索引在属性'时间'所以可以进行过滤。我想做类似的事情,我认为以顶点为中心的索引是这样的。那些边是Multiplicity.SIMPLE,因为最多有一个边被标记为' battled'赫拉克勒斯和每个怪物之间。

编辑2:

再次类似于给定的例子,SIMPLE图表:

enter image description here

我相信为赫拉克勒斯提供一个顶点中心索引并且正在进行的SIMPLE'边缘。当从赫拉克勒斯到怪物时,这会使time >=20之类的查询更快。

我不明白为什么我们必须使用如下所示的MULTI图(不太严格)来利用以顶点为中心的索引。

enter image description here

任何帮助将不胜感激! 谢谢!

0 个答案:

没有答案