RDF Представление объектов ссылок в тексте
-
17-09-2020 - |
Вопрос
Рассмотрим предложение, такое как:
Джон Смит путешествовал в Вашингтон.
Имя Tagger будет идентифицировать, в хороший день, «Джон Смит» как человек, и «Вашингтон» как место.Однако без других доказательств он не может сказать, какой из всех возможных «Джона Смита в мире» или даже какой из различных «Вашингтона, он получил.
В конце концов, какой-то процесс разрешения может решить, основанный на других доказательствах.Однако до этого момента, что такое хорошая практика для представления этих ссылок в RDF?Назначьте их приготовленные уникальные идентификаторы в некотором пространстве имен?Сделайте пустые кортежи (например, некоторые лица, названные Джоном Смитом, ссылались в документе D '.)?Какая-то другая альтернатива?Книга у меня есть пример, включающий анонимные метеорологические станции, но я не совсем следую, как их пример вписывается во все остальное о описании RDF.
Решение
Назначьте им уникальные идентификаторы в вашем собственном пространстве имен.Если вы позже обнаружите, что этот «Вашингтон» такой же, как http://dbpedia.org/resource/Washington ,_d.ch . Или что-то еще, вы можете добавить сову: Sameas утверждать, что.
Другие советы
Прежде всего, есть существующие хорошие услуги, которые вы можете использовать для распознавания объектов, таких как OpenCalais href="http://www.zemanta.com/" rel="nofollow noreferrer"> Zemanta и Алхимия .
Быть более конкретным, хотя, да, просто «мята» свои собственные УРИ (идентификаторы) для каждой вещи, а затем говорить о них - предложить представление для этой информации в черепахе
@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 AS Glenn McDonald упоминает.
может быть уместно, чтобы вы прочитали, как apache Stanbol делает это: http://stanbol.apache.org/docs/trunk/components/enhancer/enhancementStructure.html
Вы можете либо войти на свой собственный 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: имя имеет ряд совы: вещь, поэтому его можно наносить на что-либо. Альтернатива может использовать SKOS: концепция и RDFS: этикетка для правильных существительных.
Одно окончательное рассмотрение для Blank-node vs. URI заключается в том, что любой используемый вами хранилище данных в конечном итоге должен хранить любую использование URI, и это может иметь последствия относительно производительности, если вы используете очень большие наборы данных.
В конечном итоге, если я собирался опубликовать информацию о происхождении на графике вместе с окончательными унифицированными организациями, я был бы склонен идти с пустыми узлами и выделить 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 ..