升级到 Grakn 核心和 python API 1.8.1 使几个 Type 方法失败 - 如何修复?

Upgrade to Grakn core and python API 1.8.1 makes several Type methods fail - how to fix it?

以下代码适用于 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' object has no attribute 'subs'

(实体类型、关系类型和角色的错误相同)

其他方法也会出现同样的错误:attributes(), keys() ..(还没有全部测试)。

我检查过 concept_type.is_type() returns True.

不确定是否相关,但在使用上述语法或列表理解替换整个应用程序中的 collect_concepts() 方法后发生错误,假设该方法已被删除(参见 Pull Request) .

相关的concept API docs没变。

出了什么问题?

与此问题相关的文档可在此处找到: https://dev.grakn.ai/docs/concept-api/overview

在 Grakn 客户端版本 1.8.0 之前,concepts 总是直接与服务器保持连接。这使用户能够使用 subs()keys().

等方法调用 Grakn 服务器

自 >1.8.0 起,client-side 个概念是 Local 个概念或 Remote 个概念:

  • Local 概念是简单的值对象,保留 Id、Label、Type、Value(对于属性)和它们直接包含的其他状态。客户 return Local 通常来自查询和其他操作。
  • Remote 概念是通过使用 concept.asRemote(tx) 将交易传递给概念而从 Local 概念获得的。这 re-enables 他们像在旧版本的 grakn 客户端中一样连接到服务器。

进行此更改是为了确保用户了解哪些操作可能代价高昂且需要通过网络传输,哪些操作速度很快且仅对本地值进行操作。