次のクエリを使用して、オントロジーから個人を取得できます。
SELECT ?indiv WHERE { ?indiv rdf:type:Fruit }
Apple、Orange などの結果が得られますが、このクエリを Java で記述した場合、次の例外が発生します。
Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "}" "} "" at line 4, column 41.
Was expecting one of:
<IRIref> ...
<PNAME_NS> ...
<PNAME_LN> ...
<BLANK_NODE_LABEL> ...
<VAR1> ...
<VAR2> ...
"true" ...
"false" ...
<INTEGER> ...
<DECIMAL> ...
<DOUBLE> ...
<INTEGER_POSITIVE> ...
<DECIMAL_POSITIVE> ...
<DOUBLE_POSITIVE> ...
<INTEGER_NEGATIVE> ...
<DECIMAL_NEGATIVE> ...
<DOUBLE_NEGATIVE> ...
<STRING_LITERAL1> ...
<STRING_LITERAL2> ...
<STRING_LITERAL_LONG1> ...
<STRING_LITERAL_LONG2> ...
"(" ...
<NIL> ...
"{" ...
"[" ...
<ANON> ...
"+" ...
"*" ...
"/" ...
"|" ...
"?" ...
at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:87)
at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.parse(ParserSPARQL11.java:40)
at com.hp.hpl.jena.query.QueryFactory.parse(QueryFactory.java:132)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:69)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:28)
私のコードは次のとおりです。
String queryString = " PREFIX ont: <http://www.owl-ontologies.com/fruitOntology.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?indiv WHERE { ?indiv ont:Fruit } ";
Query query = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.create(query, m) ;
try {
ResultSet results = qexec.execSelect() ;
for ( ; results.hasNext() ; )
{
QuerySolution soln = results.nextSolution() ;
Resource y = soln.getResource("y") ;
Resource x = soln.getLiteral("x") ;
System.out.println(y.getLocalName()+" = "+x.getString()) ;
}
}
catch(Exception e){
}