Java “线程中的异常”;“主要”;org.apache.jena.query.QueryParseException

Java “线程中的异常”;“主要”;org.apache.jena.query.QueryParseException,java,lucene,sparql,jena,Java,Lucene,Sparql,Jena,还是在同一个项目中,当我尝试使用Jena和SPARQL运行文本搜索时遇到了一个问题。错误描述显示: Exception in thread "main" org.apache.jena.query.QueryParseException: Encountered " "." ". "" at line 2, column 53. 我认为问题来自于质疑。查询代码如下所示: public static void queryData(Dataset dataset){ String pref

还是在同一个项目中,当我尝试使用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));
}`
publicstaticvoidquerydata(数据集){
String prefix=“前缀电子邮件:”+
“前缀文本:”;
long startTime=System.nanoTime();
System.out.println(“电子邮件的内容包含‘good’”);
String query=“选择*WHERE”+
“{s text:query(电子邮件:内容'good'。”+
“?的电子邮件:内容?文本。”+
" }" ;
dataset.begin(ReadWrite.READ);
试一试{
Query q=QueryFactory.create(前缀+“\n”+Query);
QueryExecution qexec=QueryExecutionFactory.create(q,数据集);
执行(q,qexec);
}最后{dataset.end();}
long finishTime=System.nanoTime();
双倍时间=(完成时间开始时间)/1.0e6;
System.out.println(“Query”+String.format(“FINISH-%.2fms”,time));
startTime=System.nanoTime();
System.out.println(“电子邮件的内容包含‘坏’”);
query=“选择*WHERE”+
“{(?s?score?lit)文本:查询(电子邮件:内容‘坏’\“突出显示:s:| e:\”)+
“?的电子邮件:内容?文本。”+
" }" ;
dataset.begin(ReadWrite.READ);
试一试{
Query q=QueryFactory.create(前缀+“\n”+Query);
QueryExecution qexec=QueryExecutionFactory.create(q,数据集);
执行(q,qexec);
}最后{dataset.end();}
finishTime=System.nanoTime();
时间=(完成时间开始时间)/1.0e6;
System.out.println(“Query”+String.format(“FINISH-%.2fms”,time));
}`

特别是在SPARQL中,是否需要更改查询代码?请建议我。谢谢

我的意思是,为什么不打印查询?错误很明显…在第一次查询中,在点
之前有一个结束括号
-始终计算打开括号与关闭括号的数量。。。比提出问题还快here@AKSW我现在明白了。对不起,如果我不够小心的话。我把问题放在这里是因为我需要另一个人来寻找我的错。非常感谢你!