1

私は、apache jena apiを使用してピザオントロジーを照会するこのJavaコードを持っています

    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> )

しかし、私はただ必要です

アメリカ人ホット

四季

アメリカ人

この結果を得るには?

4

2 に答える 2

6

私はこの方法で解決しました。

for ( ; rs.hasNext() ; ){
  QuerySolution soln = rs.nextSolution() ;
  RDFNode x = soln.get("pizza") ;
  out.println(x.asNode().getLocalName());
}

誰が同じ質問をするかについては、他の情報をここから取得できます

于 2012-10-09T14:21:38.200 に答える
3

SPARQL 1.1 関数 STRAFTER は次のことに役立ちます。

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

しかし、クライアント側のソリューションも同様に優れており、SPARQL 1.0 で動作します。

于 2012-10-09T16:18:00.083 に答える