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