У меня есть путаница в отношении наследования класса OWL и подкласса. Некоторые сообщения говорят, что в OWL нет наследования (OWL: How to get inheritance of property relations between two classes from those of superclasses?, http://answers.semanticweb.com/questions/619/rdfs-owl-inheritance-with-josekipellet). Тем не менее, я нашел и противоположное обсуждение. Например, в статье «Основы семантического веб-праймера для объектно-ориентированных разработчиков программного обеспечения» (https://www.w3.org/TR/sw-oosd-primer/) упоминалось, что для объектно-ориентированного языка OWL & RDF: «Классы могут быть организованы в иерархию подкласса с наследованием» (раздел 3.3). https://www.w3.org/TR/rdf-schema/#ch_subclassof отметил, что «Свойство rdfs: subClassOf - это экземпляр rdf: Свойство, которое используется для указания, что все экземпляры одного класса являются экземплярами другого». Следовательно, это сбивает меня с толку. Теперь я на следующие вопросы:Наследование свойств класса и подкласса OWL
- Как объектно-ориентированный язык, является RDFS: subclassOf наследует свойство от суперкласса?
Если нет, то
- Какой смысл наследования в RDF/OWL?
- Возможно ли построить объектно-ориентированное языковое наследование класса-подкласса с помощью OWL/RDF?
Рассмотрите следующий пример. Все ли свойства «Лектор» и «Студент» будут доступны для класса «Личность»?
Example: -------- ### Classes ### :CSModule rdf:type owl:Class ; rdfs:subClassOf :Module . :Lecturer rdf:type owl:Class ; rdfs:subClassOf :Person . :Student rdf:type owl:Class ; rdfs:subClassOf :Person . :Module rdf:type owl:Class . :Person rdf:type owl:Class . ### Object Properties ### :studies rdf:type owl:ObjectProperty ; rdfs:domain :Student ; rdfs:range :Module . :teaches rdf:type owl:ObjectProperty ; rdfs:domain :Lecturer ; rdfs:range :Module . ### Data properties ### :name rdf:type owl:DatatypeProperty ; rdfs:domain :Person ; rdfs:range xsd:string . :staffID rdf:type owl:DatatypeProperty ; rdfs:domain :Lecturer ; rdfs:range xsd:integer . :studentID rdf:type owl:DatatypeProperty ; rdfs:domain :Student ; rdfs:range xsd:integer . ### Individuals ### :CS101 rdf:type owl:NamedIndividual , :CSModule . :Lecturer1 rdf:type owl:NamedIndividual , :Lecturer ; :teaches :CS101 ; :name "Dr.John" ; :staffID 7777 . :Student1 rdf:type owl:NamedIndividual , :Student ; :studies :CS101 ; :name "James" ; :studentID 1234 .
Если кто-то предоставить мне ответ с хорошим примером, который будет очень полезным. Заранее спасибо.
Я думаю, что проблема путается, когда говорится, что RDFS/OWL имеет любую форму наследования. Это работает по смыслу семантики логики теории множеств/предикатов. Некоторые из них могут быть интерпретированы как похожие на наследование в OO-системах, но со временем во многих настройках я нашел, что лучше понять, что наследование отсутствует в RDFS/OWL и объясняет, как наборы, подмножества и стандартные рассуждения профили (последствия). – scotthenninger
Спасибо за ваш ответ. Вы упомянули, что «Таким образом, если вы говорите, что класс является подклассом другого, это в основном означает, что любые свойства особей суперкласса (супер-набора) могут быть у индивидуумов подкласса (подмножества)». Тем не менее, @ Джошуа Тейлор: сказал, что «нет понятия о наследовании собственности». Разве это не противоречит? Если у меня есть класс под названием «Человек», и он имеет два свойства «возраст» и «адрес», и пусть «лектор» - это subClassOf «Person». Тогда свойства «возраст» и «адрес» будут доступны «лектору», как языки OO? –
Нет, утверждения не противоречат друг другу. Определение класса ': Person' со свойствами': age' и ': address' не будет иметь никакого эффекта в экземплярах': Person' и не будет доступно для ': Lecturer'. ': age' и': address' будут доступны только для определения класса ': Person'. Это существенное различие между RDFS и языками программирования OO. – scotthenninger