2017-01-24 9 views
2

많은 데이터 세트에는 변경 내역이 있습니다. 이전 데이터를 링크 된 데이터로 사용 가능하게 만드는 것은 어려울 수 있습니다. 내가 고려하고있는 일반적인 경우는 데이터 집합이 시간에 따라 변경 될 수있는 속성을 가진 데이터에 대한 데이터를 가지고있는 경우입니다. 예를 들어 윈저 캐슬 (Windsor Castle)의 역사가 있습니다. 과거에 많은 구성이 있었지만 여전히 동일한 것으로 간주 될 수 있습니다. 이를 처리하는 한 가지 방법은 특성에 대한 일시적인 주석을 갖는 것일 수 있습니다. 그러나 RDF 트리플마다 메타 데이터를 갖는 어색한 영역에 빠지게됩니다. 나는 더 단순한 해결책은 사물의 버전에 대해 생각하는 것이라고 생각한다 : 자원의 하나 이상의 속성이 변할 때, 새로운 버전이 생겨난다.RDF 데이터의 단순 버전 관리

아래는 특정 날짜에 자신의 이름을 변경 사람의 간단한 예입니다 :이 예에서

@prefix : <http://www.example.com/mydataset/> . 
@base <http://www.example.com/mydataset/> . 
@prefix dcterms: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 

:p1 a foaf:Person ; 
    foaf:name "Bob" ; 
    dcterms:valid "start=2015-06-20;" ; 
    dcterms:replaces <p1/version1> . 

<p1/version1> a foaf:Person ; 
    foaf:name "Alfred" ; 
    dcterms:valid "start=1975-08-01; end=2015-06-19;" ; 
    dcterms:isVersionOf :p1 ; 
    dcterms:isReplacedBy :p1 . 

, 주요 URI (:p1)는 항상 최신 버전에서 지적한다. 이력 데이터가 항상 필요한 것은 아니기 때문에 유용합니다. 현재 데이터에는 이전 버전에 대한 링크가 있습니다. dcterms:replacesdcterms:isReplacedBy 속성은 이전 버전의 체인을 구성 할 수 있습니다.

나는이 설정이 간단하고 작동하기 위해 SPARQL과 같은 것에 의존하지 않기 때문에이 설정이 마음에 들다. 그러나 문제는 일시적인 타당성의 명세이다. 내가 찾을 수있는 유일한 적절한 용어는 dcterms:valid입니다. 그러나 그 범위는 문자 그대로입니다. 그게 DCMI Period Encoding Scheme과 작동하지만, 나는 xsd:dateTime 또는 xsd:gYear과 같은 일반적인 데이터 형식을 사용할 수있는 것이 훨씬 더 유용 할 것이라고 생각합니다. 그러면 시간 범위 또는 특정 시점 기준으로 쿼리하고 데이터를 많이 주문하는 데 도움이됩니다. 예를 들어, SPARQL의 임시 쿼리는 데이터 유형 xsd:dateTime에 종속됩니다.

제 질문은 : 누군가 일반적인 데이터 형식을 사용할 수있는 링크 된 데이터의 간단한 버전 체계를 제안 할 수 있습니까? 아니면 dcterms:valid의 대안일까요?

업데이트 : 대체로 출처에 대한 의미를 제공하는 PROV을 제안했습니다. PROV에는 유효성 개념이 포함되어 있으며 dct:valid을 PROV에 매핑하려고 시도했습니다. 내 평판은 추가 하이퍼 링크를 게시 할 너무 낮은, 그래서 나는 인용 :

dct:valid ". 날짜 (종종 범위) 자원의 유효" 이 속성은 PROV의 리소스 또는 해당 리소스 중 하나의 생성 및 무효화에 해당 할 수 있습니다. 그러나 dct:valid은 출처가 아닌 만료일 (예 : 2015 년까지 유효한 자원)을 설정하는 데 사용할 수 있습니다 (이전 이벤트와 관련 없음). 따라서이 속성은 매핑에서 제외됩니다.

이 질문에 대한 과거 데이터는 dct:valid이 미래 날짜를 설정할 수 있다는 사실은 중요하지 않습니다. 따라서 PROV의 생성 및 무효화는 여전히 적용될 수 있습니다. 관련 PROV 조건은 prov:generatedAtTimeprov:invalidatedAtTime 인 것으로 보입니다. 그것들은 한 버전의 시간적 유효성을 나타 내기 위해 사용될 수 있습니다. 그러나 해당 속성의 범위는 xsd:dateTime입니다. 이는 각 시간을 초 단위까지 알려야 함을 의미합니다. 특히 디지털 시대 이전의 과거 데이터에 대해서는 항상 알려진 것은 아닙니다. 때로는 모두 알려져 있습니다 1 년 또는 날짜입니다. 그래서 PROV는 다른 방식으로는 너무 제한적입니다.당신은 당신이 한 손으로 당신의 데이터 및 변경 사항에 대한 다른 한편으로 메타 데이터를 가지고이로 모델링하면

+1

간단한 대답이 없기 때문에이 사이트에 대한 좋은 질문이 아닙니다. RDF는 고유 한 버전 관리 개념을 가지고 있지 않습니다. RDF에 설명 된 내용은 모두 "입니다." 시간성에 대한 모든 해법은 어느 정도는 실수입니다. 이 영역에서 많은 부분을 다루는 [PROV] (https://www.w3.org/TR/prov-primer/)를 볼 수 있습니다. – TallTed

+0

@TallTed는 정확합니다. PROV는 속성 및 간격을 활성화합니다. –

+0

@TallTed : 질문이 여기에 속하지 않는다고 생각합니까? 아니면 오해의 소지가있는 제목입니까? RDF에서 버전 관리를 의미하지는 않았지만 RDF 기반 데이터에서 버전을 지정하거나 RDF를 기반으로하는 연결된 데이터를 의미했습니다. PROV 정보 : 좋은 리드이지만 완전한 솔루션을 제공하지는 못합니다. PROV를 포함하도록 원래 질문을 업데이트합니다. –

답변

1

변화의 이러한 종류를 지원하는 어휘는 예를 들어 변경 집합

http://vocab.org/changeset/

입니다.

+0

비슷한 것을 발견했는데 어휘와 어떻게 비교되는지 모르겠습니다. http://topbraid.org/ change – Sentry

+0

난 단지 어휘를 비교하고 성취하고자하는 것에 가장 적합한 것을 보게된다. – ChristophE

+0

고마워, 나는 전에 어조 변경 어휘를 보았다. 예제는 현재 사용할 수 없지만 https://www.w3.org/2009/12/rdf-ws/papers/ws07에서 예제를 제공합니다. 변경 세트 어휘는 데이터가 다른 역사 버전을 가질 수있는 방법을 표현하는 것보다 데이터 세트에서 편집 변경 사항을 추적하는 데 더 많은 의미가 있다고 생각합니다. 나는 그것들이 다른 유스 케이스라고 생각한다. Windsor Castle의 역사를 예로 들어 원래의 질문을 업데이트합니다. –