많은 데이터 세트에는 변경 내역이 있습니다. 이전 데이터를 링크 된 데이터로 사용 가능하게 만드는 것은 어려울 수 있습니다. 내가 고려하고있는 일반적인 경우는 데이터 집합이 시간에 따라 변경 될 수있는 속성을 가진 데이터에 대한 데이터를 가지고있는 경우입니다. 예를 들어 윈저 캐슬 (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:replaces
및 dcterms: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:generatedAtTime
및 prov:invalidatedAtTime
인 것으로 보입니다. 그것들은 한 버전의 시간적 유효성을 나타 내기 위해 사용될 수 있습니다. 그러나 해당 속성의 범위는 xsd:dateTime
입니다. 이는 각 시간을 초 단위까지 알려야 함을 의미합니다. 특히 디지털 시대 이전의 과거 데이터에 대해서는 항상 알려진 것은 아닙니다. 때로는 모두 알려져 있습니다 1 년 또는 날짜입니다. 그래서 PROV는 다른 방식으로는 너무 제한적입니다.당신은 당신이 한 손으로 당신의 데이터 및 변경 사항에 대한 다른 한편으로 메타 데이터를 가지고이로 모델링하면
간단한 대답이 없기 때문에이 사이트에 대한 좋은 질문이 아닙니다. RDF는 고유 한 버전 관리 개념을 가지고 있지 않습니다. RDF에 설명 된 내용은 모두 "입니다." 시간성에 대한 모든 해법은 어느 정도는 실수입니다. 이 영역에서 많은 부분을 다루는 [PROV] (https://www.w3.org/TR/prov-primer/)를 볼 수 있습니다. – TallTed
@TallTed는 정확합니다. PROV는 속성 및 간격을 활성화합니다. –
@TallTed : 질문이 여기에 속하지 않는다고 생각합니까? 아니면 오해의 소지가있는 제목입니까? RDF에서 버전 관리를 의미하지는 않았지만 RDF 기반 데이터에서 버전을 지정하거나 RDF를 기반으로하는 연결된 데이터를 의미했습니다. PROV 정보 : 좋은 리드이지만 완전한 솔루션을 제공하지는 못합니다. PROV를 포함하도록 원래 질문을 업데이트합니다. –