Titan图:带有Cardinality.LIST的边缘属性? StandardEdge.addProperty()在哪里?

时间:2017-01-12 20:10:23

标签: java graph-databases titan

我们使用Titan 0.5.4。 我们使用Frames框架进行OGM,我们定制它来支持继承。 我们在属性上设置了Titan index,其中包含"类型鉴别符" (见Hibernate):

PropertyKey propKey = getOrCreatePropertyKey(titan, "w:type", String.class), Cardinality.LIST);
titan.buildIndex("edge-type", Edge.class).addKey("w:type").buildCompositeIndex();

现在,buildIndex第二个参数的存在表明边缘也应该能够容纳Cardinality.LIST属性。
但是,当您想要添加这些属性时,没有方法:

if (abstractElement instanceof StandardEdge)
    ((StandardEdge) abstractElement).addProperty(propertyName, propertyValue);

除了addProperty()之外,只有setProperty()覆盖了值,而Javadoc明确指出:

  

设置此元素上给定键的值。必须将密钥定义为具有Cardinality.SINGLE,否则此方法会抛出异常

所以我想知道,

如何将多个值放入edge的属性?

1 个答案:

答案 0 :(得分:2)

我和Titan 0.5.4有同样的问题。不幸的是,不允许在Titan中使用多属性(基数不同于Cardinality.SINGLE)来获得边缘属性。在Titan 0.5.4文档here中没有明确描述。

  

Titan支持在单个顶点

上使用相同键的多个属性

Titan 1.0.0中的相同故事仅将方法addPropery更改为property。文档为here