Как выполнить запрос Sparql в Android с помощью Android 0,5 - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь выполнить простой запрос Sparql с моего устройства Android.Я использую конечную точку в режиме онлайн: https://dbpedia.org/sparql с URI http://dbpedia.org и запросом:

"выбрать отдельный? Концепция, где {[] a? Концепция} LIMIT 100".

Я успешно импортировал в свой проект Android библиотеки androjena 0.5 и arqoid 0.5.Изучая код из этого полезного руководства, я изменил несколько строк и получил следующий код:

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 голосов
/ 21 ноября 2018

Это -

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

- должно быть это -

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