문제

다음과 같은 문장을 생각해 보세요:

John Smith는 워싱턴으로 여행을 떠났습니다.

이름표는 좋은 날에는 'John Smith'를 사람으로 식별하고 'Washington'을 장소로 식별합니다.그러나 다른 증거가 없으면 세상에 존재하는 모든 가능한 '존 스미스' 중 어느 것을 가지고 있는지, 심지어 다양한 '워싱턴' 중 어느 것을 가지고 있는지 알 수 없습니다.

결국 일부 해결 프로세스는 다른 증거를 기반으로 결정될 수 있습니다.그러나 그 시점까지 RDF에서 이러한 참조를 표현하는 좋은 방법은 무엇입니까?일부 네임스페이스에 구성된 고유 식별자를 할당하시겠습니까?빈 튜플을 만듭니다(예:'문서 d'에는 John Smith라는 사람이 언급되어 있습니다.)?다른 대안이 있나요?내가 가지고 있는 한 책에는 익명의 기상 관측소와 관련된 예가 나와 있지만, 나는 그 예가 설명된 RDF에 관한 다른 모든 것과 어떻게 들어맞는지 잘 따르지 않습니다.

도움이 되었습니까?

해결책

자신만의 네임 스페이스에 고유 식별자를 할당합니다.나중에이 "워싱턴"이 http://dbpedia.org/resource와 동일하다는 것을 알게되면/washington, _d.c . 또는 무엇이든지, 당신은 올빼미를 추가 할 수 있습니다.

다른 팁

우선, opencalais 와 같은 엔티티 인식에 사용할 수있는 기존의 좋은 서비스가 있습니다.href="http://www.zemanta.com/"rel="nofollow nofollow noreferrer"> zemanta 및 연금술 .

더 구체적으로, 그렇습니다. 예는 단순히 각각의 URI (식별자)를 단순히 '민지'라고 말하고 거북이 에이 정보에 대한 표현을 제공하기 위해

@prefix : <http://yourdomain.com/data/> .
@prefix myont: <http://yourdomain.com/ontology/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix dbpedia-owl: <http://dbpedia.org/ontology/Place>.
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

:John_Smith#d rdf:type foaf:Person ;
  foaf:name "John Smith"@en .

:Washington#d rdf:type dbpedia-owl:Place ;
  rdfs:label "Washington"@en .

:John_Smith#d myont:travelled_to :Washington#d .

<http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
  dcterms:references :John_Smith#d, :Washington#d .
.

그리고 나중에 그들을 일치 시키면, 올빼미 : Sameas를 Glenn McDonald Mentions로 사용할 수 있습니다.

위에서 설명한 대로 고유한 URI를 생성하거나 빈 노드를 사용할 수 있습니다.두 가지 접근 방식 모두 장단점이 있습니다.

URI에는 외부 ID가 있으므로 향후 쿼리에서 개념을 명시적으로 참조할 수 있으므로 일부 쿼리를 훨씬 더 간단하게 만들 수 있습니다.그러나 외부 ID가 있으므로 URI를 구성하는 데 사용하는 알고리즘은 인프라의 중요한 부분이 되며 URI가 안정적이고 고유하다는 것을 보장해야 합니다.처음에는 이것이 사소할 수 있지만 서로 다른 시간에, 종종 병렬로, 분산 시스템에서 재처리되는 여러 문서를 처리하기 시작하면 꽤 빨리 간단하지 않게 됩니다.

이 문제를 해결하기 위해 특별히 공백 노드가 포함되었으며 범위 지정을 통해 고유성이 보장됩니다.그러나 쿼리에서 빈 노드를 명시적으로 참조해야 하는 경우 비표준 확장을 사용하거나 노드를 특성화하는 방법을 찾아야 합니다.

두 경우 모두 특히 공백 노드를 사용하는 경우 이를 특성화하기 위해 출처 설명을 포함해야 합니다.

@nathan의 예는 아이디어를 얻는 데 좋은 예입니다.

따라서 공백 노드를 사용하는 예는 다음과 같습니다.

@prefix my: <http://yourdomain.com/2010/07/20/conceptmap#> .
@prefix proc: <http://yourdomain.com/2010/07/20/processing#> .
@prefix prg: <http://yourdomain.com/processors#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.example.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix doc: <http://yourdomain.com/doc-path/> .

_:1 rdf:type proc:ProcessRun ; 
    proc:parser prg:tagger ;
    proc:version "1.0.2" ;
    proc:time "2010-07-03 20:35:45"^^<xsd:Timestamp> ;
    proc:host prg:hostname-of-processing-node ;
    proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ;

_:2 rdf:type foaf:Person ;
    foaf:name "John Smith"@en ;
    proc:identifiedBy _:1 ;
    proc:atLocation doc:some-doc#char=0,9 .


_:3 rdf:type owl:Thing ;
    foaf:name "Washington"@en ;
    proc:identifiedBy _:1 ;
    proc:atLocation doc:some-doc#char=24,33 .

<http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
                                      dcterms:references _:2, _:3 .

rfc5147 텍스트/일반 조각 식별자를 사용하여 처리 중인 파일을 고유하게 식별합니다. 이는 개별 실행을 식별하는 방법에 대한 유연성을 제공합니다.대안은 문서 루트에 대한 URI에서 이 모든 것을 캡처하거나 출처를 완전히 포기하는 것입니다.

@prefix : <http://yourdomain.com/ProcessRun/parser=tagger/version=1.0.2/time=2010-07-03+20:35:45/host=hostname-of-processing-node/file=http%3A%2F%2Fyourdomain.com%2Fdoc-path%2Fsome-doc%23line%3D1%2C%3Bmd5%3Dmd5_sum_goes_here%2Cmime-charset_goes_here/$gt; .

@prefix my: <http://yourdomain.com/2010/07/20/conceptmap#> .
@prefix proc: <http://yourdomain.com/2010/07/20/processing#> .
@prefix prg: <http://yourdomain.com/processors#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.example.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix doc: <http://yourdomain.com/doc-path/some-doc#> .

:1 rdf:type proc:ProcessRun ; 
    proc:parser prg:tagger ;
    proc:version "1.0.2" ;
    proc:time "2010-07-03 20:35:45"^^<xsd:Timestamp> ;
    proc:host prg:hostname-of-processing-node ;
    proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ;

:2 rdf:type foaf:Person ;
    foaf:name "John Smith"@en ;
    proc:identifiedBy :1 ;
    proc:atLocation doc:some-doc#char=0,9 .


:3 rdf:type owl:Thing ;
    foaf:name "Washington"@en ;
    proc:identifiedBy :1 ;
    proc:atLocation doc:some-doc#char=24,33 .

<http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
                                      dcterms:references :2, :3 .

foaf:name에는 owl:Thing의 범위가 있으므로 무엇이든 적용할 수 있습니다.대안으로 고유명사에 skos:Concept 및 rdfs:label을 사용할 수도 있습니다.

공백 노드와 공백 노드에 대한 마지막 고려 사항URI는 사용하는 모든 데이터 저장소가 궁극적으로 사용하는 모든 URI를 저장해야 하며 이는 매우 큰 데이터 세트를 사용하는 경우 성능에 영향을 미칠 수 있다는 것입니다.

궁극적으로 최종 통합 엔터티와 함께 ​​그래프에 출처 정보를 게시하려는 경우 빈 노드를 사용하고 궁극적으로 엔터티를 통합하는 개념에 URI를 할당하는 경향이 있습니다.

그러나 추론의 출처를 추적하지 않고 이것이 파이프라인의 많은 경로 중 하나에 불과하여 최종적으로 중간 결과를 폐기하는 경우 일종의 문서 해시, 타임스탬프 및 ID를 사용하여 URI를 생성할 것입니다. 그리고 끝내세요.

@prefix : <http://yourdomain.com/entities#> .
@prefix my: <http://yourdomain.com/2010/07/20/conceptmap#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

:filename_timestamp_1 rdf:type foaf:Person ;
                      foaf:name "John Smith"@en .

:filename_timestamp_2 rdf:type owl:Thing ;
    foaf:name "Washington"@en .

<http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
                                      dcterms:references :2, :3 .
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top