Подтвердить что ты не робот

Получить все свойства для класса DBpedia

Как получить список свойств для определенного класса? Рассмотрим класс dbpedia-owl:Person. Все экземпляры класса Person имеют некоторые свойства с префиксом dbpprop:. Как я могу получить все свойства dbpprop:, которые мы можем найти для всего экземпляра класса Person?

4b9b3361

Ответ 1

Тот, который работает:

select distinct ?property where { 
   ?property <http://www.w3.org/2000/01/rdf-schema#domain> 
                             <http://dbpedia.org/ontology/Person> . }

В этом запросе вы запрашиваете все свойства с dbpedia:Person как rdfs:domain. Этот запрос требует определения схемы для работы, а некоторые наборы данных на самом деле не полностью соответствуют схемам. Для этих наборов данных вы можете попробовать другой запрос

select distinct ?property where {
         ?instance a <http://dbpedia.org/ontology/Person> . 
         ?instance ?property ?obj . }

В этом запросе рассматривается каждый экземпляр человека, связывающий каждое свойство, которое выходит из него. Это намного сложнее первого, и в публичном экземпляре dbpedia вы получите тайм-аут. Таким образом, вам лучше с первым, если вы хотите использовать публичную конечную точку.

Ответ 2

Чтобы получить все транзитивные свойства, вы можете задать этот запрос

select distinct ?property where{
{
  ?property rdfs:domain ?class . 
  dbpedia-owl:Person rdfs:subClassOf+ ?class.
} UNION {
  ?property rdfs:domain dbpedia-owl:Person.
}}

"+" в "rdfs: subClassOf" - это выражение пути свойства [1], которое также извлекает все верхние классы Person. Эти свойства также действительны для Person.

Также обратите внимание, что пространство имен dbprop не рекомендуется, поскольку данные являются необработанными и не нормализуются к типу данных.

[1] http://www.w3.org/TR/2010/WD-sparql11-property-paths-20100126/

Раскрытие информации: Я разработчик DBpedia