2016-06-16 3 views
3

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 : Property의 인스턴스입니다." 그러므로, 그것은 나에게 혼란 스럽다. 지금은 질문에 다음과 같은 한 : 객체 지향 언어처럼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 . 
. 미리 감사드립니다.

답변

1

나는 시도하고 귀하의 질문에

RDF/OWL에서 상속의 의미는 무엇입니까의 일부를 답변 해 드리겠습니다?
올빼미의 상속 기능은 객체 지향 언어와 약간 다르게 작동합니다. 우리는 집합 이론의 관점에서 생각할 수 있습니다. 올빼미 클래스는 기본적으로 개인 집합을 나타냅니다. 그런 다음 속성을 사용하여 개인에 대한 사실을 지정합니다. 따라서 올빼미 클래스에서 속성을 "정의"하면 기본적으로 해당 클래스의 개인이 해당 속성을가집니다 (속성이 정의 된 방식에 따라 모두 또는 일부).

"하위 클래스는 다른 클래스의 하위 집합이므로 하위 클래스의 모든 구성원이 (수퍼 클래스)"의 구성원이라는 의미를가집니다. 따라서 추론을 통한 의미는

입니다. 따라서 if 당신은 클래스가 다른 클래스의 서브 클래스라고 말하면 기본적으로 수퍼 클래스 (수퍼 세트)의 개인에 대한 모든 속성은 서브 클래스 (서브 세트)의 개인에있을 수 있습니다.

자신의 예제에서 다음과 같이 질문합니다.
"강사"와 "학생"의 모든 속성을 "사람"클래스에서 사용할 수 있습니까?
Lecutrer와 Student를 클래스 (집합) Person의 하위 클래스 (하위 세트)로 정의했기 때문에 그렇다. 기본적으로 모든 학생이나 강사는 개인이지만 그 반대는 아닙니다. 따라서 Person에 정의 된 속성은 강사와 학생이 사용할 수 있습니다.

은 가능한 OWL/RDF와 객체 지향 언어 유형 클래스의 서브 클래스 상속을 구축하는 것입니다
음 그래,하지만 조금 어렵습니다. 이것은 열린 세상 가정 때문에 조금 더 어둡게 만들어졌습니다.

이렇게하면 혼란스러워집니다. 나는 이러한 주장이 실제로 어떻게 행동하는지보기 위해 온톨로지와 추론자와 함께 놀 것을 권한다. 흥미로운 행동이 많습니다 (DL에 부분적으로 뿌리를두고 있지만 주로 공개 된 가정에 기인합니다). Protege는이를위한 탁월한 도구입니다.

+0

RDFS/OWL에 상속의 형태가있을 때 문제가 혼란 스럽다고 생각합니다. 집합 이론/술어 논리 의미론에 대한 암시에 의해 작동합니다. 이 중 일부는 OO 시스템의 상속과 유사하게 해석 될 수 있지만 시간이 지남에 따라 많은 설정에서 상속이 RDFS/OWL에 존재하지 않으며 세트, 하위 세트 및 표준 추론을 설명하는 것이 더 바람직하다는 것을 알았습니다 프로필 (의미)이 효과적입니다. – scotthenninger

+0

답변 해 주셔서 감사합니다. 당신은 "클래스가 다른 클래스의 서브 클래스라고하면 기본적으로 수퍼 클래스 (수퍼 세트)의 개인에 대한 모든 속성이 서브 클래스 (서브 세트)의 개인에있을 수 있음을 의미합니다." 그러나 조슈아 테일러 (Joshua Taylor)는 "재산 상속의 개념이 없다"고 말했다. 모순이 아닌가? "Person"이라는 클래스가 있고 "age"와 "address"의 두 속성이 있으며 "Lecturer"가 "Person"의 subClassOf라고 가정 해 보겠습니다. 그런 다음 "나이"및 "주소"속성이 OO 언어와 같은 "강사"에게 제공됩니까? –

+0

아니요, 진술은 모순되지 않습니다. ': age'와': address' 속성을 가진': Person'의 클래스 정의는': Person'의 인스턴스에는 아무런 효과가 없으며': Lecturer'에게는 사용할 수 없습니다. ': age'와': address'는': Person' 클래스 정의에서만 사용할 수 있습니다. 이것이 RDFS와 OO 프로그래밍 언어 간의 근본적인 차이점입니다. – scotthenninger

2

객체 지향 언어와 마찬가지로 rdfs : subclassOf는 수퍼 클래스의 속성을 상속합니까?

는 클래스 D 당신은 트리플

XPY

이있을 때 당신은 트리플

X RDF 추론 할 수 있음을 의미 p 속성의 도메인이 있다고합니다 : D 타입을

속성 상속의 개념은 없습니다. 당신은 E는 D의 하위 클래스임을 알고, 당신은

EPY
전자 RDF 트리플을 볼 경우 : 타입 E
E의 RDFS : subClassOf D를

당신이 지금 알고있는 두 가지 방법이 그 전자 RDF : D을 입력하십시오. 첫 번째 이유는 입니다.을 의미하므로 D을 입력하십시오. 두 번째는 e가 E이고 E가 D의 하위 클래스이고 e가 D라는 것을 알기 때문입니다.

RDF/OWL에서 상속의 의미는 무엇입니까?

RDF 및 OWL의 클래스는 집합입니다. E가 D의 서브 클래스라는 것을 알게되면 E의 모든 원소가 D의 원소라는 것을 의미합니다. 즉, E의 개인 집합은 D 개인의 집합의 부분 집합이다.

마찬가지로 속성. q가 p의 하위 속성이라면, x q yx p y을 의미합니다.

OWL/RDF를 사용하여 객체 지향 언어 유형 클래스 - 서브 클래스 상속을 구성 할 수 있습니까?

여기에 무슨 뜻인지 분명하지 않습니다. OO-langueg 유형 클래스 - 서브 클래스 상속이 의미하는 바를 정확하게 지정해야합니다. 당신은 많은 똑같은 행동을 취합니다. 예를 들어 D의 모든 인스턴스에 특정이 있음을 알고 있다면 E 의 모든 인스턴스가이고 인스턴스가 D라는 사실로 인해 모든 E 인스턴스도 마찬가지라는 것을 알 수 있습니다.당신이

D SubClassOf (hasColor 일부 색상)이있는 경우

는 당신은

E SubClassOf (hasColor 일부 컬러)

그래서 그런 의미에서 상속이 있다고 추론 할 수있다.

다음 예제를 고려하십시오. "강사"와 "학생"의 모든 속성은 "사람"클래스에서 사용할 수 있습니까?

"사용 가능"으로 오해 할 수 있습니다. 한 클래스 (즉, 한 클래스의 개인)가 사용할 수 있거나 사용할 수없는 속성은 없습니다.

강사의 rdfs : subClassOf 사람
teachesCourse의 RDFS : 도메인 강사 teachesCourse의 RDFS : 당신은 같은 계층 구조가있는 경우 범위의 코스를

의미

당신이 볼 트리플

존스 teachesCourse 미적분

당신은 그 것을 추측 할 수 있습니다

존스 rdf : type 강사
존스 RDF : 유형의 사람
미적분 RDF : 형 코스

속성 teachesCourse는 의미에서, 모든 사람에게 "가능"하지만, 즉시 사용하면서, 그 사람은 강사가 될해야한다는 것을 의미합니다. 그건 당신이 객체 지향 프로그래밍 언어에서 가지고있는 것과 아주 비슷합니다. 그렇지 않습니까? 예를 들어, 당신은 자바에있는 경우 :

class Person { } 

class Lecturer { 
    Course[] getCourses() { /* ... */ } 
} 

다음() 방법 A getCourses이 의 경우 사람있을 수 있습니다. 사람의 인스턴스는 인스턴스 여야합니다. 강사도 마찬가지입니다.