如何在Grakn Python客户端中关闭推理?事务方法需传参吗?
关闭Grakn Python客户端的推理进行数据查询
没错,你确实需要在事务方法里传入参数来关闭推理功能。默认情况下,Grakn的只读事务是开启推理的——它会自动利用你定义的规则推导隐含的数据,但如果你只想查询存储的原始事实,就得显式关闭这个特性。
正确的代码写法
你可以通过两种方式实现,选哪种看你的习惯:
方式1:使用简洁的read()方法
from grakn.client import GraknClient client = GraknClient(uri=uri) session = client.session(keyspace=keyspace) # 显式关闭推理的只读事务 tx = session.read(inference=False)
方式2:使用transaction()方法指定类型和参数
from grakn.client import GraknClient, TransactionType client = GraknClient(uri=uri) session = client.session(keyspace=keyspace) tx = session.transaction(TransactionType.READ, inference=False)
更优雅的写法:用with语句管理事务
推荐用with上下文管理器,它会自动帮你关闭事务,避免资源泄漏:
from grakn.client import GraknClient client = GraknClient(uri=uri) with client.session(keyspace=keyspace) as session: with session.read(inference=False) as tx: # 在这里执行你的查询 result_iterator = tx.query("match $p isa person; get;") # 处理查询结果 for result in result_iterator: print(result.get("p").id)
简单解释下:inference参数默认值是True,所以必须手动设为False才能关闭推理。关闭后,查询只会返回你直接插入到Grakn中的原始数据,不会触发规则推导。
内容的提问来源于stack exchange,提问作者user7420209
相关产品推荐
相关产品推荐

