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.

связанные с

Другие вопросы по тегам