问题描述
以下代码在适用于Grakn 1.5.9的python API中起作用:
concept_type = next(iterator_conceptMap).get("x")
concepts_sub = concept_type.subs()
由于将Grakn和Python API更新为1.8.1,因此代码会产生错误
AttributeError:'AttributeType'对象没有属性'subs'
(以及EntityType,RelationType和角色的相同错误)
其他方法也会发生相同的错误:attributes(),keys()..(尚未测试全部)。
我已检查concept_type.is_type()
返回True
。
不确定是否相关,但是在删除了整个方法后,使用上述语法或列表理解替换了collect_concepts()
方法,该错误发生了,前提是该方法已删除(请参见Pull Request)。 / p>
相关的concept API docs尚未更改。
出了什么问题?
解决方法
与此问题相关的文档位于: https://dev.grakn.ai/docs/concept-api/overview
在Grakn客户端1.8.0之前的版本中,概念始终会保留直接与服务器的连接。这使用户可以使用subs()
和keys()
之类的方法向Grakn服务器发出呼叫。
从1.8.0开始,客户端概念是 Local
概念或Remote
概念:
-
Local
概念是简单的值对象,它们保留Id,Label,Type,Value(用于属性)和它们直接包含的其他状态。客户通常会通过查询和其他操作返回Local
。
通过使用 -
concept.asRemote(tx)
概念。像旧版本的grakn客户端一样,这使它们能够重新连接到服务器。
Remote
将事务传递给概念来从Local
概念获得进行此更改是为了确保用户知道哪些操作可能会很昂贵,并且需要通过网络旅行,哪些操作会很快,并且只能使用本地值进行操作。