2016-12-10 8 views
0

Имея Супер класс Человек который имеет два подкласса Student и Специалисты. Студенческий подкласс содержит 3 человека (свойство name): student1, student2, student3. Подкласс класса включает 2 человека (название собственности): staff1 и staff2.Protege: (SPARQL) Запрос Супер класс для лиц Суб классов

Можно ли задать вопрос Лицо класс и получить все особ и за его пределами?

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

Выход аналогичен:

Person

-----------

student1

student2

student3

персонала1

staff2

ответ

1

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

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

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

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

+0

Большое вам спасибо. Это давало мне головную боль. Пожалуйста, вы можете объяснить a/rdfs: subClassOf *. –

+0

Я полагаю, что сделал, но если после прочтения путей свойств в спецификациях SPARQL, это все еще неясно, вы можете опубликовать отдельный вопрос по этому вопросу, поскольку он не имеет никакого конкретного отношения к этому. –