Как получить пространство имен свойства в dbpedia, указав имя свойства с помощью jena? - PullRequest
2 голосов
/ 17 апреля 2011

Я пытаюсь получить значение свойства жанра в следующей ссылке dbpedia, используя sparql в jena http://dbpedia.org/page/Black_Sabbath

Но я понятия не имею, как получить пространство имен свойства из dbpedia ( dbpedia-owl .genre в моем примере). Я не хочу жестко его кодировать. Может ли кто-нибудь помочь мне, пожалуйста ...

Большое спасибо

1 Ответ

5 голосов
/ 18 апреля 2011

Ваш первоначальный вопрос заставляет меня думать, что вам нужно что-то вроде Jena schemagen , которое будет автоматически генерировать коллекцию Java-констант из идентификатора URI, используемого в онтологии. Однако схема DbPedia OWL довольно велика, и я думаю, что схема может не дать полезного результата (я не пробовал). Если это так, вы всегда можете выбрать подмножество ресурсов и свойств, которые вас интересуют, и запустить schemagen для этого подмножества.

Однако ваш пояснительный комментарий, в котором вы говорите об использовании других свойств, таких как широта и т. Д., Заставляет меня думать, что вы задаете другой вопрос, а именно: как избежать того, чтобы конкретные свойства были жестко запрограммированы в запросах SPARQL. Является ли это проблемой для вас, полностью зависит от проблемы, которую вы пытаетесь решить, и архитектуры вашего кода. Для программы вполне возможно поддерживать множество строк запросов SPARQL и просто выбрать ту, которая ей нужна для конкретной работы. Это обычный шаблон использования.

Однако существуют законные случаи использования, когда вы хотите взять общую строку запроса - например, select * where {?s ?p "foo"} - и убедиться, что одна из переменных заранее привязана к определенному значению. Хотя это можно сделать с помощью манипуляции со строками, есть более элегантный способ. Например, чтобы взять вышеуказанный запрос и предварительно связать ?p со свойством dc:creator, вы можете сделать:

String q = "select * where {?s ?p \"foo\"}";
QuerySolutionMap qsm = new QuerySolutionMap();
qsm.bind( "p", DC.creator );
Query query = QueryFactory.create( q );
QueryExecution exec = QueryExecutionFactory.create( query, model, qsm );
ResultSet rs = exec.execSelect();

См. Также эту запись в блоге для получения дополнительной информации или JavaDoc .

...