sparql использует live.dbpedia и получает XML-схему в результате - PullRequest
0 голосов
/ 23 февраля 2019

Я катаюсь с sparql и java-приложением, я нашел несколько основ соединения, чтобы начать работу, но боюсь, что я совершаю ошибку, которая позже превратится в нечто худшее.

Каждое предложение о подключении, независимо от используемой библиотеки, говорит о подключении к "http://dbpedia.org/sparql/", но это не работает для меня.

Я проверил URL-адрес, который возвращается при запуске запроса с помощью онлайн-редактора, и заметилпрефикс live, поэтому я добавил это как строку подключения, и она работает.То есть моя строка подключения выглядит как "http://live.dbpedia.org/sparql"

И она действительно возвращает результат, однако, к результату присоединена схема XML, что заставляет меня задуматься, действительно ли это из-за этого live.Я добавил.

Ниже приведен простой код подключения, который я использую, это правильно?Любая и вся помощь очень благодарна.

Если 'live' правильно, возможно ли добавить только значение без Схемы?

StringBuilder sb = new StringBuilder();
    sb.append("PREFIX dbr: <http://dbpedia.org/resource/> \n");
    sb.append("PREFIX dbp: <http://dbpedia.org/property/> \n");
    sb.append("PREFIX dbo: <http://dbpedia.org/ontology/> \n");
    sb.append("SELECT ?dob \n");
    sb.append("WHERE {dbr:Tony_Blair dbp:birthDate ?dob} \n");

    Query query = QueryFactory.create(sb.toString());
    QueryExecution qexec = QueryExecutionFactory.sparqlService("http://live.dbpedia.org/sparql", query);

    try {
        ResultSet results = qexec.execSelect();
        for ( ; results.hasNext() ; )
        {
            QuerySolution soln = results.nextSolution() ;
            System.out.println(soln.get("?dob"));
        }

результат будет:

1953-05-06^^http://www.w3.org/2001/XMLSchema#date

1 Ответ

0 голосов
/ 24 февраля 2019

Что ж, в результате, как вы показываете, отсутствуют некоторые скобки и кавычки, но я предполагаю, что это вызвано тем, как вы его скопировали.Чаще всего это будет выглядеть так:

"1953-05-06"^^<http://www.w3.org/2001/XMLSchema#date>

Но по сути ваш запрос и код верны.«Присоединенная XML-схема» здесь представляет собой тип данных возвращенной литеральной строки.

Литерал RDF состоит из лексического значения (в вашем случае "1953-05-06") и типа данных (в вашем случае http://www.w3.org/2001/XMLSchema#date).Также он может иметь языковой тег например "colour"@en-UK.

Если вы хотите удалить тип данных из результата и получить только лексическое значение, вы можете использовать STR()действует как часть предложения SELECT в вашем запросе:

SELECT (STR(?dob) as ?date_of_birth)

Что касается строки соединения, с которой вы боретесь: есть две отдельные конечные точки DBPedia.«Обычный» - http://dbpedia.org/sparql (без косой черты) - это запрашивает статический набор данных, который синхронизируется / обновляется с изменениями Википедии каждые 6 месяцев или около того.«Живая» конечная точка, http://live.dbpedia.org/sparql, является попыткой подготовить более современный набор данных для запросов.Смотрите https://wiki.dbpedia.org/online-access/DBpediaLive для более подробной информации.

...