从 "compute path" 中的路径获取边缘属性
Getting edge attributes from path in "compute path"
我查看了您文档中 "compute path" 的示例。
计算路径的结果是一个节点列表。
我想访问连接节点的边并从中获取属性。
可以吗?
你会如何推荐我这样做?
Grakn 是一个超图 - 它有超边而不是边。 Grakn 超边称为 relation
。当你使用 compute count
时,你会得到一个 ConceptList。 relation
是 Concept
的一种类型,因此您将在此列表中找到最短路径上的关系 ID。
您可以通过遍历列表找到它们。对于每个元素,您可以获取 id 并进行查询以从其 id 及其属性中获取概念:
match $c id V12345; get;
当然是用 V12345 代替你找到的 ID。
这里有各种选择。检索到 c
的 Concept 对象后,您可以使用 concept.isRelation()
(here) and then concept.attributes()
(here) 来检查它是否是一个关系以获取属性。对 ConceptList
.
中的每个 ID 执行此操作
或者,您可以通过一个查询完成所有这些:
match $c id V12345; $c isa relation; $c has attribute $a; get;
如果 V12345 不是关系,或者如果它没有属性,这将 return 没有结果。如果它是一种关系并且具有属性,那么您将针对每个属性获得一个答案。
我查看了您文档中 "compute path" 的示例。
计算路径的结果是一个节点列表。
我想访问连接节点的边并从中获取属性。
可以吗?
你会如何推荐我这样做?
Grakn 是一个超图 - 它有超边而不是边。 Grakn 超边称为 relation
。当你使用 compute count
时,你会得到一个 ConceptList。 relation
是 Concept
的一种类型,因此您将在此列表中找到最短路径上的关系 ID。
您可以通过遍历列表找到它们。对于每个元素,您可以获取 id 并进行查询以从其 id 及其属性中获取概念:
match $c id V12345; get;
当然是用 V12345 代替你找到的 ID。
这里有各种选择。检索到 c
的 Concept 对象后,您可以使用 concept.isRelation()
(here) and then concept.attributes()
(here) 来检查它是否是一个关系以获取属性。对 ConceptList
.
或者,您可以通过一个查询完成所有这些:
match $c id V12345; $c isa relation; $c has attribute $a; get;
如果 V12345 不是关系,或者如果它没有属性,这将 return 没有结果。如果它是一种关系并且具有属性,那么您将针对每个属性获得一个答案。