2010-07-17 2 views
2

Рассмотрим предложение типа:РДФ представление ссылок на сущности в тексте

Джон Смит отправился в Вашингтон.

Имя теггера определило бы в хороший день «Джон Смит» как человек и «Вашингтон» как место. Однако, без других доказательств, он не может определить, какой из возможных «Джон Смит в мире» или даже какой из «Вашингтонских» он получил.

В конце концов, на основе других доказательств может быть определен определенный процесс разрешения. Однако до этого момента, какая хорошая практика для представления этих ссылок в RDF? Назначьте им созданные уникальные идентификаторы в каком-либо пространстве имен? Сделайте пустые кортежи (например, «Некоторый человек по имени Джон Смит упоминается в Документе d».)? Другая альтернатива? В книге, которую я привел, приводятся примеры с анонимными метеорологическими станциями, но я не совсем понимаю, как их пример соответствует всему, что описано в RDF.

ответ

3

Назначьте им уникальные идентификаторы в своем собственном пространстве имен. Если позже вы обнаружите, что этот «Вашингтон» совпадает с http://dbpedia.org/resource/Washington,_D.C. Или что-то еще, вы можете добавить сову: sameAs, чтобы утверждать это.

+0

И создать пространство имен для каждого слизняк данных? – bmargulies

+0

Я думал об одном пространстве имен для всего вашего набора данных. Тогда уникальные идентификаторы для всего, что вы не знаете, одинаковы. –

2

Прежде всего, существуют хорошие услуги, которые вы можете использовать для распознавания объектов, такие как OpenCalais, Zemanta и Alchemy.

Чтобы быть более конкретным, хотя, да просто «мята» ваши собственные идентификаторы 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.

+0

NEE - мое дело. Я просто хочу добавить продукцию RDF. – bmargulies

0

Вы можете либо пометить свой собственный URI, как описано выше, либо использовать пустой узел. Существуют плюсы и минусы для обоих подходов:

URI имеют внешнюю идентификационную информацию, поэтому вы можете явно ссылаться на свою концепцию в будущих запросах, которые могут сделать некоторые запросы намного проще; но у вас есть внешняя идентификация, поэтому алгоритм, который вы используете для создания URI, становится важной частью вашей инфраструктуры, и вы должны гарантировать, что они стабильны и уникальны. Сначала это может быть тривиально, но когда вы начинаете работать с несколькими документами, которые перерабатываются в разное время, часто параллельно и в распределенных системах, он довольно быстро перестает быть прямым.

Пустые узлы были включены специально для решения этой проблемы, их уникальность гарантирована их охватом; но, если вам нужно будет явно ссылаться на пустой узел в запросе, вам понадобится использовать нестандартное расширение или найти способ описать узел.

В обоих случаях, но особенно если вы используете пустой узел, вы должны включить утверждения о происхождении, чтобы охарактеризовать его в любом случае.

@ Натан пример хороший, чтобы получить эту идею.

Так пример использования пустых-узлов может быть:

 

@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: имя имеет диапазон сову: Вещь, поэтому оно может быть применено к чему-либо. Альтернативой может быть использование скинов: Concept и rdfs: label для собственных существительных.

Одно из последних соображений для пустого узла и URI заключается в том, что в любом хранилище данных, которое вы используете, в конечном итоге придется хранить любой URI, который вы используете, и это может иметь последствия для производительности, если вы используете очень большие наборы данных.

В конечном счете, если бы я собирался опубликовать информацию о происхождении на графике вместе с окончательными унифицированными сущностями, я был бы склонен идти с пустыми узлами и распределять URI с концепциями, которые я в конечном счете унифицирую сущности.

Если, однако, я не собираюсь отслеживать происхождение выводов, и это всего лишь один проход многих в конвейере, который в конечном итоге отбросит промежуточные результаты, я бы просто набрал URI, используя какой-то хэш документа, timestamp и 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 .