DBpediaからラベルを抽出しようとしています。私は今、部分的に成功していますが、私は次の問題に悩まされています。次のコードは動作します。円括弧付きのsparqlクエリで例外が発生する
public class DbPediaQueryExtractor {
public static void main(String [] args) {
String entity = "Aharon_Barak";
String queryString ="PREFIX dbres: <http://dbpedia.org/resource/> SELECT * WHERE {dbres:"+ entity+ "<http://www.w3.org/2000/01/rdf-schema#label> ?o FILTER (langMatches(lang(?o),\"en\"))}";
//String queryString="select * where { ?instance <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>; <http://www.w3.org/2000/01/rdf-schema#label> ?o FILTER (langMatches(lang(?o),\"en\")) } LIMIT 5000000";
QueryExecution qexec = getResult(queryString);
try {
ResultSet results = qexec.execSelect();
for (; results.hasNext();)
{
QuerySolution soln = results.nextSolution();
System.out.print(soln.get("?o") + "\n");
}
}
finally {
qexec.close();
}
}
public static QueryExecution getResult(String queryString){
Query query = QueryFactory.create(queryString);
//VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (sparql, graph);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
return qexec;
}
}
ただし、括弧が含まれていると機能しません。例えば、
String entity = "William_H._Miller_(writer)";
は、この例外につながる:
Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "(" "("" at line 1, column 86.`
問題は何ですか?
86行目の内容を教えてください。また、私は構文エラーのように見えます。 – Framester
丸括弧(またはローカルの方言の括弧)は、例えば 'concat( '['、?x、 ']')'などのSPARQLの関数引数を囲むために使用されます。エラー。 「<' and '>」で囲まれた完全な形式のURIを使用する必要があります。 –