Получение класса индивидуума с помощью SPARQL

Я хочу получить класс, к которому принадлежит человек. Более подробно, я хочу передать параметр методу, который является физическим лицом, использующим python (использующим rdflib), метод должен возвращать класс физического лица, которому он принадлежит.

Например: у меня есть класс AlcoholicBeverage, у него есть подкласс Beer, а у класса Beer есть подкласс Brands. В классе Brands есть много лиц, представляющих пивные бренды. Я хочу передать параметр методу, запустить запрос SPARQL, чтобы найти, xyz является отдельным классом Brands.

В идеале я также хочу получить: xyz — это Beer (потому что класс Brands — это подкласс Beer), а Beer — это AlcoholicBeverage.

Спасибо за вашу помощь.


person alan turing    schedule 12.11.2012    source источник


Ответы (1)


Как насчет:

SELECT ?class WHERE { xyz a ?class . }

Обратите внимание, что a — это сокращение от rdf:type. См. спецификацию SPARQL, раздел 4.2. .4

Вы получите суперклассы (AlcoholicBeverage, Beer) из этого запроса только в том случае, если они либо были явно добавлены в вашу модель RDF, либо если у вас есть вывод включен (и схема загружаются в модель), поэтому они добавляются неявно.

Ваша схема немного странная - Пиво явно является подклассом Алкогольных Напитков, но что такое Бренды? Почему бы не сделать каждую марку подклассом пива (подразумевая, что отдельные лица являются реальными физическими напитками: «Этот напиток является Old Peculier, что является типом пива"), или сделать каждую марку отдельным пивом: "Old Peculier – это пиво". Бренды кажутся своего рода неформальными заполнителями, которые не имеют смысла в формальной схеме? Почему бренды во множественном числе, когда другие ваши имена классов в единственном числе?

person DNA    schedule 12.11.2012
comment
Спасибо за ваш ответ и предложение. Я считаю, что моя проблема в том, что я не могу правильно ссылаться на xyz. Без раздела фильтра следующий запрос работает нормально, но с частью FILTER он ничего не возвращает. Как я могу сослаться на класс или человека в файле .owl? ПРЕФИКС сова: [ссылка] (goo.gl/ZwwgT) SELECT ?class WHERE { ?sub rdfs:subClassOf ? учебный класс . ФИЛЬТР(?sub=owl:Бренды)} - person alan turing; 13.11.2012