Я ищу четкое решение OWL для определения свойства, которое является ограничением другого свойства, похожего на эквивалентный класс. Ограничение основано на свойствах данных как домена, так и диапазона. Ограниченное свойство, безусловно, является подзадачностью и должно быть выведено.OWL: ограничение собственности на основе значений: возможно ли вообще?
"ребенок", "мать", "отец" являются персоны сек father.gender = "мужчина" свойство данных mother.gender = "женщина"
(а мужчина subclassOf Person = эквивалентный класс «пол значение «мужской»)
отец parentOf ребенка объектные отношения мать parentOf ребенка объектные отношения
Как определить fatherOf собственности, на основе parentOf и пол отца? Ясно, что это подсвойство parentOf.
Однако эквивалентный редактор свойств объекта в Protégé не позволяет задать запрос свойства, даже я действительно не вижу, можно ли это решить с помощью цепочки свойств.
Определение отцаOf как подзадачи и (вручную) настройка fatherOf вместо 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>
спасибо, Антуан, трюк состоял в том, чтобы сделать depo от отца и motherOf от parentOf и ограничивать их диапазон! остальное остается для рассудителя - хотя время не имеет значения в наборе из 60 000 узлов ... – Torx