Есть ли какой-нибудь способ заявить в RDF / RDF, что любой ресурс, имеющий данное свойство, является подклассом определенного класса? (или другой случай с объектом, а не с субъектом)
rdfs: домен (соответственно диапазон) близок к этому, но определение домена включает «экземпляр», а не «подкласс»:
rdfs: domain является экземпляром rdf: Property, который используется для указания того, что любой ресурс с данным свойством является экземпляром одного или нескольких классов. RDF Schema 1.1
В качестве примера сценария, где это необходимо (как диапазон, а не домен), представьте, что вы хотите выразить, что :John :likes :Vegetable
, где :Vegetable
- этоподкласс пищи.
:likes rdfs:range owl:Class
будет охватывать пример, но он будет слишком общим.
:likes rdfs:range :Food
будет неверным, поскольку :Vegetable
не является экземпляром :Food
но подкласс.
Что-то вроде :likes rdfs:range Powerset(:Food)
было бы лучше, но я не знаю, как указать это с использованием RDF и RDF.
В Java это будет:
public abstract class Person
{
public static class Food {}
abstract Class<? extends Food> likes();
}
Можно смоделировать это с использованием аксиом OWL с универсальным количественным определением, но мне интересно, возможно ли это без OWL, потому что у меня есть большое количество статистических данных, которые я хочу загрузить в конечную точку SPARQL, а выражение аксиом OWL в RDF увеличивает количествобольшого количества троек и усложняет практическое использование, например, запросов SPARQL.