Logo    
Деловая газета CitCity.ru CITKIT.ru - все об Open Source Форумы Все публикации Учебный центр Курилка
CitForum    CITForum на CD    Подписка на новости портала Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

23.03.2017

Google
WWW CITForum.ru
С Новым годом!
2007 г.

GraphML - язык описания графов

По материалам сайта http://graphml.graphdrawing.org/
Перевод: Шокоров В. П.

Оглавление

Предисловие переводчика
Аннотация
Рабочая группа
О сайте GraphML
Введение
С чего начать
1.Спецификация
1.1. Общие сведения
1.2. Синтаксис
1.3.GraphML-схема
1.4. GraphML-DTD
1.5.Правила обработки
1.6. Дополнительные данные
1.6.1. Типизация данных
1.6.2. Информация для синтаксических анализаторов
1.6.3. Пользовательские расширения
1.7. Описание элементов
desc
locator
data
key
default
graphml
graph
node
port
edge
hyperedge
endpoint
1.8.Описание типов
key.for.type
graph.edgedefault.type
endpoint.type.type
data-extension.type
data.type
default.type
key.type
graphml.type
graph.type
node.type
port.type
edge.type
hyperedge.type
endpoint.type
locator.type

Предисловие переводчика

Проект GraphML имеет целью создание стандартизованного языка описания графов являющегося подмножеством языка XML. Данный документ представляет собой перевод материалов сайта http://graphml.graphdrawing.org/ , содержащего информацию о проекте GraphML на русский язык, и объединяет в одном файле материалы из нескольких разделов указанного выше сайта. При этом нормативными документами считаются оригинальные тексты на английском языке, которые можно найти в соответствующих разделах сайта http://graphml.graphdrawing.org/. Представленный документ может содержать ошибки перевода. Перевод выполнил Шокоров В. П. (http://PenzaVld.narod.ru).

Аннотация

Проект GraphML был начат комитетом "Graph Drawing Steering Committee" до начала симпозиума Graph Drawing 2000 в Вильямсбурге. Рабочая встреча относительно формата файла была проведена накануне симпозиума, и на ней было согласовано создание группы, которая определила новый, основанный на языке XML, формат файла, который должен в конечном счете лечь в основу стандарта описания графов.

С тех пор, язык был расширен в части поддержки основных типов атрибутов и в части включения информации для использования синтаксическими анализаторами. Следующим важным шагом в расширении языка будет включение абстрактной информации для описания топологии графа и шаблонов с помощью которых эту информацию можно было бы преобразовать в различные графические форматы. Программное обеспечение для поддержки работы с GraphML находится в стадии разработки.

Один из главных предшественников GraphML - GML. GML появился в результате работы, начатой на Graph Drawing 1995 в Пассау и завершенной на Graph Drawing 1996 в Беркли. GML был (и все еще остается) основным файловым форматом для Graphlet, а также поддерживается рядом других систем обработки графов.

Рабочая группа

GraphML создается многими людьми, находящимися в различных местах. Наравне с другими текущую работу координируют: Ulrik Brandes (University of Konstanz); Markus Eiglsperger; Michael Kaufmann (University of Tübingen); Jürgen Lerner (University of Konstanz); Christian Pich (University of Konstanz).

В консультативную группу входят: Ivan Herman (CWI); Stephen North (AT&T Research); Roberto Tamassia (Brown University).

На этапе формирования структуры активно работали, или были подписаны на полуоткрытый список обсуждения GraphML: Michael Himsolt (DaimlerChrysler); M. Scott Marshall (then CWI); Vladimir Batagelj (University of Ljubljana); Anne-Lise Gros (LIRMM); Carsten Gutwenger (Caesar); David Jensen (University of Massachusetts); Serban Jora (AT&T Research); Sascha Meinert (University of Tübingen); Guy Melancon (LIRMM); Petra Mutzel (Technical University of Vienna); Maurizio Patrignani (University of Rome III); Tim Pattison (DSTO); Matthew Phillips (DSTO); John Punin (Rensselaer Polytechnic Institute); Susan Sim (University of Toronto); Adrian Vasiliu (Ilog); Vance Waddle (IBM Research); Andreas Winter (University of Koblenz).

О сайте GraphML

Сайт GraphML перепроектирован и перезапущен 22 июня 2002 года. С этого времени страницы генерируются с помощью Apache Software Foundation's XML publishing framework Cocoon. Мы благодарим Джона Риттера (университет Konstanz) за эту работу.


Введение

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

GraphML включает поддержку направленных, ненаправленных, и смешанных графов, гиперграфов, иерархических графов, описание графического представления, ссылок к внешним данным, специфических для приложения атрибутов, и облегченного синтаксического анализатора.

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

С чего начать

Для быстрого ознакомления с GraphML рекомендуется ознакомится с практическим введением. Оно не является нормативным документом, а предназначен для облегчения понимания возможностей GraphML. Нормативное описание языка содержится в нижеприведённой спецификации GraphML.

1.Спецификация

1.1. Общие сведения

Спецификация языка GraphML определяет его синтаксис, правила правила обработки базового языка (структурный уровень) и двух его расширений, связанных с описанием атрибутов базовых типов и описанием информации для синтаксического анализа. Хотя достаточно подробное введение в описание языка можно найти здесь, дополнительную информацию, связанную с GraphML можно найти по адресу: U. Brandes, M. Eiglsperger, I. Herman, M. Himsolt, and M.S. Marshall: GraphML Progress Report: Structural Layer Proposal. Proc. 9th Intl. Symp. Graph Drawing (GD '01), LNCS 2265, pp. 501-512. © Springer-Verlag, 2002.

1.2. Синтаксис

Синтаксис GraphML определяется GraphML-схемой. Не смотря на то, что схема является более информативным документом, также обеспечено менее строгое описание синтаксиса с помощью Document Type Definition (DTD), в котором, например, не описаны ссылочные типы вроде идентификаторов ребер и узлов графа. Однако, для нормальной работы некоторых приложений, возможно, требуется DTD.

1.3.GraphML-схема

GraphML-схема представлена следующими файлами:

  • graphml.xsd (включает содержимое всех трех, перечисленных ниже, файлов);
  • graphml-structure.xsd - описание базового синтаксиса языка;
  • graphml-attributes.xsd - расширение синтаксиса языка в части описания атрибутов базовых типов;
  • graphml-parseinfo.xsd - расширение синтаксиса языка в части описания информации для синтаксического анализа.
1.4. GraphML-DTD

Описание синтаксиса GraphML с помощью DTD представлено в файле graphml.dtd.

1.5.Правила обработки

Элементы, которые приложение не может обработать, игнорируются. То есть GraphML-документ интерпретируется так, как будто он состоит только из тех элементов, которые известны и понятны приложению. В частности:

  • элементы <port>, <hyperedge>, <endpoint>, и <locator> просто игнорируются приложениями, не обеспечивающими их обработку. Синтаксический анализатор может выдать предупреждение о том, что обнаружен неизвестный ему элемент;
  • для приложения, способного работать только с одним графом в документе, нет никаких рекомендаций на счет того, как обрабатывать документ, содержащий несколько графов. Поэтому такое приложение может выбрать: или работать только с первым графом, или обрабатывать все графы, или применить другой способ обработки документа. В любом случае, приложение должно сформировать предупреждение и проинформировать пользователя;
  • для приложения неспособного работать с вложенными графами нет никаких рекомендаций на счет того, как такое приложение должно обрабатывать вложенные графы. Например, приложение может выбрать: или игнорировать всю информацию о вложенных графах, или поднять вложенные графы на верхний уровень, или использовать другой способ обработки документа. В любом случае, приложение должно сформировать предупреждение и проинформировать пользователя.
1.6. Дополнительные данные

GraphML обеспечивают механизм добавление данных к структурным элементам (например, таким как <graph>, <node>, <edge>, и т.д.). Такой механизм реализуется с помощью типизированных данных, которые могут использоваться для определения данных заданного типа внутри структурных элементов. Тип данных задается элементом <key>. Область определения типа (домен) задается с помощью атрибута 'for' элемента <key>. Значения данных задаются с помощью элемента <default> (потомок элемента <key>) и/или элементов <data> (потомки элементов, которые находятся в домене типа), у которых значение атрибута 'key' равно значению атрибута 'id' элемента <key>.

1.6.1. Типизация данных

Расширение базового языка для описания атрибутов базовых типов позволяет специфицировать диапазон значений вышеупомянутых типов данных. Это делает с помощью дополнительного атрибута 'attr.type' элемента <key>. Атрибут 'attr.type' (может принимать значения: 'boolean', 'int', 'long', 'float', 'double', 'string') определяет, как интерпретировать символьную строку в элементах <data> и <default>.

С помощью атрибута 'attr.name' элемента <key> тип данных может быть поименован.

1.6.2. Информация для синтаксических анализаторов

Расширение базового языка в части описания информации для синтаксического анализа добавляет несколько дополнительных атрибутов к элементам <graph> и <node>, которые помогают анализаторам более эффективно обрабатывать документ. Эти атрибуты, например, определяют число узлов или ребер, степень узлов, максимальную/минимальную степень и т.д.

1.6.3. Пользовательские расширения

GraphML может быть расширен двумя способами:

  • пользователи могут включить структурированные элементы в элементы <data> и <default>;
  • пользователи могут добавить атрибуты ко всем элементам GraphML

Как это можно сделать, будет разъяснено в более подробном описании, которое в настоящее время готовится.

1.7. Описание элементов

Описание элементов дается в соответствии с GraphML-схемой.

<desc>

Назначение: позволяет включать в элементы текст комментария. Элемент для которого предназначены комментарии должен включать элемент <desc> в качестве первого потомка.

Область применения: <key>, <graphml>, <graph>, <node>, <port>, <edge>, <hyperedge>,<endpoint>.

Тип - xs:string.

<locator >

Назначение: графы и узлы объявляются с помощью элементов <graph> и <node>, соответственно. Необязательный элемент <locator> который может быть потомком этих элементов указывает на их определение. Если элемент-потомок <locator> не задан, то графы и узлы определяются содержимым элементов <graph> и <node>.

Область применения: <graph>,<node>.

Тип: locator.type - комплексный тип, содержащий описание элемента <locator>. Допустимое содержание - пусто. Определение типа конечно.

Атрибуты:

  • xlink:href - (обязателен) указатель на ресурс;
  • xlink:type - (необязателен) тип ссылки (может принимать фиксированное значение 'simple');
  • locator.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов .
<data>

Назначение: в GraphML возможно определение данных привязанных к графам, узлам, портам, ребрам, гиперребрам, конечной точке, а также ко всей совокупности графов, описанных в <graphml>. Объявление типов данных производится с помощью элементов <key>, являющихся потомками <graphml>, а определение данных с помощью элементов <data>.

Область применения: <graphml>, <graph>, <node>, <port>, <edge>, <hyperedge>, <endpoint>.

Тип: data.type - комплексный тип, содержащий описание элемента <data>. Тип data.type - смешанный, поэтому элемент <data> может содержать данные типа #PCDATA. Допустимое содержание - расширения типа data-extension.type, которое по умолчанию задает пустое значение. Определение типа конечно.

Атрибуты:

  • key - (обязателен) задает ссылку на атрибут 'id' элемента <key>, и тем самым идентифицирует тип объявленных данных. Тип содержимого - xs:NMTOKEN;
  • id - (необязателен) содержит идентификатор данного элемента <data>. Тип содержимого - xs:NMTOKEN;
  • data.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Ограничения целостности: data_data_key_unique. Это ограничение гарантирует уникальность атрибутов 'key' у элементов <data>, являющихся потомками данного элемента <data>.

<key>

Назначение: в GraphML возможно определение данных привязанных к графам, узлам, портам, ребрам, гиперребрам, конечной точке, а также ко всей совокупности графов, описанных в <graphml>. Объявление типов данных производится с помощью элементов <key> (потомки <graphml>), а определение данных с помощью элементов <data>.

Область применения: <graphml>.

Тип: key.type - комплексный тип, содержащий описание элемента <key>. Определение типа конечно.

Атрибуты:

  • id - (обязателен) содержит идентификатор данного элемента <key>. Тип содержимого - xs:NMTOKEN . Ограничение уникальности идентификатора - key_id_key;
  • for - (необязателен) задает область применения (домен) данного типа данных. Тип содержимого - key.for.type. Атрибут может принимать одно из следующих значений:'all' - данные этого типа могут быть определены во всех структурных элементах; 'graph'; 'node'; 'edge'; 'hyperedge'; 'port'; 'endpoint' - данные этого типа могут быть определены в элементах <graph>, <node>, <edge>, <hyperedge>, <port>, <endpoint>, соответственно;
  • key.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, <default>?

<default>

Назначение: в GraphML возможно определение данных привязанных к графам, узлам, портам, ребрам, гиперребрам, конечной точке, а также ко всей совокупности графов, описанных в <graphml>. Объявление типов данных производится с помощью элементов <key> (потомки <graphml>), а определение данных с помощью элементов <data>. Необязательный элемент <default>, являющийся потомком элемента <key>, задает значение по умолчанию для типа данных объявленного с помощью данного элемента <key>.

Область применения: <key>.

Тип: default.type - комплексный тип, содержащий описание элемента <default>. Тип default.type - смешанный, поэтому он может содержать данные типа #PCDATA. Допустимое содержание - расширения типа data-extension.type, которое по умолчанию задает пустое значение. Определение типа конечно.

Атрибуты: default.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

<graphml>

Назначение: <graphml> - корневой элемент документа.

Область применения: root.

Тип: graphml.type - комплексный тип, содержащий описание элемента <graphml>. Определение типа конечно.

Атрибуты: graphml.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, <key>*, ( <graph> | <data> ) *

Ограничения целостности:

  • graphml_data_key_unique. Это ограничение гарантирует уникальность атрибутов 'key' у элементов <data>, являющихся потомками <graphml>.
  • graph_id_unique. Это ограничение гарантирует уникальность идентификаторов (атрибутов 'id') у всех графов (<graph>) данного документа;
  • key_id_key. Это ограничение гарантирует уникальность всех идентификаторов типов (атрибут 'id') у всех элементов объявления типа данных (<key>) данного документа;
  • data_key_ref - ссылка на key_id_key. Это ограничение на атрибут 'key' для каждого элемента <data> обеспечивает гарантию того, что он ссылается на существующий в данном документе элемент <key>, у которого задано соответсвующее значение атрибута 'id'. Это ограничение обеспечивает связь переменной с ее типом.
<graph>

Назначение: элемент описывает граф (подграф).

Область применения: <graphml>, <node>, <edge>, <hyperedge>.

Тип: graph.type - комплексный тип, содержащий описание элемента <graph>. Определение типа конечно.

Атрибуты:

  • id - (необязателен) содержит идентификатор графа. Тип содержимого - xs:NMTOKEN. Ограничение уникальности идентификатора - graph_id_unique;
  • edgedefault - (обязателен) задает по умолчанию направленность ребер графа: направленные ('directed') или ненаправленные ('undirected'). Тип содержимого - graph.extra.attrib.

Содержимое: <desc>?, ( ( <data> | <node> | <edge> | <hyperedge> ) * | <locator> )

Ограничения целостности:

  • graph_data_key_unique - обеспечивает уникальность атрибута 'key' элементов <data>, являющихся потомками данного элемента <graph>;
  • edge_id_unique - обеспечивает уникальность идентификаторов (атрибутов 'id') для каждого ребра (<edge>) в графе;
  • hyperedge_id_unique - обеспечивает уникальность идентификаторов (атрибутов 'id') для каждого гиперребра (<hyperedge>) в графе;
  • endpoint_id_unique - обеспечивает уникальность идентификаторов (атрибутов 'id') для каждой конечной точки (<endpoint>) в графе;
  • node_id_key - обеспечивает наличие и уникальность идентификаторов (атрибутов 'id') для каждого узла (<node>) графа;
  • edge_source_ref - ссылка на node_id_key - для атрибута 'source' элемента <edge> гарантируется значение, заданное в одном из атрибутов 'id' элемента <node>. Тем самым задается исходящий узел ребра;
  • edge_target_ref ссылка на node_id_key - для атрибута 'target' элемента <edge> гарантируется значение, заданное в одном из атрибутов 'id' элемента <node>. Тем самым задается целевой узел ребра;
  • endpoint_node_ref ссылка на node_id_key - для атрибута 'node' элемента <endpoint> гарантируется значение, заданное в одном из атрибутов 'id' элемента <node>. Тем самым задается привязка узла к гиперребру.
<node>

Назначение: элемент описывает узел (<node>) в графе (<graph>).

Область применения: <graph>.

Тип: node.type - комплексный тип, содержащий описание элемента <node>. Описание типа конечно.

Атрибуты:

  • id - (обязательный) содержит идентификатор узла. Тип содержимого - xs:NMTOKEN. Ограничение уникальности идентификатора - node_id_key;
  • node.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( ( <data> | <port> ) *, <graph>? | <locator> )

Ограничения целостности:

  • node_data_key_unique - обеспечивает уникальность атрибутов 'key' элементов <data>, являющихся потомками данного элемента <node>;
  • port_name_key - обеспечивает существование и уникальность атрибутов 'name' у каждого элемента <port> в данном элементе <node>.
<port>

Назначение: элемент описывает порт в данном узле. Узлы могут быть структурированы с помощью портов. Таким образом ребра могут быть связаны не только с некоторым узлом графа, но и с некоторым портом в данном узле.

Область применения: <node>, <port>.

Тип: port.type - комплексный тип, содержащий описание элемента <port>. Описание типа конечно.

Атрибуты:

  • name - (обязательный) идентифицирует порт внутри данного узла. Тип содержимого - xs:NMTOKEN. Ограничение уникальности - port_name_key;
  • port.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( <data> | <port> ) *

Ограничения целостности: port_data_key_unique - обеспечивает уникальность атрибутов 'key' элементов <data>, являющихся потомками данного элемента <port>.

<edge>

Назначение: элемент описывает одно ребро в графе <graph>.

Область применения: <graph>.

Тип: edge.type - комплексный тип, содержащий описание элемента <edge>. Описание типа конечно.

Атрибуты:

  • id - (необязателен) задает идентификатор ребра. Тип содержимого - xs:NMTOKEN. Ограничение уникальности - edge_id_unique;
  • directed - (необязателен) задает направленность ребра. Тип содержимого - xs:boolean. Атрибут переопределяет значение, заданное по умолчанию атрибутом 'edgedefault' элемента <graph>;
  • source - (обязателен) задает идентификатор ('id') исходящего узла (<node>) данного ребра. Тип содержимого - xs:NMTOKEN. Ограничение целостности - edge_source_ref;
  • target - (обязателен) задает идентификатор ('id') входящего узла (<node>) данного ребра. Тип содержимого - xs:NMTOKEN. Ограничение целостности - edge_target_ref ;
  • sourceport - (необязателен) задает имя ('name') исходящего порта (<port>). Тип содержимого - xs:NMTOKEN;
  • targetport - (необязательный) задает имя ('name') входящего порта (<port>). Тип содержимого - xs:NMTOKEN;
  • edge.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, <data>*, <graph>?

Ограничения целостности: edge_data_key_unique - обеспечивает уникальность атрибутов 'key' элементов <data>, являющихся потомками данного элемента <edge>.

<hyperedge>

Назначение: элемент описывает гиперребро. Аналогично тому, как ребро задает связь между двумя узлами, гиперребро задает связь между произвольным числом узлов.

Область применения: <graph>.

Тип: hyperedge.type - комплексный тип, содержащий описание элемента <hyperedge>. Описание типа конечно.

Атрибуты:

  • id - (обязателен) задает идентификатор данного гиперребра. Тип содержимого - xs:NMTOKEN. Ограничение уникальности - hyperedge_id_unique;
  • hyperedge.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( <data> | <endpoint> ) *, <graph>?

Ограничение целостности: hyperedge_data_key_unique - обеспечивает уникальность атрибутов 'key' элементов <data>, являющихся потомками данного элемента <hyperedge>.

<endpoint>

Назначение: элемент задает конечную точку, входящую в список конечных точек гиперребра. Каждая конечная точка <endpoint> определяет соответствующий ей узел <node>.

Область применения: <hyperedge>.

Тип: endpoint.type - комплексный тип, содержащий описание элемента <endpoint>. Описание типа конечно.

Атрибуты:

  • id - (обязателен) идентификатор данной конечной точки. Тип содержимого - xs:NMTOKEN. Ограничение уникальности -endpoint_id_unique;
  • port - (необязателен) имя порта с которым связана данная конечная точка. Тип содержимого - xs:NMTOKEN;
  • node - (обязателен) идентификатор узла, который соответствует данной конечной точке. Тип содержимого - xs:NMTOKEN. Ограничение целостности - endpoint_node_ref;
  • type - (необязателен) определяет направленность данной конечной точки. По умолчанию - ненаправленная (undirected);
  • endpoint.extra.attrib - ссылка на описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?

1.8.Описание типов

Описание типов дается в соответствии с GraphML-схемой.

key.for.type

Простой тип, задающий допустимые значения атрибута 'for' элемента <key>. key.for.type является подмножеством типа xs:NMTOKEN. Допустимые значения: 'all', 'graph', 'node', 'edge', 'hyperedge', 'port' и 'endpoint'.

graph.edgedefault.type

Простой тип, задающий допустимые значения атрибута 'edgedefault' элемента <graph>. graph.edgedefault.type является подмножеством типа xs:NMTOKEN. Допустимые значения: 'directed', 'undirected'.

endpoint.type.type

Простой тип, задающий допустимые значения атрибута 'type' элемента <endpoint>. endpoint.type.type является подмножеством типа xs:NMTOKEN. Допустимые значения: 'in', 'out', 'undir'.

data-extension.type

Механизм расширения содержимого элементов <data> и <default>. По умолчанию комплексный тип data-extension.type пуст. Пользователи могут переопределить этот тип в соответствии с тем содержимым, которое требуется дополнительно определить в комплексных типах data.type и default.type, являющихся расширениями типа data-extension.type.

data.type

Комплексный тип, определяющий элемент <data>. data.type является смешанным типом, поэтому элемент <data> может содержать #PCDATA. Тип содержимого: расширение типа data-extension.type, который по умолчанию пуст. Описание типа конечно.

Атрибуты:

  • key - (обязателен) содержит ссылку на атрибут 'id' элемента <key>. Тип - xs:NMTOKEN .
  • id - (необязателен) задает идентификатор данного элемента <data>. Тип - xs:NMTOKEN.
  • data.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов .
default.type

Комплексный тип, определяющий элемент <default>. default.type является смешанным типом, поэтому элемент может содержать #PCDATA. Тип содержимого: расширение типа data-extension.type, который по умолчанию пуст. Описание типа конечно.

Атрибуты:

default.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов .

key.type

Комплексный тип, определяющий элемент <key>. Описание типа конечно.

Атрибуты:

  • id - (обязателен) задает идентификатор данного элемента <key>. Тип - xs:NMTOKEN. Описание ограничений целостности: key_id_key;
  • for - (необязателен) задает область применения (домен) данного типа данных. Тип - key.for.type.
  • key.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов .

Содержимое: <desc>?, <default>?

graphml.type

Комплексный тип, определяющий элемент <graphml>. Описание типа конечно.

Атрибуты: graphml.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, <key>*, ( <graph> | <data> ) *

graph.type

Комплексный тип, определяющий элемент <graph>. Описание типа конечно.

Атрибуты:

  • id (необязателен) задает идентификатор данного графа. Тип - xs:NMTOKEN. Описание ограничений целостности: graph_id_unique;
  • edgedefault (обязателен) задает, по умолчанию, тип ребер графа: направленные или ненаправленные. При определении ребра его тип может быть явно определен с помощью атрибута 'directed' элемента <edge>;
  • graph.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( ( <data> | <node> | <edge> | <hyperedge> ) * | <locator> )

node.type

Комплексный тип, определяющий элемент <node>. Описание типа конечно.

Атрибуты:

  • id (обязателен) задает идентификатор данного узла. Тип - xs:NMTOKEN. Описание ограничений целостности: node_id_key;
  • node.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( ( <data> | <port> ) *, <graph>? | <locator> )

port.type

Комплексный тип, определяющий элемент <port>. Описание типа конечно.

Атрибуты:

  • name (обязателен) идентифицирует данный порт внутри узла. Тип - xs:NMTOKEN. Описание ограничений целостности: port_name_key;
  • port.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( <data> | <port> ) *

edge.type

Комплексный тип, определяющий элемент <edge>. Описание типа конечно.

Атрибуты:

  • id (необязателен) задает идентификатор данного ребра. Тип - xs:NMTOKEN. Описание ограничений целостности: edge_id_unique;
  • directed (необязателен) переопределяет тип ребра, заданный по умолчанию с помощью атрибута 'edgedefault' элемента <graph>;
  • source (обязателен) содержит ссылку на идентификатор ('id') исходящего узла (<node>). Тип - xs:NMTOKEN. Описание ограничений целостности: edge_source_ref;
  • target (обязателен) содержит ссылку на идентификатор ('id') входящего узла (<node>). Тип - xs:NMTOKEN. Описание ограничений целостности: edge_target_ref;
  • sourceport (необязателен) содержит ссылку на имя ('name') исходящего порта (<port>). Тип - xs:NMTOKEN;
  • targetport (обязателен) содержит ссылку на имя ('name') входящего порта (<port>). Тип - xs:NMTOKEN;
  • edge.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, <data>*, <graph>?

hyperedge.type

Комплексный тип, определяющий элемент <hyperedge>. Описание типа конечно.

Атрибуты:

  • id (необязателен) задает идентификатор данного гиперребра. Тип - xs:NMTOKEN. Описание ограничений целостности: hyperedge_id_unique;
  • hyperedge.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?, ( <data> | <endpoint> ) *, <graph>?

endpoint.type

Комплексный тип, определяющий элемент <endpoint>. Описание типа конечно.

Атрибуты:

  • id (необязателен) задает идентификатор данной конечной точки. Тип - xs:NMTOKEN. Описание ограничений целостности: endpoint_id_unique;
  • port (необязателен) содержит ссылку на имя ('name') порта (<port>) с которым соединена данная конечная точка;
  • node (обязателен) содержит ссылку на идентификатор ('id') узла (<node>) с которым соединена данная конечная точка. Тип - xs:NMTOKEN. Описание ограничений целостности: endpoint_node_ref;
  • type (необязателен) определяет направленность данной конечной точки (по умолчанию - 'undirected').
  • endpoint.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Содержимое: <desc>?

locator.type

Комплексный тип, определяющий элемент <locator>. Тип содержимого: пусто. Описание типа конечно.

Атрибуты:

xlink:href (обязателен) ссылка на ресурс данного локатора.

xlink:type (необязателен) тип гиперссылки (может быть только типа 'simple').

locator.extra.attrib - описание дополнительных, определяемых пользователем, атрибутов.

Размещение рекламы — тел. +7 495 4119920, ICQ 232284597

Подписка на новости IT-портала CITForum.ru
(библиотека, CITKIT.ru, CitCity)

Новые публикации:

24 декабря

CITKIT.ru:

  • Новогодние поздравления
  • Сергей Кузнецов. Цикл Операционные системы: Ностальгия по будущему:

  • Алексей Федорчук. OpenSolaris 2008.11 Release

  • Сергей Голубев:

  • Евгений Чайкин aka StraNNik (Блогометки):

    17 декабря

  • С.Д.Кузнецов. Базы данных. Вводный курс

    10 декабря

    CITKIT.ru:

  • OpenSolaris 2008.11 Release

  • Альтернативные ОС: две грустные истории (С.Кузнецов)
  • Nokia N810 — доведение до ума
  • CitCity:

  • Платформа 2009: заоблачные перспективы Microsoft

    4 декабря

  • Лекция С.Д.Кузнецова Понятие модели данных. Обзор разновидностей моделей данных

    CITKIT.ru:

  • OpenSolaris 2008.11 Release. Первые впечатления

  • Linux vs FreeBSD: продолжим "Священные войны"?

  • Nokia N810 as is

  • Индульгенция для FOSS

  • Друзья СПО'2008

    26 ноября

  • Нечеткое сравнение коллекций: семантический и алгоритмический аспекты

    CitCity:

    CITKIT.ru:

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • 19 ноября

  • Проблемы экономики производства крупных программных продуктов

  • Язык модификации данных формата XML функциональными методами

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Заметки к книге:

  • FreeBSD: монтирование сменных устройств и механизм HAL
  • Текстовый редактор ee

    12 ноября

  • Правило пяти минут двадцать лет спустя, и как флэш-память изменяет правила (Гоц Грейф, перевод: Сергей Кузнецов)

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:
  • OSS в России: взгляд правоведа (В.Житомирский)

  • Новая статья из цикла С.Голубева "Железный марш":

    29 октября

  • О некоторых задачах обратной инженерии

  • Веб-сервисы и Ruby

  • Тестирование web-приложений с помощью Ruby

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

  • PuppyRus Linux - беседа с разработчиком (С.Голубев)

  • Сергей Кузнецов. Заметка не про Linux

    22 октября

  • Обзор методов описания встраиваемой аппаратуры и построения инструментария кросс-разработки

    CITKIT.ru:

  • Сергей Кузнецов. Почему я равнодушен к Linux

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • Что надо иметь
    3. Базовые познания

    CitCity:

  • Управление IT-инфраструктурой на основе продуктов Microsoft

    15 октября

  • Методы бикластеризации для анализа интернет-данных

    CitCity:

  • Разъемы на ноутбуках: что они дают и зачем их так много?
  • AMD Puma и Intel Centrino 2: кто лучше?

    CITKIT.ru:

  • Новый цикл статей С.Голубева
    Железный марш:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    8 октября

  • Автоматизация тестирования web-приложений, основанных на скриптовых языках
  • Опыт применения технологии Azov для тестирования библиотеки Qt3

    Обзоры журнала Computer:

  • SOA с гарантией качества
  • Пикоджоуль ватт бережет
  • ICT и всемирное развитие

    CitCity:

  • Пиррова победа корпорации Microsoft

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Статья из архива:

  • Я живу в FreeBSD (Вадим Колонцов)

    Новые Блогометки:

  • Перекройка шаблона Blogger или N шагов к настоящему
  • Blogger. Comment style
  • Screenie или глянцевый снимок экрана

    2 октября

    CITKIT.ru:

  • Сага о FreeBSD (А. Федорчук)

    Zenwalk: пакет недели

  • Банинг — интеллектуальное развлечение (С.Голубев)

    CitCity:

    25 сентября

  • Клермонтский отчет об исследованиях в области баз данных

    CITKIT.ru:

  • Пользователям просьба не беспокоиться... (В.Попов)

  • Снова про ZFS: диск хорошо, а два лучше
  • Командная оболочка tcsh (А.Федорчук)

    Zenwalk: пакет недели

    17 сентября

  • T2C: технология автоматизированной разработки тестов базовой функциональности программных интерфейсов
  • Технология Azov автоматизации массового создания тестов работоспособности

    CITKIT.ru:

  • FreeBSD: ZFS vs UFS, и обе-две — против всех (А.Федорчук)

    Zenwalk: пакет недели

  • Дачнет — практика без теории (С.Голубев)

    10 сентября

  • За чем следить и чем управлять при работе приложений с Oracle
  • Планировщик заданий в Oracle
    (В.Пржиялковский)

    CITKIT.ru:

  • Microsoft: ответный "боян" (С.Голубев)

  • Причуды симбиоза, или снова "сделай сам" (В.Попов)

  • Файловые системы современного Linux'а: последнее тестирование
  • Zsh. Введение и обзор возможностей
    (А.Федорчук)

    Описания пакетов Zenwalk: Zsh, Thunar, Thunar-bulk-rename, Xfce4-places-plugin, Xfce4-fsguard-plugin

    Блогометки:

  • Google Chrome
  • Лончер для ASUS Eee PC 701

    3 сентября

    CITKIT.ru:

  • Заметки о ядре (А.Федорчук):

    Добавлены описания пакетов Zenwalk: Galculator, Screenshot, Gnumeric, Pidgin

    В дискуссинном клубе:

  • И еще о Википедии и Google Knol

  • Лекция для начинающего линуксоида (С.Голубев)

    26 августа

  • Транзакционная память (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Открыт новый проект Zenwalk: пакет недели

  • Статья Текстовые процессоры и их быстродействие: конец еще одной легенды?

    21 августа

    CITKIT.ru:

  • Почему школам следует использовать только свободные программы (Ричард Столлман)
  • Беседа Сергея Голубева с учителем В.В.Михайловым

  • Википедия или Гуглезнание? Приглашение к обсуждению (Алексей Федорчук)
  • Народная энциклопедия от Google (StraNNik)

  • Обзор Mandriva 2009.0 Beta 1 Thornicrofti
  • Новичок в Линукс: Оптимизируем Mandriva 2008.1

  • Книга Zenwalk. Приобщение к Linux:

    13 августа

    CitCity:

  • Мирный Atom на службе человеку. Обзор платы Intel D945GCLF с интегрированным процессором
  • Обзор процессоров Intel Atom 230 на ядре Diamondville

  • iPhone - год спустя. Скоро и в России?

    CITKIT.ru:

  • Интермедия 3.4. GRUB: установка и настройка (из книги Zenwalk. Приобщение к Linux)

    6 августа

  • СУБД с хранением данных по столбцами и по строкам: насколько они отличаются в действительности? (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Интермедия 2.2. Что неплохо знать для начала (из книги Zenwalk. Приобщение к Linux)

  • И снова про шрифты в Иксах (А.Федорчук)

  • 20 самых быстрых и простых оконных менеджеров для Linux

  • Дело о трех миллиардах (С.Голубев)

    30 июля

  • OLTP в Зазеркалье (Пересказ: С. Кузнецов)

    CitCity:

  • Будущее BI в облаках?
  • Тиражные приложения и заказная разработка. Преимущества для заказчика
  • Дискуссия со сторонниками заказной разработки

    CITKIT.ru:

  • Новые главы книги Zenwalk. Приобщение к Linux:
  • Глава 8. Пакеты: средства установки, системы управления, системы построения
  • Глава 9. Zenwalk: репозитории, пакеты, методы установки

    23 июля

    CITKIT.ru:

  • Все против всех. 64 vs 32, Intel vs AMD, tmpfs vs ext3
  • Две головы от Intel

  • Zenwalk: обзор штатных приложений (глава из книги "Zenwalk. Приобщение к Linux")

  • Нормально, Григорий...

    16 июля

    Обзоры журнала Computer:

  • Перспективы и проблемы программной инженерии в XXI веке
  • Большие хлопоты с большими объемами данных
  • Перспективы наноэлектроники

    CITKIT.ru:

  • Интермедия о лицензиях (А.Федорчук. "Zenwalk. Приобщение к Linux")

  • Есть ли будущее у KDE?

  • Linux в школе: альтернативный вариант в задачах

  • Шифр (приключения агента Никодима)

    10 июля

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия вступительная. Linux или GNU/Linux? Как вас теперь называть?
  • Глава 5. Среда Xfce
  • Глава 6. Xfce: приложения и плагины

  • ZUR (Zenwalk User Repository) FAQ

    2 июля

  • Персистентность данных в объектно-ориентированных приложениях (С. Кузнецов)

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия 1.2. Дорога к Zenwalk'у. Период бури и натиска
  • Интермедия 3.3. Немного о Linux'е и "железе"
  • Глава 4. Настройка: инструментами и руками
  • Интермедия 4.1. Zenpanel и конфиги: поиски корреляции

  • Интервью с Жан-Филиппом Гийоменом, создателем дистрибутива Zenwalk

  • Linux в школе: первые итоги (С. Голубев)

    25 июня

    CITKIT.ru:

  • Zenwalk. Приобщение к Linux (А. Федорчук)

  • Логика и риторика (С.Голубев)

  • Технология Tru64 AdvFS

  • Ханс Райзер предлагает отвести полицейских к телу Нины

    18 июня

  • Проекты по управлению данными в Google (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • ОС и поддержка "железа": мифы и реальность (А. Федорчук)

  • Linux в школе: другие дистрибутивы

  • Пинок (С. Голубев)

    4 июня

  • Ландшафт области управления данными: аналитический обзор (С. Кузнецов)

    CITKIT.ru:

  • Linux в школе: слово заинтересованным лицам

  • SlackBuild: пакеты своими руками

  • Linux от компании Novell. Установка и обзор openSUSE Linux

    Все публикации >>>




  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 4119920, ICQ 232284597 Пресс-релизы — pr@citcity.ru
    Послать комментарий
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2007 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...