sparql - sparql-gremlin:如何使用 java 实现相同的目标?
问题描述
我正在使用 Java 程序开发 sparql-gremlin。目前,我可以在 gremlin 命令行中进行以下查询。
gremlin> g.sparql("SELECT ?name ?age WHERE { ?person v:name ?name . ?person v:age ?age } ORDER BY ASC(?age)")
==>[name:vadas,age:27]
==>[name:marko,age:29]
==>[name:josh,age:32]
==>[name:peter,age:35]
但是,我怎样才能用 java 做同样的查询呢?我尝试了以下代码,但收到了错误的结果。
Graph graph = TinkerFactory.createModern() ;
try {
SparqlTraversalSource g = graph.traversal(SparqlTraversalSource.class) ;
GraphTraversal iter = g.sparql("SELECT ?name ?age WHERE { ?person v:name ?name . ?person v:age ?age } ORDER BY ASC(?age)").V() ;
while (iter.hasNext()) {
Vertex v = (Vertex) iter.next();
System.out.println(v.id().toString() + ", " + v.property("name") + ", " + v.label() + ", " + v.property("age")) ;
}
} catch (Exception e) {
e.printStackTrace();
}
收到的结果是:
log4j:WARN No appenders could be found for logger (org.apache.jena.util.FileManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
1, vp[name->marko], person, vp[age->29]
2, vp[name->vadas], person, vp[age->27]
3, vp[name->lop], software, vp[empty]
4, vp[name->josh], person, vp[age->32]
5, vp[name->ripple], software, vp[empty]
6, vp[name->peter], person, vp[age->35]
1, vp[name->marko], person, vp[age->29]
2, vp[name->vadas], person, vp[age->27]
3, vp[name->lop], software, vp[empty]
4, vp[name->josh], person, vp[age->32]
5, vp[name->ripple], software, vp[empty]
6, vp[name->peter], person, vp[age->35]
1, vp[name->marko], person, vp[age->29]
2, vp[name->vadas], person, vp[age->27]
3, vp[name->lop], software, vp[empty]
4, vp[name->josh], person, vp[age->32]
5, vp[name->ripple], software, vp[empty]
6, vp[name->peter], person, vp[age->35]
1, vp[name->marko], person, vp[age->29]
2, vp[name->vadas], person, vp[age->27]
3, vp[name->lop], software, vp[empty]
4, vp[name->josh], person, vp[age->32]
5, vp[name->ripple], software, vp[empty]
6, vp[name->peter], person, vp[age->35]
解决方案
我自己得到了答案。我应该在 sparql() 调用之后调用 fill() 。
推荐阅读
- python - 如何比较两个 NewsItem 列表并减去相同的 NewsItem?
- python - AttributeError:“模块”对象在脚本中没有属性“_Condition”
- google-apps-script - 检索 Google 电子表格中所有表格的值以进行特定修订
- c++ - 'std::bad_alloc' 尝试删除 priority_queue 元素 C++
- r - 对大量图像文件进行分类
- python - Python使用正则表达式删除文本中的标点符号
- html - Safari iOS 12.2 和 12.3 中的错误
- r - How to subset rows with strings
- javascript - React Functional Component + TypeScript 的函数重载怎么写?
- python - sklearn 分类的 class_weight 字典格式