テキスト内のエンティティ参照のRDF表現
-
17-09-2020 - |
質問
のような文を考えてみましょう。
ジョン・スミスはワシントンに旅行しました。
名前タグガーは、良い日、「ジョン・スミス」を人として識別し、「ワシントン」の場所として。しかし、他の証拠がなければ、世界中のすべての可能な「ジョン・スミス」のどちらのうち、あるいはさまざまな 'ワシントンのどちらのうちどれが持っていますか。
最終的には、他の証拠に基づいて、いくつかの解像度プロセスが決定することがあります。しかし、その時点まで、RDFでこれらの参考文献を表現するための良い習慣は何ですか?いくつかのネームスペースで作成された一意の識別子を割り当てますか?空白のタプル(例えば、John Smithという名前の人物がドキュメントD 'で参照されました。)他の代替案?本は匿名の気象局を含む例を示していますが、私は彼らの例がRDFについての他のすべてのものにどのように適合しているかは以下のようにはありません。
解決
独自のネームスペースに固有の識別子を割り当てます。後でこの「ワシントン」が。、または何でも、それをアサートするためにOwl:SameASを追加することができます。
他のヒント
まず第一に、 opencalais 、
もっと具体的になるように、はい、それぞれのものについてあなた自身の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 .
.
後でそれらを合わせると、Owl:SameasをGlenn McDonaldの表現として使用することができます。
は、Apache Stanbolをどのようにするかを読むことができます。 http://tanbol.apache.org/docs/trunk/components/enhancer/enhancementStructure.html
上記のようにあなた自身のURIをミントするか、または空白ノードを使用することができます。両方のアプローチには長所と短所があります:
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:問題の範囲がありますので、それは何でも適用できます。代替品はSkos:ConceptとRDFSを使用することができます。適切な名詞のラベル。
空白ノードとURIの最終的な考慮事項は、使用するデータストアが最終的に使用するURIを保存する必要があります。これにより、非常に大きなデータセットを使用している場合はパフォーマンスに関して影響を与える可能性があります。
最終的に、私が最終的な統一されたエンティティと共にグラフ内の起源情報を公開しようとしていた場合、私は空白のノードと一緒に行く傾向があり、URIを概念に割り当てます。
しかし私は推論の由来を追跡するつもりならず、これは最終的に中間結果を捨てるパイプライン内の多くのパスであるだけで、私はただいくつかの文書ハッシュ、タイムスタンプを使用してURIをミントします。そしてIDとそれを使って行われます。
@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 ..