sparql использует live.dbpedia и получает XML-схему в результате

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

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

Я проверил URL-адрес, который возвращается, когда я запускаю запрос с помощью онлайн-редактора, и заметил действующий префикс, поэтому я добавил его в качестве строки подключения, и это работает. То есть моя строка подключения выглядит так "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 ответ

Решение

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

"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 для получения более подробной информации.

Другие вопросы по тегам