Возможно, вы работаете в RDF (S), а не в OWL, но если у вас есть возможность использовать инструменты на основе OWL и ради тех, кто находит этот вопрос и может использовать инструменты на основе OWL, вот ответ на OWL.
Если вы хотите, чтобы каждый экземпляр класса (включая экземпляры его подклассов) имел некоторое значение свойства, вы можете использовать Individual Value Restriction. В синтаксисе Манчестера, вы можете сказать, что случаи SomeClass
все имеют значение sharedIndividual
для Собствености hasValue
аксиома:
SomeClass SubClassOf hasValue value sharedIndividual
Тогда каждый экземпляр SomeClass
имеет тип hasValue value sharedIndividual
, что означает, что экземпляр имеет sharedIndividual
, как значение для объекта hasValue
.
Вот сериализация N3 онтологии с классом SomeClass
и двумя подклассами SomeSubClass
и AnotherSubClass
. Каждый из трех классов имеет объявленного человека. Тип hasValue value sharedIndividual
является суперклассом SomeClass
.
@prefix : <http://www.example.com/valueClassExample#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.example.com/valueClassExample>
a owl:Ontology .
:hasValue
a owl:ObjectProperty .
:sharedValue
a owl:Thing , owl:NamedIndividual .
:SomeClass
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:hasValue :sharedValue ;
owl:onProperty :hasValue
] .
:SomeSubClass
a owl:Class ;
rdfs:subClassOf :SomeClass .
:AnotherSubClass
a owl:Class ;
rdfs:subClassOf :SomeClass .
:SomeClassInstance
a :SomeClass , owl:NamedIndividual .
:SomeSubClassInstance
a owl:NamedIndividual , :SomeSubClass .
:AnotherSubClassInstance
a owl:NamedIndividual , :AnotherSubClass .
С помощью этой онтологии, загруженной в Protégé и Pellet прилагается для рассуждений, с просьбой которого люди имеют sharedValue
в качестве значения hasValue
собственности показывает все физическое лицо.
Если OWL на картинке (который он, вероятно, не является, так как используются списки RDF), когда есть способ, чтобы обратиться к списку, хотя, вы можете указать, что 'SomeClass SubClassOf semapi: hasChainTo value ', что означает, что каждый экземпляр' SomeClass' на самом деле 'semapi: hasChainTo ' (и «каждый экземпляр» включает экземпляры подклассов). –
Да, это правда, что вы можете это сделать. Вы бы избавились от необходимости использования OWL-аргументатора против необходимости утверждать одну дополнительную тройку каждый раз, когда создается экземпляр. Поскольку парламент уже отметил, что обновление производительности вызывает беспокойство, я не уверен, что сделаю компромисс в пользу рассудка. Но это решение полностью зависит от полной детализации контекста проекта. –