首页 > 解决方案 > 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]

标签: sparqlgremlin

解决方案


我自己得到了答案。我应该在 sparql() 调用之后调用 fill() 。


推荐阅读