Онтологии. Получают ли суперклассы экземпляры своих подклассов?
Мой вопрос о наследовании суперкласса. Мое понимание говорит, что если у меня есть экземпляры, которые принадлежат к классу B, то класс A, который является родительским классом класса B, также будет иметь эти экземпляры. Например: предположим, у меня есть суперкласс Car и два класса подклассов Sedan и SUV. Экземпляры классов Sedan и SUV также являются экземплярами класса Car, это правильно? Если это так, то я не вижу никакой отдачи от моего запроса sparql, когда говорю "дай мне все экземпляры класса Car". Я что-то здесь упускаю?
Я использую редактор Topbraid.
2 ответа
На самом деле это определение суперкласса / подкласса - что все экземпляры подкласса являются экземплярами суперкласса.
Не знаю, почему не работает запрос sparql. Я думаю, это сработает, только если двигатель работает.
Если вы хотите использовать подклассы для вашего запроса SPARQL без необходимости запуска механизма вывода, вы можете использовать стандартные пути свойств SPARQL, в частности транзитивный оператор:
SELECT *
WHERE {
?cls rdfs:subClassOf* :ClassA .
?inst a ?cls .
}
Первый тройной шаблон возвращает все подклассы:ClassA в корень. Второй тройной шаблон получает экземпляры всех этих классов, фактически получая ту же самую операцию подчинения, которую выполняет рассуждатель.