Различия между rdf: ресурсом, rdf: о и rdf: идентификатором - PullRequest
27 голосов
/ 19 августа 2011

Каковы концептуальные различия между rdf:resource, rdf:about и rdf:ID. Я провел некоторое расследование, но разница между ними мне пока не ясна. Например, используется ли rdf:ID при первом объявлении ресурса, rdf:resource используется для ссылки на уже существующий ресурс и т. Д.

Буду рад, если вы приведете несколько небольших примеров.

Ответы [ 2 ]

49 голосов
/ 19 августа 2011

Для ясности речь идет только об особом способе написания rdf: именно RDF / XML.Другие синтаксисы не имеют этих различий.

С учетом этого отказа от ответственности:

То, что мы пытаемся сделать, это написать операторы вида:

subject predicate object

и, в частности:

subjectURI predicate objectURI

Итак, как мы вводим URI субъекта и объекта в RDF / XML?

  1. rdf:about устанавливает URI субъекта оператора, которыйможет быть абсолютным (http://example.com/) или разрешенным относительно BASE документа (например, /foo/bar, #frag).(Как href в html)
  2. rdf:resource устанавливает URI объекта оператора, еще раз или абсолютный или относительный.
  3. rdf:ID устанавливает URI субъекта, но может толькобыть в этом документе.Идентификатор также может быть использован только один раз.Очень похоже на <a name="baz"> или id="baz" в html.

rdf:ID не рекомендуется, так как

  1. вы можете заменить его на rdf:about или rdf:resource нафрагмент #baz и
  2. может вызвать проблемы с XML, если вы используете один и тот же идентификатор более одного раза.

То есть он является избыточным и потенциальным источником ошибок.

В ретроспективе, как правило, для указания URI необходим только один атрибут, поскольку из синтаксиса RDF / XML видно, является ли что-то субъектом или объектом:

<ex:Foo ...> - subject
  <ex:prop ... /> - property then object
</ex:Foo>

<ex:Foo ...> - subject
  <ex:prop> - property
    <ex:Bar ... /> - subject (and implictly an object chaining from previous) 
...

(эмпирическое правило:нечетные линии rdf:about, четные линии, rdf:resource)

и использование rdf:about и rdf:resource для элемента почти всегда является ошибкой (вы либо находитесь в позиции субъекта, либо в позиции объекта).

tl; др

Избегать rdf:ID.Используйте rdf:about и rdf:resource во многом как href, первый для субъекта, второй для объектов.

Дополнительно

Забыл упомянуть, что rdf:ID может использоваться для элемента свойства, но он делает что-то, что вы можете найти неожиданным: он ограничивает тройку.Избегайте rdf:ID.

0 голосов
/ 03 апреля 2015

Я хотел бы уточнить некоторые из замечательных моментов в предоставленном ответе, но только в отношении rdf: ID и rdf: about.

Теги используются для построения URI.Если полный URI не указан (например, rdf: ID = "x"), то сгенерированный URI относится к базовому URI в области действия, обычно полученному из местоположения документа, но его можно указать с атрибутом xml: base,

Суть (упомянутая выше) заключается в том, что rdf: about может быть полностью квалифицированным URI, поэтому его легко установить.

rdf: ID не может быть полностью определенным URI, но вы все равно можете это контролировать, если вручную установите атрибут xml: base.

Поэтому для меня общее правило состоит в том, чтобы использовать rdf: about для «всемирно известного» идентификатора (когда вы хотите, чтобы URI всегда был одним и тем же) и использовать rdf: ID при описаниилокальный ресурс, URI которого не имеет значения вне текущего документа.

...