SPARQL — получить утвержденный класс, когда включено рассуждение

Когда рассуждение активировано в тройном магазине, следующий запрос

SELECT ?classiri
WHERE {
    ex:myElement rdf:type ?classiri
}

в результате получится:

owl:Thing
ex:Animal
ex:Human
ex:MaleHuman

Есть ли способ получить в результате только явно утвержденную аксиому? (в данном случае очевидно ex:MaleHuman)

Обратите внимание, что рассуждение не может быть отключено, среди прочего, потому что приведенное выше является частью более сложного запроса, требующего рассуждения.


person user1156544    schedule 13.04.2016    source источник


Ответы (1)


Вы не можете быть уверены, что это действительно подтвержденный результат, а не предполагаемый, но вы можете получить наиболее конкретный экземпляр с помощью запроса, например:

select ?class {
  :instance a ?class
  filter not exists {
    ?subclass rdfs:subClassOf ?class .
    filter (?subclass != ?class)
  }
}

Это говорит о том, что нужно получить значения ?class таким образом, чтобы не было значений ?subclass (кроме самого ?class), которые являются подклассами < strong>?class, к которому также принадлежит :instance.

Связанный

person Joshua Taylor    schedule 13.04.2016
comment
Я думаю, что вам не хватает :instance ?подкласса внутри ФИЛЬТРА, возможно ли это? Проблема этого решения в том, что по какой-то причине оно очень плохо работает с точки зрения времени. Не приемлемо в моей ситуации - person user1156544; 14.04.2016
comment
@user1156544 user1156544 Да, пропустил экземпляр подкласса. Я немного удивлен, что это работает плохо: вы уже можете получить классы для широкого экземпляра, так что это не должно быть слишком много. Возможно, поиск других возможных классов обходится дороже. Плохая производительность была с исправленной версией, которая имеет экземпляр подкласса в подзапросе, верно? - person Joshua Taylor; 14.04.2016
comment
@user1156544 user1156544, поскольку вы сказали, что это не работает для вас, я снова открыл вопрос, поскольку кажется, что эти другие ответы вам не подойдут. Возможно, вы захотите обновить вопрос, указав некоторые проблемы с производительностью, с которыми вы сталкиваетесь при использовании этого подхода, иначе другие ночью рекомендуют то же решение. - person Joshua Taylor; 14.04.2016
comment
Спасибо. Я проведу еще несколько тестов, получу более конкретные результаты и отредактирую вопрос. Да, это было с исправленной версией, иначе я не получаю никаких результатов. - person user1156544; 14.04.2016