Все еще в том же проекте, у меня возникает проблема, когда я пытаюсь запустить текстовый поиск с Jena и используя SPARQL. В описании ошибки говорится:
Exception in thread "main" org.apache.jena.query.QueryParseException: Encountered " "." ". "" at line 2, column 53.
Я думаю, что проблема связана с запросом. Код запроса показан ниже:
public static void queryData(Dataset dataset){
String prefix = "PREFIX email: <" + App.URI_PREFIX+">" +
"PREFIX text: <http://jena.apache.org/text#>";
long startTime = System.nanoTime();
System.out.println("Email's content contains 'good'");
String query = "SELECT * WHERE " +
"{ ?s text:query (email:content 'good'." +
" ?s email:content ?text . " +
" }" ;
dataset.begin(ReadWrite.READ);
try {
Query q = QueryFactory.create(prefix+"\n"+query);
QueryExecution qexec = QueryExecutionFactory.create(q, dataset);
QueryExecUtils.executeQuery(q, qexec);
}finally { dataset.end();}
long finishTime = System.nanoTime();
double time = (finishTime-startTime)/1.0e6;
System.out.println ("Query "+String.format("FINISH - %.2fms", time));
startTime = System.nanoTime();
System.out.println("Email's content contains 'bad'");
query = "SELECT * WHERE" +
"{ (?s ?score ?lit) text:query (email:content 'bad' \"highlight:s:<em class='hiLite'> | e:</em>\") ." +
" ?s email:content ?text . " +
" }" ;
dataset.begin(ReadWrite.READ);
try {
Query q = QueryFactory.create(prefix+"\n"+query);
QueryExecution qexec = QueryExecutionFactory.create(q, dataset);
QueryExecUtils.executeQuery(q, qexec);
} finally { dataset.end() ; }
finishTime = System.nanoTime();
time = (finishTime-startTime)/1.0e6;
System.out.println("Query "+String.format("FINISH - %.2fms", time));
}`
Требуется ли изменение кода запроса, особенно в SPARQL? пожалуйста, посоветуй мне. спасибо