我有这个Java代码,使用apache jena api查询披萨本体

    String queryStr =
"prefix pizza: <" + PIZZA_NS + "> "               +
"prefix rdfs: <" + RDFS.getURI() + "> "           +
"prefix owl: <" + OWL.getURI() + "> "             +
"select ?pizza where {?pizza a owl:Class ; "      +
"rdfs:subClassOf ?restriction. "                  +
"?restriction owl:onProperty pizza:hasTopping ;"  +
"owl:someValuesFrom pizza:PeperoniSausageTopping" +
"}";


Query query = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet rs = qe.execSelect();


ArrayList rsList = (ArrayList)ResultSetFormatter.toList(rs);
for(int i=0;i<rsList.size();i++){
    out.println(rsList.get(i).toString());
}


它返回以下内容:

( ?pizza = <http://www.co-ode.org/ontologies/pizza/pizza.owl#AmericanHot> )
( ?pizza = <http://www.co-ode.org/ontologies/pizza/pizza.owl#FourSeasons> )
( ?pizza = <http://www.co-ode.org/ontologies/pizza/pizza.owl#American> )


但我只需要


  美国热
  
  四个季节
  
  美国的


如何获得这个结果?

最佳答案

SPARQL 1.1函数STRAFTER可以帮助:

SELECT ?pizza (strafter(str(?pizza), "#") AS ?localName)
WHERE


但是客户端解决方案同样出色,并且可以与SPARQL 1.0一起使用。

10-04 11:36
查看更多