SPARQL - получить утвержденный класс при включенном рассуждении
Когда в триплет-хранилище активируется рассуждение, следующий запрос
SELECT ?classiri
WHERE {
ex:myElement rdf:type ?classiri
}
будет производить в результате:
owl:Thing
ex:Animal
ex:Human
ex:MaleHuman
Есть ли способ получить только явно утвержденную аксиому в качестве результата? (в этом случае, очевидно, ex:MaleHuman
)
Обратите внимание, что аргументация не может быть отключена, среди других причин, потому что вышеизложенное является частью более сложного запроса, который требует аргументации.
1 ответ
Вы не можете быть уверены, что это фактический заявленный результат по сравнению с логическим выводом, но вы можете получить наиболее конкретный экземпляр с помощью запроса:
select ?class {
:instance a ?class
filter not exists {
?subclass rdfs:subClassOf ?class .
filter (?subclass != ?class)
}
}
Это говорит о том, что нужно получить значения класса "класса" таким образом, чтобы не было значений " подкласса" (кроме самого класса), которые являются подклассами класса "класс", к которому также принадлежит экземпляр:instance.