Протеже: (SPARQL) Суперкласс запросов для отдельных подклассов

Наличие суперкласса Person, который имеет два подкласса Student и Staff. Подкласс Student содержит 3 человека (свойство name): student1, student2, student3. Подкласс персонала содержит 2 человека (имя свойства): staff1 и staff2.

можно ли запросить класс Person и получить всех людей, поскольку это суперкласс?

Как еще можно поступить с этим? особенно когда у тебя так много подклассов?

Вывод похож на:

Человек

-----------

студент1

студент2

студент3

персонал1

посох2


person Emenike Onyebuchi    schedule 10.12.2016    source источник


Ответы (1)


Вам нужно запросить все ресурсы, которые являются членами :Person или любого из его подклассов. Если вы используете путь свойства, вам понадобится только один тройной шаблон в вашем запросе:

SELECT ?person
    WHERE { ?person a/rdfs:subClassOf*  :Person}

Этот запрос запрашивает ресурсы, которые являются членами класса :Person, что является случаем, когда звезда равна нулю, или являются членами любого из его подклассов, что имеет место в случае, когда звезда равна одной и более.

При необходимости вы можете дополнительно ограничить тему owl:NamedIndividual.

person Ivo Velitchkov    schedule 10.12.2016
comment
Большое спасибо. У меня болит голова. Пожалуйста, объясните a/rdfs:subClassOf*. - person Emenike Onyebuchi; 10.12.2016
comment
Я думаю, что да, но если после прочтения о путях свойств в спецификациях SPARQL это все еще неясно, вы можете опубликовать отдельный вопрос по этому поводу, поскольку он не имеет конкретного отношения к этому. - person Ivo Velitchkov; 10.12.2016