Кафедра «ОСУ» Весенний семестр 2010/2011 уч. года Языки описания информации Лекция ХХХ. Среда описания ресурсов RDF Технологические уровни «Semantic Web» Введение в RDF • RDF это среда (framework) для описания Web ресурсов, таких, как информация о названии (title), авторе (author), дате изменения (modification date), содержание (content) и авторском праве (copyright) Web страницы. • Пример RDF документа: <?xml version="1.0"?> <rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:si=http://www.w3schools.com/rdf/> <rdf:Description rdf:about=http://www.w3schools.com> <si:title>W3Schools</si:title> <si:author>Jan Egil Refsnes</si:author> </rdf:Description> </rdf:RDF> Введение в RDF Что такое RDF? • Что такое RDF? – RDF это сокращение для фразы Resource Description Framework (среда описания ресурсов); – RDF это структура (средство, каракас, инфраструктура) для описания ресурсов, имеющихся в web сети; – RDF разработано для чтения и понимания компьютерными программами; – RDF не предназначено для работы с такими описаниями пользователей (людей); – RDF записывается на языке XML; – RDF является частью работы организации W3C по созданию «Semantic Web»; – RDF является стандартом организации W3C. • Примеры использования RDF – Описание свойств продаваемых товаров, таких, как цена и доступность (price and availability). – Описание расписаний (time schedules) для событий в web сети. – Описание информации о web страницах (content, author, created и modified date). – Описание содержания (content) и оценки (rating) web картинок (pictures). – Описание содержания для поисковых систем (search engines). – Описание электронных библиотек. Что такое RDF? • RDF разработано для чтения и понимания компьютерными программами; – RDF было разработано для предоставления общего способа описывать информацию так, чтобы ее можно было читать и понимать компьютерными программами. – RDF описания не предназначаются для того, чтобы их показывать в web сети. • RDF записывается на языке XML – RDF документы записываются на языке XML. Язык XML, который используется средой RDF называется RDF/XML. – В результате использования XML, может легко обмениваться RDF информацией между разными типами компьютеров, использующих разные типы ОС и языков программирования. • RDF и концепция “Semantic Web“ – – – – Язык RDF является частью деятельности W3C по разработке «Semantic Web». Концепция W3C это будущий этап развития WWW, в котором: Web информация имеет точный смысл. Web информация может быть понята и обработана компьютерными программами. – Компьютеры могут интегрировать информацию из web сети. Работы организации W3C, связанные с RDF и OWL • RDF и OWL это две важные технологии концепции Semantic Web (Семантическая Паутина). • Semantic Web это среда для совместного использования данных компаниями, приложениями, предприятиями, сообществами и людьми, независимо от используемой платформы и программного обеспечения. • RDF и OWL являются ключевыми технологиями Semantic Web. – RDF - Resource Description Framework • RDF это язык для описания Web ресурсов, например, таких, как заголовок, автор, дата изменения, содержание и информация об авторском праве webстраницы. – OWL - Web Ontology Language • OWL построен над RDF и является языком для обработки информации в сети Интернет. – SPARQL - Query Language for RDF • SPARQL предлагает разработчикам способ записи запросов к широкому набору RDF информации в сети Интернет. Описания стандартов и даты их • … принятия организацией W3C Specification RDF RDF RDF RDF RDF RDF Draft / Proposal Recommendation Primer Test Cases Concept Semantics Schema Syntax 10. 10. 10. 10. 10. 10. Feb Feb Feb Feb Feb Feb 2004 2004 2004 2004 2004 2004 OWL Overview OWL Guide OWL Reference OWL Syntax OWL Test Cases OWL Use Cases Parsing OWL in RDF 10. 10. 10. 10. 10. 10. Feb Feb Feb Feb Feb Feb 2004 2004 2004 2004 2004 2004 SPARQL Language 21. Jan 2004 15. Jan 2008 RDF модель данных • Утверждениями являются триплеты вида <subject, predicate, object>: <Ian,hasColleague,Uli> • Триплеты могут быть представлены в виде графа: Ian hasColleague Uli • Утверждения описывают свойства (properties) ресурсов. • Ресурсом является любой объект, на который можно сослаться с помощью URI: – документ, картинка, параграф текста в Web сети; – http://www.cs.man.ac.uk/index.html – книга в библиотеке, реальный человек (?) – isbn://5031-4444-3333 – … • Сами свойства также являются ресурсом (имеют URI идентификаторы) URI идентификаторы • URI = Uniform Resource Identifier • «Обобщенное множество всех имен/адресов, являющиеся короткими строками, которые являются ссылками на ресурсы.» • URL адреса (Uniform Resource Locators) являются частным случаем ресурсов, которые доступны в WWW (например, web-страницы). • В RDF данных, URI идентификаторы обычно выглядят, как “нормальные” URL адреса, часто с идентификаторами фрагментов, указывающие на конкретные части документа: http://www.somedomain.com/some/path/to/file#fragmentID Связывание утверждений • Субъект одного утверждения может быть объектом для другого утверждения. • Такие коллекции утверждений формируют направленный, размеченный граф. Ian hasColleague Uli hasColleague Carole hasHomePage http://www.cs.mam.ac.uk/~sa ttler • Отметим, что объектом триплета может также быть “литерал” (строка). Синтаксис языка RDF • RDF использует XML синтаксис, который имеет специальный смысл: – Каждый элемент Description описывает ресурс. – Каждый атрибут или вложенный подэлемент в элементе Description является свойством (property) данного Ресурса (Resource). – На ресурсы можно ссылаться с помощью URI: <Description about="some.uri/person/ian_horrocks"> <hasColleague resource="some.uri/person/uli_sattler"/> </Description> <Description about="some.uri/person/uli_sattler"> <hasHomePage>http://www.cs.mam.ac.uk/~sattler</hasHomePage> </Description> <Description about="some.uri/person/carole_goble"> <hasColleague resource="some.uri/person/uli_sattler"/> </Description> Правила языка RDF • • RDF идентифицирует объекты с помощью web-идентификаторов (URI) и описывает ресурсы свойствами (properties) и значения свойств (property values) RDF описывает ресурсы свойствами (properties) и значения свойств (property values). • • • • Ресурс (resource) это любое понятие, которое может иметь URI, такое, как например: "http://www.w3schools.com/rdf". Свойство (property) это отношение ресурса с другими ресурсами или различными данными, такие, как "author" или "homepage". Значение свойства (property value) это объект, с которым связан ресурс (другой ресурс или какое-то данное стандартного типа). Например, "Jan Egil Refsnes“ или "http://www.w3schools.com" (note that a property value can be another resource) Следующий RDF документ может описывать ресурс "http://www.w3schools.com/rdf": <?xml version="1.0"?> <RDF> <Description about="http://www.w3schools.com/rdf"> <author>Jan Egil Refsnes</author> <homepage>http://www.w3schools.com</homepage> </Description> </RDF> • Это упрощенный пример, в котором не задано пространство имен. Утверждения языка RDF • The combination of a Resource, a Property, and a Property value forms a Statement (known as the subject, predicate and object of a Statement). • Let's look at some example statements to get a better understanding: • Statement: "The author of http://www.w3schools.com/rdf is Jan Egil Refsnes". – The subject of the statement above is: http://www.w3schools.com/rdf – The predicate is: author – The object is: Jan Egil Refsnes • Statement: "The homepage of http://www.w3schools.com/rdf is http://www.w3schools.com". – The subject of the statement above is: http://www.w3schools.com/rdf – The predicate is: homepage – The object is: http://www.w3schools.com Пример RDF данных • Таблица с двумя записями с описанием CD: Title Artist Country Company Price Year Empire Burlesque Bob Dylan USA Columbia 10.90 1985 Hide your heart Bonnie Tyler UK CBS Records 9.90 1988 • Below is a few lines from an RDF document: <?xml version="1.0"?> <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan</cd:artist> <cd:country>USA</cd:country> <cd:company>Columbia</cd:company> <cd:price>10.90</cd:price> <cd:year>1985</cd:year> </rdf:Description> <rdf:Description rdf:about="http://www.recshop.fake/cd/Hide your heart"> <cd:artist>Bonnie Tyler</cd:artist> <cd:country>UK</cd:country> <cd:company>CBS Records</cd:company> <cd:price>9.90</cd:price> <cd:year>1988</cd:year> </rdf:Description> . . . </rdf:RDF> Компоненты RDF • • • • Формальная модель данных. Синтаксис для обмена данными. Система схемы типов (schema model). Синтаксис для схем, понимаемых программами. • Протоколы запросов и профилей. Модель данных RDF • Imposes structural constraints on the expression of application data models: – For consistent encoding, exchange and processing of metadata. • Enables resource description communities to define their own semantics. • Provides for structural inter-operability. Модель данных RDF • Направленный размеченный граф. • Элементы модели: – Ресурс - Resource, – Свойство - Property, – Значение - Value, – Утверждение - Statement. Примитивы RDF модели Property Type Resource Value Value Statement Простой пример Author Resource “Mark” Простой пример creator “Mark” Page.html title “Mark’s Homepage” Базовая RDF модель • Resources: – All things being described by RDF expressions, – Named by URI. • Properties: – A specific aspect, characteristic, attribute, or relation used to describe a resource. • How the characteristics of properties are expressed? --> RDF schema. Spring 2010 mark.baker@computer.org Базовая модель RDF • Утверждения (Statements): – A specific resource together with a named property plus the value of that property for that resource, – A statement consists of three elements: 1. Subject (resource), 2. Predicate (property), 3. Object (value). Spring 2010 mark.baker@computer.org Базовая модель RDF • Пример: Ora Lassila is the creator of the resource http://www.w3.org/Home/Lassila. Subject (Resource) http://www.w3.org/Home/Lassila Predicate (Property) Creator Object (Value) "Ora Lassila" Базовая модель RDF "http://www.w3.org/Home/Lassila” Ora Lassila • The direction of the arrow is important. • The arc always starts at the subject and points to the object of the statement. • The simple diagram above may also be read "http://www.w3.org/Home/Lassila has creator Ora Lassila", or in general "<subject> HAS <predicate> <object>". Базовый синтаксис RDF • The RDF data model provides an abstract, conceptual framework for defining and using metadata. • A concrete syntax, such as XML, is needed for the purposes of creating and exchanging this metadata. • RDF also requires the XML namespace facility to precisely associate each property with the schema that defines the property Базовый синтаксис RDF Утверждение: Ora Lassila is the creator of the resource http://www.w3.org/Home/Lassila. Запись в формате RDF/XML: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF> Контейнеры • Часто возникает необходимость ссылаться на коллекцию ресурсов: – Например, нужно сказать, что документ был составлен более чем одним человеком, или перечислить студентов курса, или перечислить программные модули в пакете. • Для выполнения описания таких списков ресурсов или литералов используются RDF контейнеры. Модель контейнеров • Bag: – Не упорядоченный список ресурсов или литералов, в котором не важен порядок обработки его частей. • Sequence: – Упорядоченный список ресурсов или литералов, например, список значений, упорядоченных по алфавиту. • Alternative: – Список ресурсов или литералов, который представляет собой альтернативы для (одного) значения свойства : • Например, список зеркальных Интернет сайтов, в которых может быть найден ресурс. Модель контейнеров типа Bag The students in course 6.001 are Amy, Tim, John, Mary, and Sue. Модель контейнеров The students in course 6.001 are Amy, Tim, John, Mary, and Sue. <rdf:RDF> <rdf:Description about="http://mycollege.edu/courses/6.001"> <s:students> <rdf:Bag> <rdf:li resource="http://mycollege.edu/students/Amy"/> <rdf:li resource="http://mycollege.edu/students/Tim"/> <rdf:li resource="http://mycollege.edu/students/John"/> <rdf:li resource="http://mycollege.edu/students/Mary"/> <rdf:li resource="http://mycollege.edu/students/Sue"/> </rdf:Bag> </s:students> </rdf:Description> </rdf:RDF> Синтаксис RDF • The RDF Model defines the formal relationships among resources, properties and values. • The Syntax is required to... – Store instances of the model into files, – Communicate files from one application to another. • All based on W3C XML eXtensible Markup Language: – http://www.w3.org/XML Spring 2010 mark.baker@computer.org Bringing it together • RDF Metadata transmission: – Embedded (e.g. <META>), transmitted with resource (HTTP), trusted 3rd Party (HTTP GET). • RDF Data Model: – Support consistent encoding, exchange and processing of metadata… critical when aggregating data from multiple sources. • RDF Schema: – Declare, define, reuse vocabularies. RDF Анализатор (Parser) • Имеется хороший грамматический анализатор RDF на web-сайте организации W3С: http://www.w3.org/RDF/Validator/ This RDF parser will tell you if your XML is in the proper RDF format. Он-лайн валидаторы RDF документов • W3C's RDF Validation Service (http://www.w3.org/RDF/Validator/) is useful when learning RDF. • Here you can experiment with RDF files. • The online RDF Validator parses your RDF document, checks your syntax, and generates tabular and graphical views of your RDF document. • Copy and paste the example below into W3C's RDF validator: <?xml version="1.0"?> <rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:si="http://www.w3schools.com/rdf/"> <rdf:Description rdf:about=http://www.w3schools.com> <si:title>W3Schools.com</si:title> <si:author>Jan Egil Refsnes</si:author> </rdf:Description> </rdf:RDF> Проверка и визуализация созданных RDF документов • Enter a URI or paste an RDF/XML document into the text field above. A 3tuple (triple) representation of the corresponding data model as well as an optional graphical visualization of the data model will be displayed. • Check by Direct Input • Display Result Options: Triples and/or Graph: Graph format: • Paste an RDF/XML document into the following text field to have it checked. More options are available in the Extended interface. • Check by URI • Display Result Options: Triples and/or Graph: Graph format: • Enter the URI for the RDF/XML document you would like to check. More options are available in the Extended interface. Результаты проверки Основные элементы RDF • Основными элементами RDF являются: – корневой элемент <RDF>, – элемент <Description>, который идентифицирует ресурс. • Элемент <rdf:RDF> – <rdf:RDF> is the root element of an RDF document. It defines the XML document to be an RDF document. It also contains a reference to the RDF namespace: • Например: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> ...здесь записывается описание... </rdf:RDF> Элемент <rdf:Description> • The <rdf:Description> Element – Элемент <rdf:Description> определяет ресурс с атрибутом “about”. – Элемент <rdf:Description> содержит элементы, которые описывают данный ресурс: • Например: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan</cd:artist> <cd:country>USA</cd:country> <cd:company>Columbia</cd:company> <cd:price>10.90</cd:price> <cd:year>1985</cd:year> </rdf:Description> </rdf:RDF> • • Элементы artist, country, company, price и year определены в пространстве имен http://www.recshop.fake/cd#. Данное пространство имен находится вне RDF (и не является частью RDF). RDF описывает только framework. Элементы artist, country, company, price и year должны быть определены в каком-то другом месте (company, organization, person, etc). Задание свойств в атрибутах • Элементы свойств (property elements) также могут быть описаны в виде атрибутов (а не в виде элементов): <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque" cd:artist="Bob Dylan" cd:country="USA" cd:company="Columbia" cd:price="10.90" cd:year="1985" /> </rdf:RDF> Задание свойств в виде ресурсов • Элементы описания свойств (property elements) также могут быть определены в виде ресурсов: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" /> ... … </rdf:Description> </rdf:RDF> • В данном примере, свойство artist не имеет свойство (value), а использует ссылку (reference) на ресурс (resource), который содержит информацию о данном художнике (artist). rdf:Description + rdf:type • • Существует еще один способ представления в виде XML. Он делает очень понятным, что выполняется описание чего-то, что это имеет некоторый конкретный тип (type) (класс) : <?xml version="1.0"?> <rdf:Description rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> This is read as: "This is a Description about the resource http://www.china.org/geography/rivers#Yangtze. This resource is an instance of the River type (class). The http://www.china.org/geography/rivers#Yangtze resource has a length of 6300 kilometers, a startingLocation of western China's Qinghai-Tibet Plateau, and an endingLocation of the East China Sea." Note: this form of describing a resource is called the "long form". The form we have seen previously is an abbreviation of this long form. An RDF Parser interprets the abbreviated form as if it were this long form. Варианты описания • Альтернативно можно использовать атрибут rdf:ID вместо атрибута rdf:about, как показано ниже: <?xml version="1.0"?> <rdf:Description rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> Эквивалентные представления! <?xml version="1.0"?> <rdf:Description rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> В литературе по RDF данный пример Обычно показывается в такой форме. <?xml version="1.0"?> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> RDF контейнеры • RDF контейнеры используются для описания группы объектов (things). • The following RDF elements are used to describe groups: – <Bag>, – <Seq>, and – <Alt>. • RDF Terms – In the examples above we have talked about "list of values" when describing the container elements. – In RDF these "list of values" are called members. • So, we have the following: – A container is a resource that contains things – The contained things are called members (not list of values) Элемент <rdf:Bag> • Элемент <rdf:Bag> используется для описания списка значений, которые не должны находиться в заданном порядке. • Элемент <rdf:Bag> может содержать повторяющиеся значения. • Например: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:artist> <rdf:Bag> <rdf:li>John</rdf:li> <rdf:li>Paul</rdf:li> <rdf:li>George</rdf:li> <rdf:li>Ringo</rdf:li> </rdf:Bag> </cd:artist> </rdf:Description> </rdf:RDF> Элемент <rdf:Seq> • Элемент <rdf:Seq> – The <rdf:Seq> element is used to describe an ordered list of values (For example, in alphabetical order). – The <rdf:Seq> element may contain duplicate values. • Example <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:artist> <rdf:Seq> <rdf:li>George</rdf:li> <rdf:li>John</rdf:li> <rdf:li>Paul</rdf:li> <rdf:li>Ringo</rdf:li> </rdf:Seq> </cd:artist> </rdf:Description> </rdf:RDF> Элемент <rdf:Alt> • The <rdf:Alt> element is used to describe a list of alternative values (the user can select only one of the values). • Пример: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:format> <rdf:Alt> <rdf:li>CD</rdf:li> <rdf:li>Record</rdf:li> <rdf:li>Tape</rdf:li> </rdf:Alt> </cd:format> </rdf:Description> </rdf:RDF> RDF коллекции • • RDF коллекции описывают группы, которые collections describe groups that can ONLY contain the specified members. The rdf:parseType = "Collection" Attribute – As seen in the previous chapter, a container says that the containing resources are members - it does not say that other members are not allowed. – RDF collections are used to describe groups that can ONLY contain the specified members. – A collection is described by the attribute rdf:parseType="Collection". • Пример: <?xml version="1.0"?> <rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:cd="http://recshop.fake/cd#"> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles"> <cd:artist rdf:parseType="Collection"> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/> </cd:artist> </rdf:Description> </rdf:RDF> Язык RDF Schema (RDFS) • RDF Schema (RDFS) is an extension to RDF. – RDF describes resources with classes, properties, and values. – In addition, RDF also needs a way to define applicationspecific classes and properties. Application-specific classes and properties must be defined using extensions to RDF. – One such extension is RDF Schema. • RDF Schema does not provide actual application-specific classes and properties. • Instead RDF Schema provides the framework to describe application-specific classes and properties. • Classes in RDF Schema are much like classes in object oriented programming languages. This allows resources to be defined as instances of classes, and subclasses of classes. • Пример, демонстрирующий некоторые возможности языка RDFS: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.animals.fake/animals#"> <rdf:Description rdf:ID="animal"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> </rdf:Description> <rdf:Description rdf:ID="horse"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#animal"/> </rdf:Description> </rdf:RDF> • In the example above, the resource "horse" is a subclass of the class "animal". Сокращенный пример • Так как класс RDFS (class) является RDF ресурсом, то можно предыдущий пример описать в более краткой форме – используя rdfs:Class вместо rdf:Description и – опустив элемент rdf:type : <?xml version="1.0"?> <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmlns:rdfs=“http://www.w3.org/2000/01/rdf-schema#” xml:base=“http://www.animals.fake/animals#”> <rdfs:Class rdf:ID="animal" /> <rdfs:Class rdf:ID="horse"> <rdfs:subClassOf rdf:resource="#animal"/> </rdfs:Class> </rdf:RDF> RDF Dublin Core Metadata Initiative • • • The Dublin Core Metadata Initiative (DCMI) has created some predefined properties for describing documents. The Dublin Core is a set of predefined properties for describing documents. The first Dublin Core properties were defined at the Metadata Workshop in Dublin, Ohio in 1995 and is currently maintained by the Dublin Core Metadata Initiative. Property Contributor Definition An entity responsible for making contributions to the content of the resource Coverage The extent or scope of the content of the resource Creator An entity primarily responsible for making the content of the resource Format The physical or digital manifestation of the resource Date Description Identifier A date of an event in the lifecycle of the resource An account of the content of the resource An unambiguous reference to the resource within a given context Language A language of the intellectual content of the resource Publisher An entity responsible for making the resource available Relation Rights A reference to a related resource Information about rights held in and over the resource Source A Reference to a resource from which the present resource is derived Subject Title Type A topic of the content of the resource A name given to the resource The nature or genre of the content of the resource Пример RDF описания • The following example demonstrates the use of some of the Dublin Core properties in an RDF document: <?xml version="1.0"?> <rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:dc= "http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://www.w3schools.com"> <dc:description>W3Schools - Free tutorials</dc:description> <dc:publisher>Refsnes Data as</dc:publisher> <dc:date>2008-09-01</dc:date> <dc:type>Web Development</dc:type> <dc:format>text/html</dc:format> <dc:language>en</dc:language> </rdf:Description> </rdf:RDF> Классы RDFS / RDF Element Class of Subclass of rdfs:Class All classes rdfs:Datatype Data types Class rdfs:Resource All resources Class rdfs:Container Containers Resource rdfs:Literal Literal values (text and numbers) Resource rdf:List Lists Resource rdf:Property Properties Resource rdf:Statement Statements Resource rdf:Alt Containers of alternatives Container rdf:Bag Unordered containers Container rdf:Seq Ordered containers Container rdfs:ContainerMembers hipProperty Container membership properties Property rdf:XMLLiteral XML literal values Literal RDFS / RDF Properties RDF Attributes • Иерархия классов OWL и RDF/RDFS (отношения подклассов). Переход от XML документов к RDF документам Цель языка RDF • Целью языка RDF (Resource Description Framework) является предоставление стандартного способа описания данных «о чем-либо». • Ниже показан пример XML документа, который описывает данные (specifies data) о китайской реке Янцзы (China's Yangtze river): <?xml version="1.0"?> <River id="Yangtze” xmlns="http://www.geodesy.org/river"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> «Это данные об реке Yangtze (Янцзы). Она имеет длину 6300 киллометров. Начинается startingLocation в западном China's Qinghai-Tibet Plateau. Заканчивается endingLocation в East China Sea." Переход от XML к RDF Преобразование XML документа таким образом, чтобы он также стал правильным RD XML <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze.xml “преобразуем" <?xml version="1.0"?> RDF <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze.rdf RDF формат 1 RDF предоставляет ID атрибут для идентификации описываемого ресурса (reso 2 Атрибут ID определен в пространстве имен RDF. <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> 3 Добавляем к пространству имен символ «идентификации фрагмента». Moving from XML to RDF Spring 2010 mark.baker@computer.org Переход от XML к RDF Resource Property Value Spring 2010 mark.baker@computer.org RDF формат (2) 2 Идентификаторы описываемого ресурса. Дан ресурс являет экземпляром класса River. 1 Задается тип <?xml version="1.0"?> (класс) ресурса, <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> который описывается. <River rdf:ID="Yangtze“ 3 Это свойства и атрибуты, заданного типа (класса). xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> 4 Это значения свойств. Договоренности о задании пространств имен Ответ: RDF очень строго относится к уникальной идентификации объектов – уникальной идентификации типа (класса) и уникальной идентификации свойств. При объединении заданного пространства имен с типом, получается уникальный идентификатор типа, например, http://www.geodesy.org/river#River При объединении заданного пространства имен со свойством, получается e уникальный идентификатор свойства, например: Хорошая практика Хорошая практика Вопрос: Зачем символ "#" помещается в конец пространства имен? Например: xmlns="http://www.geodesy.org/river#" http://www.geodesy.org/river#length http://www.geodesy.org/river#startingLocation http://www.geodesy.org/river#endingLocation Таким образом, добавление символа "#" является просто способом отделения пространства имен от имени типа и имени свойства. RDF формат <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Class rdf:ID="Resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="uri"> <property> value </property> <property> value </property> ... </Class> </rdf:RDF> Преимущества использования RDF формата Суммарный эффект Интероперабильность • • Можно задать вопрос: «Зачем разработчик должен беспокоиться о том, чтобы создаваемые XML документы соответствовали RDF формату?" Ответ: в результате Вы получаете несколько преимуществ: – Если RDF формат будет широко использоваться, то это поможет сделать язык XML более подходящим для взаимодействия (интероперабельным): • Программные инструменты могут сразу описать структуру, «данный элемент имеет следующий тип (класс), а здесь описаны его свойства”. • RDF способствует использованию стандартизированных словарей (онтологий) ... стандартизированных типов (классов) и стандартизированных свойств. – RDF формат предоставляет более структурированный подход к проектированию XML документов. RDF формат является стандартным (regular), постоянно повторяющимся (recurring) шаблоном. – Он позволяет быстро выявить слабости и несогласованности в разработке XML документов, которые не соответствуют RDF формату (non-RDF-compliant XML designs). Он помогает лучше понимать описываемые данные! – Разработчик получает преимущества от обоих стандартов : • Можно использовать стандартные XML редакторы и валидаторы для создания, редактирования и проверки XML документа. • Можно использовать RDF инструменты для выполнения логического вывода (inferencing) на описываемых данных. – RDF формат подготавливает используемые данные для работы в Semantic Web! Недостатки использования RDF формата • Большее количество ограниченный: RDF формат ограничивает разработчика в том, как он может проектировать свой XML (например, он не проектировать свой XML любым произвольным способом). • RDF использует пространства имен для уникальной идентификации типов (классов), свойств и ресурсов. В связи с этим нужно хорошо понимать работу с пространствами имен (namespaces). • Необходимость изучить другой XML словарь: для использования RDF формата необходимо изучить словарь языка RDF. Уникально идентифицируй ресурс • Раннее уже отмечалось, что RDF очень требователен к уникальной идентификации типов (классов) и свойств. Язык RDF также очень требователен и к уникальной идентификации ресурсов, например, Это описываемый ресурс. Требуется уникально идентифицировать этот ресурс. <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> Атрибут rdf:ID • • Значением атрибута rdf:ID является “относительный идентификатор URI". “Абсолютный URI" получается в результате конкатенации URL адреса XML документа с символом"#”, а затем со значением rdf:ID, например, <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> Yangtze.rdf Предположим, что RDF/XML документ располагается по URL адресу: http://www.china.org/geography/rivers. Тогда полным URI для данного ресурса будет: http://www.china.org/geography/rivers#Yangtze Атрибут xml:base • • • На предыдущем слайде было показано, как URL адрес документа используется в качестве основы для URI идентификатора. Однако основываться на местоположении документа очень не надежно: URL адрес будет меняться при перемещении документа или его копировании в другое место. Более надежным решением является задание базового URI в документе, например: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> URI ресурса = конкатенация (xml:base, '#', rdf:ID) = конкатенация (http://www.china.org/geography/rivers, '#', "Yangtze") = http://www.china.org/geography/rivers#Yangtze Атрибут rdf:about • Вместо идентификации ресурса с помощью относительного URI (который затем требует присоединения базового URI), можно задавать полный идентификатор. Однако, для этого нужно использовать вместо атрибута rdf:ID, атрибут rdf:about: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> Триплет = (ресурс-свойство-значение) http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#length of 6300 kilometers resource property value http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#startingLocation of western China's ... resource property value http://www.china.org/geography/rivers#Yangtze has a http://www.geodesy.org/river#endingLocation of East China Sea resource property value RDF формат = триплеты! • Фундаментальным шаблоном проектирования RDF является представление XML данных в виде набора триплетов (resource/property/value)! значение свойства-A значение свойства-B <?xml version="1.0"?> <Resource-A> <property-A> <Resource-B> <property-B> <Resource-C> <property-C> Value-C </property-C> </Resource-C> </property-B> </Resource-B> </property-A> </Resource-A> Notice that the RDF design pattern is an alternating sequence of resource-property This pattern is known as "striping". Значением свойства может быть литерал (например, length имеет значение 6300 км.). Но кроме этого, значением свойства может быть другой ресурс, как показано выше (например, свойство-A имеет значение Resource-B, свойство-B имеет значение ResourceC). Далее будет показан пример свойства, которое в качестве значения имеет другой ресурс. Соглашение об именовании • Хорошим стилем именования является использование больших букв в начале имени типа (class) и использование маленьких букв в начале имени свойства (property). – Это помогает быстрее выделять шаблоны (striping pattern). <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:about=“http://www.china.org/geography/rivers#Yangtze” большие xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> маленькие <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> Графовая RDF модель Легенда: Эллипс обозначает «Ресурс» Прямоугольник обозначает «литеральное строковое значение» rdf:Description + rdf:type • • Имеется также и другой способ представления XML. Этот способ делает очень понятным, что что-то описывается, и это делает очень явным то, какой тип (class) объекта описывается : <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns="http://www.geodesy.org/river#"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> </rdf:RDF> Это читается следующим образом: «Это Описание (Description) ресурса http://www.china.org/geography/rivers#Yangtze. Данный ресурс является экземпляром типа (класса) River. Ресурс http://www.china.org/geography/rivers#Yangtze имеет длину (length) “6300 kilometers”, startingLocation - western China's Qinghai-Tibet Plateau, а endingLocation - East China Sea." Замечание: такая форма описания ресурса называется «полной формой». Та форма, которая использовалась ранее является сокращением такой полной формы. RDF анализаторы понимают сокращенную форму, как если бы использовалась полная форма. Варианты описания • Альтернативно можно использовать rdf:ID, вместо атрибута rdf:about, как показано ниже: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:ID="Yangtze" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> </rdf:RDF> Эквивалентные представления! <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> </rdf:RDF> <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about=http://www.china.org/geography/rivers#Yangtze xmlns="http://www.geodesy.org/river#"> <rdf:type rdf:resource="http://www.geodesy.org/river#River"/> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </rdf:Description> </rdf:RDF> Замечание: в литературе по RDF данный пример обычно показывается в этой форме. Пространство имен RDF http://www.w3.org/1999/02/22-rdf-syntax-ns# ID about type resource Description Терминология • В литературе по RDF используется следующая терминология: – Субъект (Subject) – этот термин ссылается на элемент, который играет роль ресурса. – Предикат (Predicate) – этот термин ссылается на элемент, который играет роль свойства (ресурса). – Объект (Object) – этот термин ссылается на элемент, который играет роль значения (свойства). Субъект предикат Объект Эквивалентно! Ресурс свойство Значение RDF Анализатор (Parser) • Имеется очень хороший RDF анализатор на web-сайте организации W3C: http://www.w3.org/RDF/Validator/ This RDF parser will tell you if your XML is in the proper RDF format. Do Lab1 Пример #2 Изменим XML документ, таким образом, чтобы он согласовывался с языком RDF: <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <Dam id="ThreeGorges" xmlns="http://www.geodesy.org/dam"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </River> Yangtze2.xml Отметим два типа (класса) River Экземпляр: Yangtze Свойства: • length • startingLocation • endingLocation Dam Экземпляр: ThreeGorges Свойства: • name • width • height • cost Экземпляр Dam находится не на правильном месте Dam <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <Dam id="ThreeGorges" xmlns="http://www.geodesy.org/dam"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </River> Типы (классы) содержат свойства. Здесь показан тип River, который содержит свойства - length, startingLocation и endingLocation. Также показано, что тип River содержит другой тип - Dam. Таким образом имеется Ресурс который содержит другой Ресурс. Это не согласуется с RDF шаблоном проектирования. (как было сказано, преимуществом использования RDF – выявление несогласованностей в XML проектировании.) Значением свойства должен быть литерал или ресурс <length>6300 kilometers</length> свойство Value is a Literal свойство Значением является ресурс <obstacle> <Dam id="ThreeGorges" xmlns="http://www.geodesy.org/dam"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </obstacle> Измененный XML (для соответствия формату RDF) <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle> <Dam id="ThreeGorges" xmlns="http://www.geodesy.org/dam"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </obstacle> </River> Yangtze2,v2.xml «Река (river) Yangtze имеет препятствие (obstacle), которое является дамбой (Dam) ThreeGorges. Эта дамба (Dam) имеет имя (name) - The Three Gorges Dam. Она имеет длину 1.5 miles, высоту 610 feet и стоимость $30 billion." RDF формат <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#" Добавим xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle> <Dam rdf:ID="ThreeGorges" xmlns="http://www.geodesy.org/dam#"> <name>The Three Gorges Dam</name> Изменим id на rdf:ID <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </obstacle> Добавим символ '#’ </River> </rdf:RDF> Как обычно, возможны и другие представления с использованием атрибута rdf:about и элемента rdf:Description. RDF Модель (граф) Теперь предположим, что кто-то уже создал документ, содержащий информацию о дамбе «Three Gorges Dam»: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Dam rdf:ID="ThreeGorges“ xmlns="http://www.geodesy.org/dam#" xml:base="http://www.china.org/geography/rivers"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </rdf:RDF> Three-Gorges-Dam.rdf Тогда мы можем сослаться на ресурс «Three Gorges Dam» с помощью атрибута rdf:resource, как показано ниже: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle rdf:resource="http://www.china.org/geography/rivers#ThreeGorges"/> </River> </rdf:RDF> Yangtze.rdf Замечание: ссылка делается на ресурс, а не на файл Почему используется такая ссылка: <obstacle rdf:resource="http://www.china.org/geography/rivers#ThreeGorges"/> а не такая: <obstacle rdf:resource="http://www.china.org/geography/rivers/Three-Gorges-Dam.rdf"/> То есть, почему не используется ссылка на «файл»? Ответ: 1. Что будет, если файл переместится? Тогда данная ссылка будет не верна. 2. By using an identifier of the Three Gorges Dam, and keeping a particular file unspecified, then an "aggregator tool" will be able to collect information from all the files that talk about the Three Gorges Dam resource (see next slide). Do Lab2 Любой, в Любом месте, в Любое время может сказать что-нибудь о Ресурсе • Во всех рассмотренных экземплярах были предоставлены уникальные идентификаторы ресурсов, например, http://www.china.org/geography/rivers#Yangtze • Следовательно, если в другом RDF документе используется ресурс с таким же идентификатором, то данные которые описаны в этом документе являются дополнительными данными об описанном нами ресурсе. • Средства интеграции (aggregator tool) будут способны собирать все данные о ресурсе и показывать объединенный набор данных для описанного нами ресурса. • Это очень мощная возможность! Что лучше rdf:ID или rdf:about ? • Когда должен использоваться rdf:ID? А когда должен использоваться rdf:about? – When you want to introduce a resource, and provide an initial set of information about a resource use rdf:ID – When you want to extend the information about a resource use rdf:about • The RDF philosophy is akin to the Web philosophy. That is, anyone, anywhere, anytime can provide information about a resource. <?xml version="1.0"?> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> http://www.china.org/geography/rivers/yangtze.rdf <?xml version="1.0"?> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <name>Dri Chu - Female Yak River</name> <name>Tongtian He, Travelling-Through-the-Heavens River</name> <name>Jinsha Jiang, River of Golden Sand</name> </River> http://www.encyclopedia.org/yangtze-alternate-names.rdf Система интеграции собирает данные (aggregator tool) собирает данные о реке Yangtze <?xml version="1.0"?> <River rdf:about="http://www.china.org/geography/rivers#Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <name>Dri Chu - Female Yak River</name> <name>Tongtian He, Travelling-Through-the-Heavens River</name> <name>Jinsha Jiang, River of Golden Sand</name> </River> Aggregated Data! A distributed network of data <?xml version="1.0"?> <Dam rdf:ID="ThreeGorges" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/dam#" xml:base="http://www.china.org/geography/rivers"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> Другой пример агрегирования http://www.encyclopedia.org/three-gorges-dam.rdf Aggregate! <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle rdf:resource="http://www.china.org/geography/rivers #ThreeGorges"/> </River> http://www.china.org/geography/rivers/yangtze.rdf <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xml:base="http://www.china.org/geography/rivers"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle> <Dam rdf:ID="ThreeGorges" xmlns="http://www.geodesy.org/dam#"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </obstacle> </River> Отметим, что ссылка на ресурс ThreeGorges Dam была заменена н Ту информацию, которую интеграт смог найти об этом ресурсе! Пример #3 Отметим, что в этом XML документе не задан уникальный идентификатор: XML <?xml version="1.0"?> <River xmlns="http://www.geodesy.org/river#"> <name>Yangtze</name> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze3.xml RDF <?xml version="1.0"?> <River xmlns="http://www.geodesy.org/river#"> <name>Yangtze</name> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze3.rdf Данный RDF является идентичным XML документу! Интерпретация RDF <?xml version="1.0"?> <River xmlns="http://www.geodesy.org/river#"> <name>Yangtze</name> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze3.rdf This is read as: "This is an instance of the River type (class). The River has a name of Yangtze, a length of 6300 kilometers, a startingLocation of western China's Qinghai-Tibet Plateau, and an endingLocation of the East China Sea." В данном документе ресурс является анонимным – он не имеет идентификатора. Недостаток анонимных ресурсов <?xml version="1.0"?> <River xmlns="http://www.geodesy.org/river#"> <name>Yangtze</name> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> http://www.china.org/geography/rivers/yangtze.rdf <?xml version="1.0"?> <River xmlns="http://www.geodesy.org/river#"> <name>Yangtze</name> <name>Dri Chu - Female Yak River</name> <name>Tongtian He, Travelling-Through-the-Heavens River</name> <name>Jinsha Jiang, River of Golden Sand</name> </River> http://www.encyclopedia.org/yangtze-alternate-names.rdf Aggregate An aggregator tool will not be able to determine if these documents are talking about the same resource. Пример #4 XML <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" xmlns:uom="http://www.measurements.org/units-of-measure"> <length uom:units="kilometers">6300</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze4.xml RDF <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length> <rdf:Description> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </rdf:Description> </length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze4.rdf <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length uom:units="kilometers">6300</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze4.xml RDF does not allow attributes on the properties (except for special RDF attributes such as rdf:resource). So we need to make the uom:units attribute a child element. Your first instinct might be to modify length to have two child elements: <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length> <value>6300</value> <uom:units>kilometers</uom:units> </length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> However, now the length property has as its value two values. RDF only binary relations i.e., a single value for a property. Атрибут rdf:value 6300 length kilometers Свойство length имеет два значения - 6300 и kilometers. RDF предоставляет специальное свойство rdf:value, которое можно использовать для задания «основного» значения. В данном примере, 6300 это основное значение, а kilometers это значение, которое предоставляет дополнительную информацию о основном значении. RDF формат Анонимный ресурс <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length> <rdf:Description> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </rdf:Description> </length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze4.rdf Следует читать: «Река (River) Yangtze имеет длину (length), значение которой является ресурсом, имеющим значение 6300 и единицу измерения kilometers. Преимущества анонимных ресурсов <rdf:Description> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </rdf:Description> • • • • • Показано описание анонимного ресурса. Единственной его целью является предоставление контекста для двух свойств (properties). Другим RDF документам не потребуется развивать данный ресурс. В связи с этим, в данном случае нет необходимости задавать данному ресурсу идентификатор. В таком случае разумно использовать автономный ресурс. Графовая RDF модель Легенда: Анонимный ресурс (также называемый «пустой вершиной» "blank node"). Это ресурс без идентификатора. (Замечание: RDF парсеры обычно генерируют для анонимных ресурсов уникальные идентификаторы, чтобы отличать один анонимный ресурс от другого.) rdf:parseType="Resource" Если значение свойства состоит из нескольких значений, то одной из возможностей его описания является создание анонимного ресурса. RDF предоставляет специальное сокращение (shorthand) rdf:parseType="Resource", чтобы не создавать элемент rdf:Description: <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns=http://www.geodesy.org/river# xmlns:uom="http://www.measurements.org/units-of-measure#"> <length rdf:parseType="Resource"> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> Yangtze4,v2.rdf Данная запись аналогична записи анонимного ресурса на предыдущем слайде. Эквивалентно! <length> <rdf:Description> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </rdf:Description> </length> <length rdf:parseType="Resource"> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </length> Do Lab3 Итоговый пример Требуется изменить следующий XML документ, чтобы он также стал правильным (valid) RDF документом: <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length uom:units="kilometers">6300</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <Dam id="ThreeGorges" xmlns="http://www.geodesy.org/dam"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </River> Yangtze.xml Смотри следующий слайд --> RDF формат! <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <River rdf:ID="Yangtze“ xmlns="http://www.geodesy.org/river#" xmlns:uom="http://www.measurements.org/units-of-measure#" xml:base="http://www.china.org/geography/rivers"> <length rdf:parseType="Resource"> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> <obstacle> <Dam rdf:ID="ThreeGorges" xmlns="http://www.geodesy.org/dam#"> <name>The Three Gorges Dam</name> <width>1.5 miles</width> <height>610 feet</height> <cost>$30 billion</cost> </Dam> </obstacle> </River> </rdf:RDF> Yangtze.rdf После относительно небольших изменений данный XML документ можно использовать как с помощью XML инструментов , так и с помощью and RDF инструментов! Графовая RDF модель Пример #5 Требуется изменить следующий XML документ, чтобы он также стал правильным (valid) RDF документом: <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length uom:units="kilometers">6300</length> <maxWidth uom:units="meters">175</maxWidth> <maxDepth uom:units="meters">55</maxDepth> </River> <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xmlns:uom="http://www.measurements.org/units-of-measure#"> <length rdf:parseType="Resource"> <rdf:value>6300</rdf:value> <uom:units>kilometers</uom:units> </length> <maxWidth rdf:parseType="Resource"> <rdf:value>175</rdf:value> <uom:units>meters</uom:units></maxWidth> <maxDepth rdf:parseType="Resource"> <rdf:value>55</rdf:value> <uom:units>kilometers</uom:units> </maxDepth> </River> Yangtze5.xml Это только один из способов выполнения этого. Далее будет показан более хороший способ - используя «типизированные литералы". (См. следующий слайд) Yangtze5.rdf Альтернативный RDF формат <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length rdf:datatype="http://www.uom.org/distance#kilometer">6300</length> <maxWidth rdf:datatype="http://www.uom.org/distance#meter">175</maxWidth> <maxDepth rdf:datatype="http://www.uom.org/distance#meter">55</maxDepth> </River> Yangtze5.rdf С помощью rdf:datatype можно задать значению свойства метку типа данных (datatype.) Значение rdf:datatype действует в качестве семантической метки для типа данных (datatype) значения. Такое значение называется типизированным литералом (typed literal). Для данного примера должно быть задано пространство имен, http://www.uom.org/distance#, которое определяет два типа данных (datatypes) – kilometer и meter. На следующем слайде показано, как это сделать с помощью XML Schemas. Определение типов данных (datatypes) kilometer и meter с помощью XML Schemas <?xml version="1.0" encoding="UTF-8"?> <schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.uom.org/distance#"> <simpleType name="kilometer"> <restriction base="integer"> </restriction> </simpleType> <simpleType name="meter"> <restriction base="integer"> </restriction> </simpleType> </schema> uom.xsd Другой пример использования rdf:datatype <?xml version="1.0"?> <Person rdf:ID="JohnSmith" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.person.org#"> <age rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">30</age> </Person> В данном примере задается, что значение (30) возраста (age) является не отрицательным целым числом nonNegativeInteger (данный тип определен в пространстве имен XML Schema). Пример #6 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <WeatherReading xmlns="http://www.meteorology.org#"> <Weather> <temperature>-2 degrees Celsius</temperature> <barometer>30.4 (rising)</barometer> </Weather> <Location xmlns="http://www.geodesy.org#"> <country>USA</country> <state>Massachusetts</state> <city>Boston</city> </Location> <datetime>January 22, 2003, 11:15 EST</datetime> </WeatherReading> WMUR_TV_WeatherReading.xml Общие замечания 1. Данный XML документ использует три типа (класса): WeatherReading Weather Location 2. Все 3 экземпляра типов являются анонимными. Следовательно, мы не можем получить пользу от других и другие не могут получить пользу от нас. Когда имеет смысл задавать идентификаторы для экземпляров? - В общем случае, корневой элемент должен иметь идентификатор. - Имеется множество информации о городе Boston. Давайте зададим идентификатор для экземпляра Location. Изменение 1: Добавление идентификаторов <?xml version="1.0"?> <WeatherReading id="BOS-012203-1115" xmlns="http://www.meteorology.org#"> <Weather> <temperature>-2 degrees Celsius</temperature> <barometer>30.4 (rising)</barometer> </Weather> <Location id="BOS" xmlns="http://www.geodesy.org#"> <country>USA</country> <state>Massachusetts</state> <city>Boston</city> </Location> <datetime>January 22, 2003, 11:15 EST</datetime> </WeatherReading> WMUR_TV_WeatherReading,v2.xml Изменение 2: Создание свойств для типов Weather и Location Типы (классы) содержат свойства. Необходимо обернуть типы Weather и Location в свойства (property): <?xml version="1.0"?> <WeatherReading id="BOS-012203-1115" xmlns="http://www.meteorology.org#"> <instrumentReading> <Weather> <temperature>-2 degrees Celsius</temperature> <barometer>30.4 (rising)</barometer> </Weather> </instrumentReading> <instrumentLocation> <Location id="BOS" xmlns="http://www.geodesy.org#"> <country>USA</country> <state>Massachusetts</state> <city>Boston</city> </Location> </instrumentLocation> <datetime>January 22, 2003, 11:15 EST</datetime> </WeatherReading> WMUR_TV_WeatherReading,v3.xml Полученный RDF формат! <?xml version="1.0"?> <WeatherReading rdf:ID="BOS-012203-1115" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.meteorology.org#" xml:base="http://www.wmur-tv.com/weather"> <instrumentReading> <Weather> <temperature>-2 degrees Celsius</temperature> <barometer>30.4 (rising)</barometer> </Weather> </instrumentReading> <instrumentLocation> <Location rdf:ID="BOS" xmlns="http://www.geodesy.org#" xml:base="http://www.airports.org/icao"> <country>USA</country> <state>Massachusetts</state> <city>Boston</city> </Location> </instrumentLocation> <datetime>January 22, 2003, 11:15 EST</datetime> </WeatherReading> WMUR_TV_WeatherReading.rdf Тип (класс) rdf:Bag • Тип rdf:Bag используется для представления не упорядоченной коллекции. Пример #7 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <Meeting id="XML-Design-Patterns" xmlns="http://www.business.org"> <attendees> <name>John Smith</name> <name>Sally Jones</name> </attendees> </Meeting> DesignMeeting.xml <?xml version="1.0"?> <Meeting rdf:ID="XML-Design-Pattern" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.business.org#"> <attendees> <rdf:Bag> <name>John Smith</name> <name>Sally Jones</name> </rdf:Bag> </attendees> </Meeting> DesignMeeting.rdf rdf:Bag makes it clear that this is an unordered collection of names. Тип (класс) rdf:Alt • Тип rdf:Alt используется для описания набора альтернативных свойств. Пример #8 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <Retailer id="BarnesAndNoble" xmlns="http://www.retailers.org"> <webLocation> <url>http://www.bn.com</url> <url>http://www.barnesandnoble.com</url> </webLocation> </Retailer> <?xml version="1.0"?> <Retailer rdf:ID="BarnesAndNoble" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.retailers.org#"> <webLocation> <rdf:Alt> <url>http://www.bn.com</url> <url>http://www.barnesandnoble.com</url> </rdf:Alt> </webLocation> </Retailer> BarnesAndNoble.xml BarnesAndNoble.rdf rdf:Alt makes it clear that the urls listed are alternates, i.e., choose one of them. Тип (класс) rdf:Seq • Тип rdf:Seq используется для описания последовательности (sequence) свойств. Пример #9 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <ToDoList id="MondayMeetings" xmlns="http://www.reminders.org"> <activities> <activity1>Meet with CEO at 10am</activity1> <activity2>Luncheon at The Eatery</activity2> <activity3>Flight at 3pm</activity3> </activities> </ToDoList> MyDaysActivities.xml <?xml version="1.0"?> <ToDoList rdf:ID="MondayMeetings" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.reminders.org#"> <activities> <rdf:Seq> <activity1>Meet with CEO at 10am</activity1> <activity2>Luncheon at The Eatery</activity2> <activity3>Flight at 3pm</activity3> </rdf:Seq> </activities> </ToDoList> MyDaysActivities.rdf rdf:Seq makes it clear that the activities listed are to be done in the sequence listed. Свойство rdf:li • Свойство rdf:li ("list item") предоставляется языком RDF для использования совместно с rdf:Bag, rdf:Alt или rdf:Seq. • The rdf:li property is provided for you to specify an item in a Bag/Alt/Seq. • An RDF Parser will replace each rdf:li with rdf:_1, rdf:_2, rdf:_3, etc. • The following slide recasts the previous examples using the rdf:li property. <?xml version="1.0"?> <Retailer rdf:ID="BarnesAndNoble" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.retailers.org#"> <webLocation> <rdf:Alt> <rdf:li>http://www.bn.com</rdf:li> <rdf:li>http://www.barnesandnoble.com</rdf:li> </rdf:Alt> </webLocation> </Retailer> BarnesAndNoble.rdf <?xml version="1.0"?> <ToDoList rdf:ID="MondayMeetings" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.reminders.org#"> <activities> <rdf:Seq> <rdf:li>Meet with CEO at 10am</rdf:li> <rdf:li>Luncheon at The Eatery</rdf:li> <rdf:li>Flight at 3pm</rdf:li> </rdf:Seq> </activities> </ToDoList> MyDaysActivities.rdf <?xml version="1.0"?> <Meeting rdf:ID="XML-Design-Pattern" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.business.org#"> <attendees> <rdf:Bag> <rdf:li>John Smith</rdf:li> <rdf:li>Sally Jones</rdf:li> </rdf:Bag> </attendees> </Meeting> DesignMeeting.rdf Пример #10 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <Catalogue xmlns="http://www.publishing.org#" xmlns:dc="http://pur1.org/metadata/dublin-core#"> <Book> <dc:Title>Lateral Thinking</dc:Title> <dc:Creator>Edward de Bono</dc:Creator> <dc:Date>1973</dc:Date> <ISBN>0-06-099325-2</ISBN> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> <Book> <dc:Title>Illusions: The Adventures of a Reluctant Messiah</dc:Title> <dc:Creator>Richard Bach</dc:Creator> <dc:Date>1977</dc:Date> <ISBN>0-440-34319-4</ISBN> <dc:Publisher>Dell Publishing Co.</dc:Publisher> </Book> <Book> <dc:Title>The First and Last Freedom</dc:Title> <dc:Creator>J. Krishnamurti</dc:Creator> <dc:Date>1954</dc:Date> <ISBN>0-06-064831-7</ISBN> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> </Catalogue> Barnes_and_Noble _BookCatalogue.xml Note: regrettably, the Dublin Core does not conform to the RDF naming conventions. Hence, you see properties with the first letter capitalized. Общие замечания 1. The XML document uses two types (classes): Catalogue Book 2. All type instances are anonymous. Consequently, we cannot benefit from others, and others cannot benefit from us. Where does it make sense to give the instance an identifier? - In general, the root element should have an identifier. - There is lots of information about each book instance. Let's give each book instance an identifier (the ISBN). Изменение1: Добавление идентификаторов <?xml version="1.0"?> <Catalogue id="BookCatalogue" xmlns="http://www.publishing.org#" xmlns:dc="http://pur1.org/metadata/dublin-core#"> <Book id="_0-06-099325-2"> <dc:Title>Lateral Thinking</dc:Title> <dc:Creator>Edward de Bono</dc:Creator> <dc:Date>1973</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> <Book id="_0-440-34319-4"> <dc:Title>Illusions: The Adventures of a Reluctant Messiah</dc:Title> <dc:Creator>Richard Bach</dc:Creator> <dc:Date>1977</dc:Date> <dc:Publisher>Dell Publishing Co.</dc:Publisher> </Book> <Book id="_0-06-064831-7"> <dc:Title>The First and Last Freedom</dc:Title> <dc:Creator>J. Krishnamurti</dc:Creator> <dc:Date>1954</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> </Catalogue> Why was an underscore placed in front of the ISBN? Answer: The ID datatype does not allow an identifier to begin with a digit. So, we (arbitrarily) decided to use an underscore. Barnes_and_Noble _BookCatalogue,v2.xml Notice that the ISBN elements were deleted and their values used as identifiers. Изменение 2: Создание свойств для типа Book Types (classes) contain properties. We need to wrap the Book type within a property: <?xml version="1.0"?> <Catalogue id="BookCatalogue" xmlns="http://www.publishing.org#" xmlns:dc="http://pur1.org/metadata/dublin-core#"> <item> <Book id="_0-06-099325-2"> <dc:Title>Lateral Thinking</dc:Title> <dc:Creator>Edward de Bono</dc:Creator> <dc:Date>1973</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> </item> <item> <Book id="_0-440-34319-4"> <dc:Title>Illusions: The Adventures of a Reluctant Messiah</dc:Title> <dc:Creator>Richard Bach</dc:Creator> <dc:Date>1977</dc:Date> <dc:Publisher>Dell Publishing Co.</dc:Publisher> </Book> </item> <item> <Book id="_0-06-064831-7"> <dc:Title>The First and Last Freedom</dc:Title> <dc:Creator>J. Krishnamurti</dc:Creator> <dc:Date>1954</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> </item> </Catalogue> Barnes_and_Noble _BookCatalogue,v3.xml Полученный RDF формат! <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Catalogue rdf:ID="BookCatalogue“ xmlns="http://www.publishing.org#" xmlns:dc="http://pur1.org/metadata/dublin-core#" xml:base="http://www.bn.com"> <item> <Book rdf:ID="_0-06-099325-2" xml:base="http://www.publishing.org/book"> <dc:Title>Lateral Thinking</dc:Title> <dc:Creator>Edward de Bono</dc:Creator> <dc:Date>1973</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> </item> <item> <Book rdf:ID="_0-440-34319-4" xml:base="http://www.publishing.org/book"> <dc:Title>Illusions: The Adventures of a Reluctant Messiah</dc:Title> <dc:Creator>Richard Bach</dc:Creator> <dc:Date>1977</dc:Date> <dc:Publisher>Dell Publishing Co.</dc:Publisher> </Book> … </item> Barnes_and_Noble_BookCatalogue.rdf </Catalogue> </rdf:RDF> Dublin Core (dc:) • Dublin Core это стандартный набор свойств: Content Intellectual Property Instance Title Subject Description Language Relation Coverage Source Creator Publisher Contributor Rights Date Type Format Identifier Note: many people use these properties in their HTML today. For example: <META NAME="DC.Creator" CONTENT="John Smith"> rdf:parseType="Collection" • This may be added as an attribute of a property to indicate that the contents of the property is a list of resources. • The following slide recasts the BookCatalogue example to use this list type. <?xml version="1.0"?> <Catalogue rdf:ID="BookCatalogue" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.publishing.org#" xmlns:dc="http://pur1.org/metadata/dublin-core#" xml:base="http://www.bn.com"> <books rdf:parseType="Collection"> <Book rdf:ID="_0-06-099325-2" xml:base="http://www.publishing.org/book"> <dc:Title>Lateral Thinking</dc:Title> <dc:Creator>Edward de Bono</dc:Creator> <dc:Date>1973</dc:Date> <dc:Publisher>Harper &amp; Row</dc:Publisher> </Book> <Book rdf:ID="_0-440-34319-4" xml:base="http://www.publishing.org/book"> <dc:Title>Illusions: The Adventures of a Reluctant Messiah</dc:Title> <dc:Creator>Richard Bach</dc:Creator> <dc:Date>1977</dc:Date> <dc:Publisher>Dell Publishing Co.</dc:Publisher> </Book> ... </books> </Catalogue> Barnes_and_Noble_BookCatalogue.rdf Do Lab4 Пример#11 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: <?xml version="1.0"?> <Article id="QuickBrownFox" xmlns="http://www.publishing.org"> <paragraph> The quick brown <bold>fox</bold> jumped over the lazy dog. An important person once said "<quote>Now is the time for all good men to come to the aid of their country</quote>" </paragraph> </Article> The paragraph contains "mixed content". QuickBrownFox.xml <?xml version="1.0"?> <Article rdf:ID="QuickBrownFox" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.publishing.org#"> <paragraph rdf:parseType="Literal"> The quick brown <bold>fox</bold> jumped over the lazy dog. An important person once said "<quote>Now is the time for all good men to come to the aid of their country</quote>" </paragraph> </Article> QuickBrownFox.rdf rdf:parseType="Literal" indicates that the content of paragraph is to be treated simply as literal XML, i.e., tools shouldn't try to parse the content into resource/property/value triples. rdf:parseType="Literal" • In all of the previous examples the data was structured as resource/property/value triples. • Sometimes it doesn't make sense to do such structuring – Example: with mixed content • In those cases we can simply indicate "hey, the content of this property is okay. Treat it as a literal XML string." Опасность использования rdf:parseType="Literal" • The advantage of structuring your XML as resource/property/value triples is enhanced interoperability. • When you use rdf:parseType="Literal" you lose the ability for a tool to instantly take advantage of the resource/property/value structure (since you are, by definition, saying that the data doesn't have this structure). • Lesson Learned: use rdf:parseType="Literal" sparingly! Пример #12 Требуется изменить следующий XML документ, так, чтобы он также был правильным (valid) RDF документом: XML <?xml version="1.0"?> <River id="Yangtze" xmlns="http://www.geodesy.org/river" length="6300 kilometers" startingLocation="western China's Qinghai-Tibet Plateau" endingLocation="East China Sea"/> Отметим, что используются атрибуты, а не дочерние элементы! Yangtze.xml RDF <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xmlns:r="http://www.geodesy.org/river#" r:length="6300 kilometers" r:startingLocation="western China's Qinghai-Tibet Plateau" r:endingLocation="East China Sea"/> Yangtze.rdf RDF формат также позволяет использовать атрибуты! Атрибуты • Recall that at the very beginning of this tutorial we said that a resource has properties (attributes). • Thus, a property can be represented either as a child element, or as an attribute. • (Of course, a property can only be represented as an attribute if it has a literal value, not a structured value.) Эквивалентно! <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#" xmlns:r="http://www.geodesy.org/river#" r:length="6300 kilometers" r:startingLocation="western China's Qinghai-Tibet Plateau" r:endingLocation="East China Sea"/> Do Lab5 Пример #13 Требуется изменить следующий XML документ, так, чтобы он также был правильным (val RDF документом: <?xml version="1.0"?> <Resume xmlns="http://www.resume.org#"> <Person xmlns="http://www.person.org#"> <name>John Smith</name> <phone>555-1212</phone> <email>abc@def.com</email> </Person> <experience> <Job> <startDate>1995-01-01</startDate> <endDate>1999-01-01</endDate> <title>researcher</title> <employer>Some Corp</employer> <employerHomepage>http://www.company.org</employerHomepage> <description>Cool stuff</description> </Job> </experience> <skills> <Skill name="Oracle" yrs="13"/> <Skill name="Java" yrs="3"/> </skills> <education> <Degree type="BS" school="RPI" year="1987"/> </education> </Resume> <?xml version="1.0"?> <Resume rdf:ID="JSmith-2003" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.resume.org#" xml:base="http://www.jsmith.com/resume"> <about> <Person xmlns="http://www.person.org#"> <name>John Smith</name> <phone>555-1212</phone> <email>abc@def.com</email> </Person> </about> <experience rdf:parseType="Collection"> <Job> <startDate>1995-01-01</startDate> <endDate>1999-01-01</endDate> <title>researcher</title> <employer> <Company xmlns="http://www.company.org#"> <name>Some Corp</name> <homepage>http://www.company.org</homepage> </Company> </employer> <description>Cool stuff</description> </Job> </experience> <skills rdf:parseType="Collection"> <Skill> <name>Oracle</name> <yearsExperience>13</yearsExperience> </Skill> <Skill> <name>Java</name> <yearsExperience>3 </yearsExperience> </Skill> </skills> <education rdf:parseType="Collection"> <Degree xmlns="http://www.schools.com#"> <type>BS</type> <school>RPI</school> <graduationYear>1987</graduationYear> </Degree> </education> </Resume> Заключение • В данной презентации было показано, что часто путем небольшого изменения, «обычные XML" документы можно сделать согласуемыми с языком RDF. • Рекомендуется использовать RDF формат во всех XML документах. • Преимущества полученные в результате форматирования XML документа в виде RDF намного превышают возможные недостатки (необходимости структурировать XML в специфический формат и необходимости изучать новый словарь). RDF Summary • RDF is a general-purpose framework. • RDF provides structured, machineunderstandable metadata for the Web. • Metadata vocabularies can be developed without central coordination. • RDF Schemas describe the meaning of each property name. Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org Инструменты для работы с RDF Spring 2010 mark.baker@computer.org