java - 如何使用 Java 查询 Grakn?
问题描述
我浏览了 Java api 的文档来查询 Grakn 数据库。
Grakn.Transaction readTransaction = session.transaction(GraknTxType.READ);
GetQuery query = Graql.match(var("p").isa("person")).limit(10).get();
Stream<ConceptMap> answers = query.withTx(readTransaction).stream();
answers.forEach(answer -> System.out.println(answer.get("p").id()));
它正在打印 id,但我想查看数据,即与此人关联的名称。我想查看结果中的内容。它只是显示id。
解决方案
作为 Graql 查询的结果提供的答案是您在查询本身中指定的变量(及其值)的集合。
在这种情况下,要获取 的name
实例person
,您可以将其包含在查询中,如下所示:
GetQuery query = Graql.match(var("p").isa("person").has("name", var("n"))).limit(10).get();
Graql 等价物是match $p isa person, has name $n; get;
.
现在,您可以使用Concept API中可用的方法来检索每个变量的可用信息。
在这种情况下,变量n
包含一个attribute
并且您想要检索它value()
,如下所示:
answers.forEach(answer -> System.out.println(answer.get("n").asAttribute().value()))
推荐阅读
- batch-file - 如何使用变量批处理重命名
- tensorflow - 从源错误构建 tensorflow:读取扩展文件“closure/defs.bzl”时遇到错误:没有这样的包
- c - 我正在尝试进行的新系统调用出现问题(Ubuntu 18.04.1 LTS Kernel:4.17.4)
- angular - 不可分配给类型 & 类型中缺少属性长度
- c# - 局部视图中的模型未返回任何数据
- javascript - Filtering and appending in JSON?
- css - :focus 在 textarea 没有真正聚焦时应用样式
- servlets - Thymeleaf 条件添加标签
- javascript - javascript验证用户名和密码
- javascript - Javascript 被设计为不是多线程的主要原因是什么?