Подтвердить что ты не робот

Различия между rdf: resource, rdf: about и rdf: ID

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

Я был бы рад, если бы вы представили несколько примеров.

4b9b3361

Ответ 1

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

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

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

subject predicate object

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

subjectURI predicate objectURI

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

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

rdf:ID обескуражен, так как

  • вы можете заменить его rdf:about или rdf:resource фрагментом #baz и
  • это может вызвать проблемы 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;DR

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

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

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

Ответ 2

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

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

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

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

Таким образом, общее правило для меня заключается в использовании rdf: о "глобально известном" идентификаторе (когда вы хотите, чтобы URI всегда был одинаковым) и использовать rdf: ID при описании локального ресурса, URI не заботится о внешней стороне текущего документа.