2014-06-25 3 views
2

나는 triplestore의 일반적인 종류 인 온톨로지에서 일부 도메인 데이터를 모델링하는 시스템을 가지고 있습니다.온톨로지에서 엔터티 순서 지정

나는 복수형을 표현하는 방법을 찾고 있었지만 주문은했지만 Google 검색을 통해 아무 것도 발견하지 못했습니다. 내 주요 사용 사례는 도메인의 한 엔티티가 작업 목록 일 수 있으며 (식료품을 사 먹고 식사를하고 식사를하는 등) 일반적으로 가장자리가있을 수있는 '체중'기능이있는 것처럼 느껴집니다. 전반적으로 유용합니다.

허용되는 방법이 있습니까? 그냥 쿼드 스토어에 가니? 규칙 항목과 도메인 엔터티에 가장자리가있는 중개 항목 (list -> listitem)? 술어에서 가중치까지의 술어?

다음은 예입니다. Example layout

+1

예를 들어 더 많은 응답을 유도 할 수 있습니다. 특히, 나는 복수라는 말을 잘 모릅니다. 올빼미 카디널리티 기능을 이해하고 필요로하는 것을하지 않을 것이라고 추측합니다.하지만 필요한 것을 추측 할 수는 없습니다. –

+0

@EdStaub, 그렇습니다. 카디널리티는 좋지만 저는 일종의 순서를 찾고 있습니다. 예를 들면 다음과 같습니다.'1. 양말을 신고, 2. 신발을 신고, 3. 집을 나간다. 내 술어에서 순서를 인코딩 할 수 있기를 원합니다. (이 상황에서, DoList에서 DoList 로의 엔티티가있는 DoList라는 엔티티가 있고, 최대 카디널리티가 없습니다. –

+0

시퀀스의 인코딩 만 원합니까? 꽤 쉽게 코드를 작성하거나 "hasTask (taskList, 1, socks), hasTask (taskList, 2, shoes)"와 같은 3 차 관계를 만들 수 있습니다 (예 : "hasTask (thing, rank, task) 기타." –

답변

5

그림에 표시된 것과 같은 것을 나타내려면 일반적으로이 관계를 n-ary 관계로 취급하십시오. 당신은 W3C의 작업 노트 Defining N-ary Relations on the Semantic Web을 살펴해야하지만, 짧은 버전이 3 진 관계를 가지고 있다는 것입니다, 그리고 당신이 그 각각에 대한

hasTask(list,1,socks) 
hasTask(list,2,shoes) 
hasTask(list,3,leash) 

을 표현하고, 당신은 할 것

_:rel1 rdf:type :taskItem ; 
     :hasList :list ; 
     :hasord 1; 
     :hasTask :socks . 
_:rel2 rdf:type :taskItem ; 
     :hasList :list ; 
     :hasord 2; 
     :hasTask :shoes . 
_:rel3 rdf:type :taskItem ; 
     :hasList :list ; 
     :hasord 3; 
     :hasTask :leash . 

약간의 변화는 물론, 여기있다 : 자원, 일반적으로 빈 노드는, 그러나 아마 유형, 너무 URI, 그리고 다양한 구성 요소에 관련된 속성을 가지고 있고, 수 있습니다. 오히려 구체화 관계가 속성 값으로 목록, 번호, 작업이 필요없이 목록이 각 작업 항목과 관련이있을 수 :

:list :hasTaskItem [ rdf:type :taskItem ; 
        :hasord 1; 
        :hasTask :socks ] , 
        [ rdf:type :taskItem ; 
        :hasord 2; 
        :hasTask :shoes ] , 
        [ rdf:type :taskItem ; 
        :hasord 3; 
        :hasTask :leash ] . 

기본 개념은 비록 동일합니다. 또는 목록을 사용할 수도 있습니다. 순수한 RDF, 당신은 RDF 목록을 사용할 수 있으며처럼, 암시 적 숫자를 떠나 제 1 및 RDF : OWL에서

:list :hasTasks [ rdf:first :socks ; 
        rdf:rest [ rdf:first :shoes ; 
          rdf:rest [ rdf:first :leash ; 
             rdf:rest rdf:nil ]]]. 

단지 속기의 그

:list :hasTasks (:socks :shoes :leash) . 

, 당신은 RDF를 사용할 수 없습니다 나머지 하지만 자신 만의 유사한 속성을 정의하고 동일한 구조를 구현할 수 있습니다. 내 대답은 Can I specify a range for rdf:List members? (누군가가 특정 유형이어야하는 모든 요소의 목록을 원했던 곳)에서 목록 클래스를 지정하는 예제가 있습니다. 이 경로를 사용하고 목록의 각 요소의 위치를 ​​복구하려면 Is it possible to get the position of an element in an RDF Collection in SPARQL?에 대한 응답에서 설명한대로 RDF를 통한 SPARQL 쿼리를 사용하여 실제로 수행 할 수 있습니다.

+0

리드에 다시 한 번 감사드립니다. 나는 저녁에 집에 가려고하는데 (질문이있는) 후속 조치를 취하고 내일 받아 들일 수 있도록 할 것입니다. 건배 –