Объекты триплетов в форме ресурсов
Пусть требуется задать следующий триплет:
<http://www.xulplanet.com/rdf/people/Sandra> ® sibling ®
<http://www.xulplanet.com/rdf/people/Kevin>
Для утверждений такого типа нельзя использовать атрибуты, поскольку они могут использоваться только для значений литералов. Однако можно использовать модифицированную форму записи тегов – вместо помещения значения внутрь открывающего и закрывающего тегов предиката можно воспользоваться атрибутом resource.
<rdf:Description
rdf:about="http://www.xulplanet.com/rdf/people/Sandra"
people:name="Sandra">
<people:sibling
rdf:resource="http://www.xulplanet.com/rdf/people/Kevin"/>
</rdf:Description>
Здесь атрибут resource использован для указания того, что ресурс Sandra имеет свойство sibling(«родной брат»), значением которого является другой ресурс <http://www.xulplanet.com/rdf/people/Kevin>. Обратим внимание, что этот атрибут находится в пространстве имен RDF. Он используется для определения целевых ресурсов, тогда как текст, заключенный в тэг используется для определения литералов. Можно заметить схожесть этой формы записи с формой записи атрибута about. Атрибут about используется для субъектов – левой части триплетов, а атрибут resource используется для объектов (целей) – правых частей триплетов в случае их представления в формате URI.
В предыдущем примере имя Сандры было определено с помощью атрибута name. Это обычная практика для триплетов, субъект которых содержится в этом же файле. Если нам потребуется добавить какие-то отношения для Кевина, нам нужно будет воспользоваться еще одним, отдельным тегом Description:
<rdf:Description
rdf:about="http://www.xulplanet.com/rdf/people/Sandra"
people:name="Sandra">
<people:sibling
rdf:resource="http://www.xulplanet.com/rdf/people/Kevin"/>
</rdf:Description>
<rdf:Description
rdf:about="http://www.xulplanet.com/rdf/people/Kevin"
people:name="Kevin"/>
Второй тег Description используется для объявления второго триплета с другим ресурсом субъекта, на который указывает свой атрибут about. Существует другая форма записи, которой можно воспользоваться, например, для описания отношения между двумя людьми в одном файле. Вместо записи второго тега Description отдельно, поместим его внутрь первого тега:
<rdf:Description
rdf:about="http://www.xulplanet.com/rdf/people/Sandra"
people:name="Sandra">
<people:sibling>
<rdf:Description
rdf:about="http://www.xulplanet.com/rdf/people/Kevin"
people:name="Kevin"/>
</people:sibling>
</rdf:Description>
В результате будет определен тот же набор триплетов, но вместо указания свойства sibling на ресурс и описания его отдельно, в данном примере он реализован в виде отдельного тэга. При этом атрибут resource не используется, так как ресурс указан внутри атрибута about.
Хотя уровень вложенности информации при таком способе записи не ограничен, иногда может потребоваться описывать ресурсы раздельно. Поскольку порядок записи отношений не имеет значений, можно записывать их в любой удобной для имеющихся данных форме. Для рассматриваемого примера для улучшения читаемости можно описать Кевина отдельно, особенно если требуется записать много других отношений, описывающих его.
Типизированные литералы
При машинной обработке часто необходимо знать не только значение литерала, но и его тип. Поэтому в RDF наряду с простыми литералами (plain literals) введены типизированные литералы (typed literals), которые задаются в следующем формате:
"значение"^^http://www.w3.org/2001/XMLSchema#тип
Здесь значение – это значение литерала, тип – один из типов данных XML схем. Например:
"10"^^http://www.w3.org/2001/XMLSchema#integer
В литералах RDF можно использовать практически все типы данных, определенные для схемы XML, за исключением следующих типов: xsd:duration, xsd:QName, xsd:ENTITY, xsd:ID, xsd:IDREF, xsd:NOTATION, xsd:IDREFS, xsd:ENTITIES и xsd:NMTOKENS.
Лекция 11
RDF Schema
Произвольный RDF документ может содержать описание множества различных объектов и отношений. Одно и то же описание может быть сделано, в общем случае, бесконечным количеством разных способов – достаточно лишь заменить одни идентификаторы на другие. Идентификаторы, понятные человеку, сами по себе ничего не значат для компьютера. Спецификация RDF определяет лишь базовый синтаксис и представляет собой «голую» абстракцию.
Для пояснения содержимого RDF документов служит специальный формат документов, называемый RDF-схема (RDF Schema, RDFS). Данный формат является расширением RDF и представляет собой объектно-ориентированную модель, позволяющую представлять элементы RDF документа в виде иерархии классов, задавать отношения наследования, определять свойства классов, типы данных и т.д.
Стандарт RDF-схем можно найти по следующей ссылке:
http://www.w3.org/TR/xmlschema-2/.
Язык описания словаря содержит набор ресурсов RDF, который можно использовать для описания свойств других ресурсов RDF в словарях RDF, разработанных для конкретных приложений. Этот набор ресурсов реализован в элементах XML, определенных в пространстве имен
http://www.w3.org/2000/01/rdf-schema#
Обычно в качестве префикса этого пространства имен задается префикс rdfs.