Звучит довольно просто, но мне пока не удалось найти красивое решение. Я ищу классы в моей онтологии, которые имеют ровно один подкласс.
До сих пор я подходил к этому следующим образом:
SELECT (COUNT(?anything) AS ?count) ?class
WHERE {
GRAPH <> {
?class rdf:type owl:Class.
?class rdfs:subClassOf ?anything.
?anything rdf:type owl:Class.
} group by ?class
Затем теоретически я должен иметь возможность сортировать по количеству, а результаты со значением 1 должны иметь только 1 подкласс. Однако, когда я выполняю этот запрос, счетчики совсем не соответствуют тому, что я ожидаю, например. мой тестовый пример должен вернуть 1, что он и делает, но другой класс, у которого вообще нет подкласса, также возвращает 1. А класс с 3 подклассами возвращает количество 4.
на изображении ниже он должен обнаружить, что количество выделенных классов равно 1.
owl:Nothing
является подклассом любого класса. - person UninformedUser   schedule 01.02.2021