В чем разница между rdf: ресурсом и rdfs: ресурсом? - PullRequest
3 голосов
/ 07 июля 2019

В документации по синтаксису XML RDF 1.1 rdf:resource используется в качестве сокращенной формы при определении пустых элементов свойства :

Когда дуга предиката в графе RDF указывает на узел объекта, который не имеет дальнейших дуг предиката, который появляется в RDF / XML как пустой элемент узла (или), эта форма может быть сокращена. Это делается путем использования IRI узла объекта в качестве значения атрибута XML rdf:resource для содержащего элемента свойства и создания элемента свойства пустым.

В схеме RDF 1.1 rdfs:Resource определяется как класс :

Все вещи, описанные RDF, называются ресурсами и являются экземплярами класса rdfs:Resource. Это класс всего. Все остальные классы являются подклассами этого класса. rdfs:Resource является экземпляром rdfs:Class.

Как эти два связаны? Всегда ли значение rdf:resource принадлежит классу rdfs:Resource и наоборот?

1 Ответ

4 голосов
/ 08 июля 2019

Они вообще не связаны.У них просто есть общее имя, потому что они оба имеют отношение к ресурсам что-то .

Термин "ресурс" является центральным в модели данных RDF (это Ресурс Описание Framework, в конце концов).Ресурс в RDF - это, вообще говоря, все, что может быть идентифицировано с помощью URI (есть куча технических деталей относительно того, как такие вещи, как пустые узлы и литералы подпадают под это определение, но для простоты здесь мы проигнорируем это).

rdf:resource - это просто элемент синтаксиса в синтаксисе RDF / XML, а именно атрибут для идентификации ресурса, который является значением свойства.Например, вот простая модель RDF (1 тройка) в RDF / XML:

<rdf:Description rdf:about="http://example.org/Bob">
    <foaf:address rdf:resource="http://example.org/address1"/>
</rdf:Description>

Здесь http://example.org/Bob - это ресурс субъекта, а foaf:address - это свойство этого субъекта (используется длясвязать предметный ресурс со значением).Значение свойства в этом случае также является ресурсом (http://example.org/address1), поэтому в синтаксисе RDF / XML мы используем атрибут rdf:resource, чтобы связать его.Если бы вы написали одну и ту же модель RDF в другом синтаксисе (например, Turtle), вы бы вообще не увидели rdf:resource:

<http://example.org/Bob> foaf:address <http://example.org/address1> .

В RDF-схеме класс rdfs:Resource это класс всех ресурсов.Это концепция, а не синтаксический механизм.Поскольку в RDF практически все является ресурсом, это класс вещей «верхнего уровня».Все вещи являются ресурсами, поэтому, если вы введете новый класс, например «Person», он будет (автоматически) подклассом rdfs:Resource.

<http://example.org/Bob> rdf:type <http://example.org/Person> . 
<http://example.org/Bob> rdf:type rdfs:Resource . 

Обратите внимание, что вторая тройка является логическим следствием первой тройки.Поэтому на практике тот факт, что bob является ресурсом, почти никогда явно не записывается в моделях RDF - при необходимости это можно сделать вывод.

...