Ув. читатели SHCHERBAK.NET, вашему вниманию предлагаются материалы статьи "Semantic Web как новая модель информационного пространства Интернет" авторов  Ф.И. Андон, И.Ю. Гришановой и В.А. Резниченко.

В этой статье описаны базовые концепции и архитектура Semantic Web, а также положение дел по разработке данного проекта по состоянию на конец 2007 года. Выделены проблемы, которые стоят перед мировым сообществом для дальнейшего развития Semantic Web.

Полную версию статьи читаем здесь !

Щербак Сергей: Статья мне очень понравилась и я ее особенно рекомендую тем, кто хочет максимально быстро погрузится в  мир семантического веба (обязательна для прочтения).

От имени читателей SHCHERBAK.NET хочу выразить благодарность  Ирине Гришановой за предоставление материалов интересной статьи!

Возвращаясь к истокам Semantic Web: DTD и XSD

Основы разработки и XSD читаем здесь!

Рассмотрены языки описания схем XML  , XSD.

XSD - XML Schema Definition - язык описания схем XML от W3C.

Введение в XML здесь!

Основы работы с DTD и XSD

Основы работы с и XSD.

Для описания данных XML можно использовать (Document Type Definition) или схемы XML.

Схемы XML создаются на одном из языков описания схем XML, например, XSD или .

XSD – XML Schema Definition – схемы XML от W3C.
- XML-Data Reduced – схемы XML от Microsoft.

(Document Type Definition) задает правила формирования теговой разметки.

Например, для описания набора компьютеров можно использовать следующее :

<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd?, processor*, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >

Использование знаков ? + * накладывает на элементы ограничения:

"+" - используется для определения одного или большего количества дочерних элементов
"*" - используется для определения нуля и большего количества дочерних элементов
"?" - используется для определения нуля или одного дочернего элемента (элемент обязателен или нет)

Последовательность использования элементов (порядок определения дочерних элементов) в теговой разметке XML определяется так:

<!ELEMENT computer (hdd?, processor*, motherboard) >.

Сначала должен быть определён элемент hdd, processor, и только потом motherboard.

Помимо последовательностей можно использовать альтернативы.

Альтернатива позволяет показать, что в конкретном месте должен появится один из множества элементов. При использовании альтернатив синтаксический анализатор знает, что в документе может применятся только один элемент из перечисления.

Определяются альтернативы так - (P4|AMD|Celeron) - <!ELEMENT computer (hdd?, (P4|AMD| Celeron) , motherboard) >

Для определения смешанного типа содержимого элементов (текст или дочерние элементы), можно воспользоваться альтернативами такого вида (добавлено #PCDATA):

<!ELEMENT computer (hdd?, (#PCDATA|P4|AMD| Celeron) , morherboard) >

Атрибуты элементов определяются с помощью конструкции XML <!ATTLIST>

<!ATTLIST имя_элемента имя_атрибута тип_атрибута значение_по_умолчанию >

В все типы атрибутов основаны на строковом типе данных.

Наиболее распространенные типы атрибута:

CDATA – символьные данные;
ID - уникальный идентификатор;
(value1|value2|value3) – перечисление возможных значений атрибутов, т.е. возможным значением атрибута будет одно из перечисляемых.

Например, можно определить атрибут "model" элемента "computer" так:

<!ATTLIST computer model CDATA>

к XML можно подключить так:

<!DOCTYPE productList SYSTEM "products.">

или можно определить конструкции внутри XML документа, например, так:

<!DOCTYPE productList
[
<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >
]>

Схемы XML – это альтернативный способ определения типа документа. Наиболее часто используемые языки схем XML – это XSD от W3C и от Microsoft.

В схеме XML определяются элементы и их атрибуты. Кроме того, в схеме XML задаются правила порождения элементов (порядок вложенности элементов, последовательность их появления), и, конечно, типизация элементов и атрибутов с возможностью установления ограничений на значения элементов и их атрибутов.

Элементы обладают обязательными атрибутами name и type, определяющими имя элемента и его тип. Например:

<xs:element name="computer" type="xs:string">

В схемах XML поддерживаются все наиболее распространенные в языках программирования типы данных, а именно:

xs:string - строковый тип
xs:decimal - десятичное число
xs:boolean – true/false
xs:float – число с плавающей точки
xs:date (1950-03-26) - дата
xs:time (15:30:01) - время
и др.

Кроме того, атрибут элемента minOccurs=”0” определяет минимальное число вхождений элемента, а maxOccurs=”число” - максимальное число вхождений элементов.

Элементы бывают простыми и сложными.

Простые элементы не могут иметь атрибуты и содержимое смешанного типа, а сложные – могут.

Содержимое смешанного типа – это возможность использовать внутри элемента дочерние элементы и текст (смешанное содержимое) .

Простые определяются с помощью вложенного элемента <xs:simpleType>, сложные - <xs:complexType>

Ограничения на значение элемента можно устанавливать с помощью конструкции <xs:restriction>. Например:

<xs:element name=”возраст”>
<xs:simpleType>
<xs:restriction base=”xs:integer”> <!-- ограничения:-->
<xs:minInclusive value=”25”> <!—мин. значение-->
<xs:maxInclusive=”41” ><!—макс. значение>
</xs:restriction>
</xs:simpleType>
</xs:element>

Ограничения на значения элемента (используются множества допустимых значений) устанавливаются с помощью <xs:restriction> и <xs:enumeration>

Например:

<xs:element name=”Processor”>
<xs:simpleType>
<xs:restriction base=”xs:string”>
<xs:enumeration value=”P4”/>
<xs:enumeration value=”AMD”/>
<xs:enumeration value=”CoreDuo”/>
</xs:restriction>
</xs:simpleType>
</xs:element>

Для того, чтобы можно было использовать ограничение вне определения элемента Processor (например, еще в элементе "Platform" ), нужно следующим образом модифицировать определение элемента Processor:

<xs:element name=”Processor” type=”processorType”>
<xs:simpleType name=”processorType”>
<xs:restriction base=”xs:string”>
<xs:enumeration value=”P4”/>
<xs:enumeration value=”AMD”/>
<xs:enumeration value=”CoreDuo”/>
</xs:restriction>
</xs:simpleType>
</xs:element>

В отличие от простых элементов сложные элементы могут иметь атрибуты и содержимое смешанного типа.

Последовательность появления дочерних элементов определяется с помощью конструкции <xs:sequence>

Например, сложный элемент Computer с установленной последовательностью появления элементов (сначала HDD, потом Motherboard) можно определить так:

<xs:complexType name=”Computer”>
<xs:sequence>
<xs:element name=”HDD” type=”xs:string”/>
<xs:element name=”Motherboard” type=”xs:string”/>
</xs:sequence>
<xs:attribute name=”model” type=”xs:string” fixed=”NewModel”/>
<xsd:complexType>

Подключить XMLSchema к XML документу можно так:

<ProductList xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="products.xsd">

</ProductList>

Вместо «products.xsd» может быть любой допустимый URL, а вместо ProductList любой ваш корневой элемент XML документа.

Более подробно об XML и XSD можно почитать здесь Школы XML.

А введение в XML можно почитать здесь !

P.S. При использовании примеров с этой странички - может быть - придётся изменить кавычки :!:

ReDeFer или как просто получить RDF!

RDF (Resource Description Framework) - это основа документооборота Semantic Web.

ReDeFer - это один из множества проектов по созданию средств преобразования документов различных форматов в RDF.

Наиболее полезными, на мой взгляд, средствами ReDeFer являются:

XSD2OWL - средство преобразования схем XML в . Причем преобразование в осуществляется из XSD.
Читать продолжение »

Что нужно помнить об XML!

Подготовлено по материалам семинара по XML...

Читать здесь :)

Введение в XML

Итак, XML…

XML (eXtensible Markup Language) – это расширяемый язык разметки.

XML – это инструмент для структурирования информации

XML – это инфраструктура для создания Web-базированных информационных систем, т.е. набор программных компонент для создания, обработки структурированных документов и их передачи, посредством, например, протокола HTTP.

XML – это основа для построения современных веб-сервисов.

Основные потребители XML

1. SOA (service-oriented architecture)
2. Semantic Web

SOA использует XML для стандартизации структуры передаваемой информации между сервисами.

Semantic Web использует XML как средство интеграции онтологий и т.п. в существующую инфраструктуру Web.

Развитием XML управляет консорциум WWW (W3C).

Например, список компьютеров в XML можно представить так:

<productList>
<computer model="S3331" price="5000">
<hdd capacity="400">Hitachi</hdd>
<processor>P4</processor>
<motherboard> 865GPE </motherboard>
</computer>
<computer model="S3234" price="4000">
<hdd capacity="120">WD</hdd>
<processor>P4</processor>
<motherboard> 865GPE </motherboard>
</computer>
</productList>

Данные в XML размещаются внутри тегов. Пара “открывающий - закрывающий тег” соответствует элементу данных.

Элементом называется часть документа XML, разграниченная открывающим тегом, таким как <my_element>, и закрывающим тегом, таким как </my_element>.

Документ XML состоит из одного элемента верхнего уровня, называемым корневым элементом и наборов, вложенных в него, элементов и символьных данных.

Символьные данные - это текст внутри элемента.

Атрибутом является свойство элемента, которое предоставляет дополнительную информацию об элементе или о моделируемой сущности элемента.

Имена конструкций XML (атрибутов, элементов и т.п), применяемые для описания сущностей предметной области должны иметь уникальные имена. В случае если имена должны быть уникальными не только внутри документа XML, но и вне его, необходимо использовать пространства имен XML.

Пространства имен XML – символьная строка, обозначаемая некоторый объект реального мира через URI.

URI (Uniform Resource Identifier) – унифицированный идентификатор ресурса.

В XML вместо URI в основном используется URL (Uniform Resource Locator).

URL - унифицированный локатор ресурсов, позволяющий
Например, пространство имен http://semanticfuture.net/ с префиксом ns, позволяет создать элемент <ns:computer> __</ns:computer>, который будет использоваться для описания сущности «Компьютер», причем структура моделируем сущности уникальна внутри схемы XML, принятой в semanticfuture.net.

Применение пространств имен позволяет различать элементы имеющие одинаковые имена.

Так через используемые пространства имен можно отличить элемент <ns:computer> с http://semanticfuture.net и <ns:computer> из http://shcherbak.net.

Для повышения читабельности XML-данных (и не только для этого!!!) необходимо структурировать информацию по определенным критериям.
Например, можно использовать способы структурирования информации, принятые в ER-моделировании или ООП.

Например, для структурирования можно использовать простое правило -

элементы XML соответствуют сущностям предметной области, а атрибуты соответствуют характеристикам этих сущностей.

Для организации связи «быть частью» между сущностями можно использовать вложение элементов XML. Так, если Вы хотите показать, что некоторый элемент является частью другого элемента, то описываете его внутри этого элемента. Например, если Вы хотите показать, что сущность автомобиль состоит из различных компонентов, например, двигателя, колес и т.д., тогда в XML это можно выразить так:

<car namе="VM"><engine>V6</engine></car>

Но это не единственный вид связи, который может моделироваться в XML.

XML поддерживает все возможные виды связей, которые могут моделироваться такими языками, как UML, языками ER-моделирования и т.п.

Но для моделирования таких связей, вероятнее всего, вам придется использовать такие технологии как XLink или XPointer.

Кроме того, при создании документов XML необходимо не забывать простые правила формирования XML-документов, а именно,

1. XML- регистрозависим, т.е.в тегах учитывается регистр символов.
2. Элементы XML должны быть правильно вложены друг в друга.
3. В XML должен быть один корневой элемент.
4. Значения атрибутов всегда должны быть заключены в кавычки.

В XML могут использоваться как одинарные кавычки, так и двойные. Одинарные кавычки в основном применяются в случаях, когда значения атрибута уже содержит двойные кавычки.

Для обработки XML конструкций применяются синтаксические анализаторы.

Например, msxml от Microsoft.

Что нужно помнить при работе с XML?

1. В XML сохраняются пробелы (в отличие от HTML), т.е. если в текстовые описания добавлять лишние пробелы, то они синтаксическим анализатором не удаляются.
2. В XML символы перевода строки CR/LF преобразуются в LF.

Для описания данных в XML используется или схема XML.

(Document Type Definition) задает правила формирования теговой разметки.

Например, для описания компьютеров можно определить следующее :

<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >

Использование знака «+» возле элемента накладывает на элемент ограничение - этот элемент как минимум раз должен быть определен. Могут также применяться, такие знаки, как «*» и «?». Знак «*» означает, что возможно 0, 1 или более элементов, а «?» означает, что элемент необязателен. Отсутствие знаков возле элементов означает обязательность их определения (т.е. элемент обязательно должен быть).

Атрибуты элементов определяются с помощью конструкции XML <!ATTLIST>.

<!ATTLIST имя_элемента имя_атрибута тип_атрибута значение_по_умолчанию >

В все типы атрибутов основаны на строковом типе данных.

Наиболее распространенные типы атрибута:

CDATA – символьные данные;
ID - уникальный идентификатор;
(value1|value2|) – перечисление возможных значений атрибутов, т.е. возможным значением атрибута будет одно из перечисляемых.

Например, можно определить атрибут model так:

<!ATTLIST computer model CDATA>

к XML можно подключить так:

<!DOCTYPE productList SYSTEM "products.">

или можно определить конструкции внутри XML документа, например, так

<!DOCTYPE productList
[
<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >
]>

Недостатки :

1. Отсутствие типизации узлов.
2. Отсутствие поддержки пространств имён.

Вместо можно использовать XML Schema.

XML Schema поддерживает различные типы данных.

Подключить XMLSchema к XML документу можно так:

<ProductList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="products.xsd">

</ProductList>

Для визуализации содержимого файла XML с помощью CSS можно использовать каскадную таблицу стилей CSS. Подключить ее можно следующим образом:

<?xml-stylesheet type="text/css" href="sheet.css" ?>

Для визуализации содержимого файла XML с помощью XSL можно использовать XSL. Подключить его можно следующим образом:

<?xml-stylesheet type="text/xsl" href="sheet.xsl" ?>

Для обработки XML-конструкций применяются такие технологии как DOM, SAX, XSLT.

Некоторые определения:

XML-документ, имеющий правильный синтаксис, называется правильно сформированным XML-документом.

XML-документ, проверенный и соответствующий (XML SCHEMA) называется допустимым («валидным») XML-документом.

Более подробно об XML можно почитать здесь Школы XML