У меня есть класс Person. Существует свойство типа данных Profession, значением которого для Person является {"Composer","Singer","Conductor"}. У меня есть другой класс, который называется Piece, и свойство объекта composedBy. Я хочу, чтобы в диапазон composedBy входили все Люди, чья профессия – "Композитор"? Как я могу сделать это в OWL, и как я могу выразить эту OWL с помощью Protégé?
Как использовать все xs со значением v для свойства p в качестве диапазона свойств объекта?
Ответы (2)
Ваше первое описание несложно выразить в виде аксиомы глубокого обучения (хотя я буду использовать имя hasProfession, чтобы оно лучше соответствовало другому имени свойства, composedBy). .
Существует свойство типа данных «Профессия», значением которого для «Человека» являются {«Композитор», «Певец», «Дирижер»}.
Только профессия {"Композитор", "Певец", "Дирижер"}
Второй тоже не сложный:
У меня есть еще один класс, который называется Piece, и свойство объекта, состоящее из компонентов. Я хочу, чтобы диапазон составныхBy был всеми людьми, чья профессия "Композитор"?
Теперь вам нужно быть более ясным здесь. Вы можете иметь в виду, что диапазон для composedBy — это "все лица, чья профессия "Композитор"", т. е. все, являющееся значением оператор composedBy — это Peron, чья профессия — «Композитор». Однако вы упомянули другой класс, Piece, поэтому я думаю, что вы спрашиваете, как сказать, что если Piece composedBy что-то, то это что-то является Person, чье профессия "Композитор". Вот такая аксиома:
Произведение составлено By.(Человек имеет значение профессии "Композитор")
Если вы хотите скопировать и вставить онтологию, вот она:
<rdf:RDF
xmlns="http://stackoverflow.com/q/20920232/1281433/composers#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://stackoverflow.com/q/20920232/1281433/composers"/>
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Piece">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#composedBy"/>
</owl:onProperty>
<owl:allValuesFrom>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Person"/>
<owl:Restriction>
<owl:onProperty>
<owl:DatatypeProperty rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#hasProfession"/>
</owl:onProperty>
<owl:hasValue>Composer</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:about="http://stackoverflow.com/q/20920232/1281433/composers#Person">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://stackoverflow.com/q/20920232/1281433/composers#hasProfession"/>
<owl:allValuesFrom>
<rdfs:Datatype>
<owl:oneOf>
<rdf:List>
<rdf:first>Composer</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first>Conductor</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first>Singer</rdf:first>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</owl:oneOf>
</rdfs:Datatype>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
Определите диапазон для composedBy
равным Person and some Profession {Composer}
Диапазон говорит о том, что значением ComposedBy будет Person, и у него будет свойство Profession с возможными значениями только Composer — это ограничение HasValue.