如何使用Androjena 0.5在Android中执行Sparql查询

时间:2018-11-20 21:15:58

标签: android sparql jena

我正在尝试从我的android设备执行一个简单的Sparql查询。我正在使用的在线端点是https://dbpedia.org/sparql,其中包含URI http://dbpedia.org和查询:

  

“选择不同的?Concept,其中{[]一个?Concept}限制为100”。

我成功将Androjena 0.5和arqoid 0.5的库导入了我的Android项目。从this有用的教程中学习代码,我更改了几行,最后得到了以下代码:

import java.util.List;
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.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.Syntax;

public class SparqlExamples {
    public String queryRemoteSparqlEndpoint() {

        String queryString = "select distinct ?Concept where {[] a ?Concept} LIMIT 100";
        String sparqlEndpointUri = "https://dbpedia.org";
        Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
        query.setLimit(10);
        query.setOffset(1);
        QueryExecution qe = QueryExecutionFactory.sparqlService(sparqlEndpointUri, query);
        ResultSet resultSet = qe.execSelect();
        StringBuffer results = new StringBuffer();
        List<String> columnNames = resultSet.getResultVars();
        while (resultSet.hasNext()) {
            QuerySolution solution = resultSet.next();
            for (String var : columnNames) {
                results.append(var + ": ");
                if (solution.get(var) == null) {
                    results.append("{null}");
                } else if (solution.get(var).isLiteral()) {
                    results.append(solution.getLiteral(var).toString());
                } else {
                    results.append(solution.getResource(var).getURI());
                }
                results.append('\n');
            }
            results.append("-----------------\n");
        }
        qe.close();
        return results.toString();
    }
}

和MainActivity:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String results = new SparqlExamples().queryRemoteSparqlEndpoint();
        Log.d("results","results"+String.valueOf(results));
    }
}

对于能解决此问题的任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

这-

public String replaceAll(String replacement) {
    reset();
    boolean result = find();
    if (result) {
        StringBuffer sb = new StringBuffer();
        do {
            appendReplacement(sb, replacement);
            result = find();
        } while (result);
        appendTail(sb);
        return sb.toString();
    }
    return text.toString();
}

-应该是这个-

    String sparqlEndpointUri = "https://dbpedia.org";