-1

该代码用于从 java 程序中查询 dbpedia,然后在 html 页面中显示结果

package jenaamem;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP;

public class db2
{
static public void main(String...argv)
{
    try {
        String queryStr = "SELECT * WHERE{ ?s ?p ?o . ?o bif:contains' barack and obama and america' OPTION (score ?sc) } ORDER BY DESC (?sc) LIMIT 10 ";
        Query query = QueryFactory.create(queryStr);

        // Remote execution.
        QueryExecution qexec =   QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
        // Set the DBpedia specific timeout.
        ((QueryEngineHTTP)qexec).addParam("timeout", "10000") ;

        // Execute.
        ResultSet rs = qexec.execSelect();
        ResultSetFormatter.out(System.out, rs, query);
        qexec.close();
    } catch (Exception e) {
    }


}

}

这里我在这段代码中面临的问题是 bif:contains 显示错误,我什至尝试过,然后我的问题仍然存在。

4

1 回答 1

3

bif:contains是一个带前缀的名称,但您尚未为其定义前缀,因此 ARQ 解析器会抛出应有的错误

不幸bif:contains的是,这是一个 Virtuoso 特定的扩展,实际上没有任何关联的前缀,因此您无法定义它。但是,您可以将其包含在<其中,>以便 ARQ 将其视为 URI,而 Virtuoso 仍会理解它,即<bif:contains>在您的查询中使用它。

于 2013-04-08T16:17:10.500 回答