如果我进行一个简单的查询,例如match $x isa dog; limit 5; get;无论 Grakn 中存储了多少条狗,我都会得到 5 个结果。这很好,但是如果我在进行查询时不知道我想要多少条狗并且想限制我稍后在代码中检索的数量怎么办?
这是我使用 Python 客户端的想法:
import grakn
client = grakn.Grakn(uri="localhost:48555")
session = client.session(keyspace="dogs_keyspace")
tx = session.transaction(grakn.TxType.WRITE)
results = tx.query('match $x isa dog; get;') # I don't limit now, so I can do it later
results 是一个迭代器,所以我不能这样做:
limited_results = list(results)[:5]
因为如果我这样做,那么所有的狗都会被放入列表中,然后我会选择前 5 只,如果我在知识图中有 1,000,000 只狗,这真的是低效的。
但我可以说:
limited_results = list(itertools.islice(results, 5))
我应该只得到前 5 只狗,而不要碰其他 999,995 只狗。
但我的问题是:这种方法是否比limit 5在查询中提供更慢match $x isa dog; limit 5; get;?
慕慕森
相关分类