2
我可以檢索使用下面的查詢從我個人的本體:如何使用SPARQL查詢從貓頭鷹中檢索個人?
SELECT ?indiv WHERE { ?indiv rdf:type:Fruit }
我得到的結果,如蘋果,橘子等,但是當我用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){
}
現在我沒有得到任何例外。但是我沒有得到任何結果......你對這是爲什麼嗎? – Rosh
可能因爲要麼沒有人直接聲稱是類型:水果。此外,如果你說過A,B和C是蘋果,而所有蘋果都是水果,那麼你需要確保你使用某種推理器來取回A,B和C都是水果的事實憑藉他們是蘋果的事實。 – Michael