Я ищу однозначное решение OWL для определения свойства, которое является ограничением другого свойства, аналогичного эквивалентному классу. Ограничение основано на свойствах данных домена или диапазона. Ограниченное свойство определенно является подсвойством и должно быть выведено.
"kid", "mother", "Father" - это свойство данных человека Father.gender = "male" mother.gender = "female"
(Male subclassOf Person = эквивалентный класс "гендерное значение" мужской ")
отец parentOf дочернее объектное отношение мать parentOf дочернее объектное отношение
Как определить свойство FatherOf на основе parentOf и пола отца? Ясно, что это подсвойство parentOf.
Однако эквивалентный редактор свойств объекта в Protégé не позволяет задать запрос свойства, даже я не очень понимаю, можно ли решить эту проблему с помощью цепочки свойств.
Определение FatherOf как подсвойства и (вручную) установка отцаOf вместо parentOf не является вариантом, поскольку этот пример семейства представляет собой чрезмерно упрощенную ситуацию более сложного сценария.
<Declaration>
<Class IRI="#Person"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#fatherOf"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#parentOf"/>
</Declaration>
<Declaration>
<DataProperty IRI="#gender"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#father"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#kid"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#mother"/>
</Declaration>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#father"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#kid"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#mother"/>
</ClassAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#parentOf"/>
<NamedIndividual IRI="#father"/>
<NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#parentOf"/>
<NamedIndividual IRI="#mother"/>
<NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#gender"/>
<NamedIndividual IRI="#father"/>
<Literal datatypeIRI="&rdf;PlainLiteral">male</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#gender"/>
<NamedIndividual IRI="#mother"/>
<Literal datatypeIRI="&rdf;PlainLiteral">female</Literal>
</DataPropertyAssertion>
<SubObjectPropertyOf>
<ObjectProperty IRI="#fatherOf"/>
<ObjectProperty IRI="#parentOf"/>
</SubObjectPropertyOf>
<DataPropertyDomain>
<DataProperty IRI="#gender"/>
<Class IRI="#Person"/>
</DataPropertyDomain>
<DataPropertyRange>
<DataProperty IRI="#gender"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>