2

次のような文を考えてみましょう:

ジョン・スミスはワシントンに旅行しました。

ネームタグ作成者は、良い日には「ジョン・スミス」を人、「ワシントン」を場所として識別します。しかし、他の証拠がなければ、世界にある可能性のあるすべての「ジョン・スミス」のどれか、さらにはさまざまな「ワシントン」のどれを持っているかさえわかりません.

最終的には、他の証拠に基づいて、何らかの解決プロセスが決定される可能性があります。しかし、その時点までは、これらの参照を RDF で表現するための優れた方法は何でしょうか? いくつかの名前空間で作成された一意の識別子を割り当てますか? 空白のタプルを作成します (例: 「John Smith という名前の人物がドキュメント d で参照されました」)。他の代替案はありますか?私が持っている本には、匿名の気象観測所に関する例が示されていますが、それらの例が、記述されている RDF に関する他のすべてとどのように適合するかについてはよく理解していません。

4

4 に答える 4

3

独自の名前空間で一意の識別子を割り当てます。この「Washington」がhttp://dbpedia.org/resource/Washington,_D.C . などと同じであることが後でわかった場合は、それを表明するために owl:sameAs を追加できます。

于 2010-07-17T20:45:37.217 に答える
2

まず第一に、OpenCalaisZemantaAlchemyなど、エンティティ認識に使用できる既存の優れたサービスがあります。

ただし、より具体的には、はい、それぞれの独自の 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 を使用できます。

于 2010-07-19T01:52:32.467 に答える
1

Apache Stanbol がどのようにそれを行うかを読むのに関連するかもしれません: http://stanbol.apache.org/docs/trunk/components/enhancer/enhancementstructure.html

于 2013-06-10T09:30:01.570 に答える
0

上記のように独自の URI を作成するか、空白ノードを使用できます。どちらのアプローチにも長所と短所があります。

URI には外部 ID があるため、将来のクエリで概念を明示的に参照できます。これにより、一部のクエリがより簡単になります。ただし、それらは外部 ID を持っているため、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:バージョン「1.0.2」;
    proc:time "2010-07-03 20:35:45"^^<xsd:タイムスタンプ> ;
    proc:host prg:処理ノードのホスト名 ;
    proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ;

_:2 rdf:type foaf:Person ;
    foaf:name "ジョン・スミス"@en ;
    proc:identifiedBy _:1 ;
    proc:atLocation doc:some-doc#char=0,9 .


_:3 rdf:type owl:Thing ;
    foaf:name "ワシントン"@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 text/plain フラグメント識別子を使用して、処理中のファイルを一意に識別することに注意してください。これにより、個々の実行をどのように識別したいかについて柔軟性が得られます。別の方法は、ドキュメント ルートの URI でこれらすべてをキャプチャするか、出所を完全に放棄することです。

@prefix : <http://yourdomain.com/ProcessRun/parser=tagger/version=1.0.2/time=2010-07-03+20:35:45/host=処理ノードのホスト名/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:バージョン「1.0.2」;
    proc:time "2010-07-03 20:35:45"^^<xsd:タイムスタンプ> ;
    proc:host prg:処理ノードのホスト名 ;
    proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ;

:2 rdf:タイプ foaf:人;
    foaf:name "ジョン・スミス"@en ;
    proc:identifiedBy:1;
    proc:atLocation doc:some-doc#char=0,9 .


:3 rdf:type owl:Thing ;
    foaf:name "ワシントン"@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 を使用することもできます。

blank-node と URI に関する最後の考慮事項は、使用するすべてのデータストアが、使用するすべての URI を最終的に格納する必要があることです。これは、非常に大きなデータセットを使用している場合、パフォーマンスに影響を与える可能性があります。

最終的に、最終的に統合されたエンティティとともにグラフ内の来歴情報を公開する場合は、空白のノードを使用して、最終的にエンティティを統合する概念に URI を割り当てる傾向があります。

ただし、推論の出所を追跡するつもりはなく、これが最終的に中間結果を破棄するパイプライン内の多くのパスの 1 つにすぎない場合、何らかのドキュメント ハッシュ、タイムスタンプ、および 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 "ワシントン"@en .

<http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
                                      dcterms:references :2, :3 .
于 2010-07-22T04:51:41.203 に答える