Графовые запросы для интеграции данных посредством XML

Для формування XML-подань баз даних запропоновано нову візуальну мову ER-QBE, що використовує семантику концептуальної моделі даних. ER-QBE грунтується на графових запитах, які являють собою дерева параметричних SQL-запитів. Мові ER-QBE є притаманною формально доведена повнота; за своєю виразністю в...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2008
Hauptverfasser: Тульчинский, В.Г., Ющенко, А.К., Ющенко, Р.А.
Format: Artikel
Sprache:Russian
Veröffentlicht: Інститут кібернетики ім. В.М. Глушкова НАН України 2008
Schriftenreihe:Кибернетика и системный анализ
Schlagworte:
Online Zugang:http://dspace.nbuv.gov.ua/handle/123456789/72008
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Графовые запросы для интеграции данных посредством XML / В.Г. Тульчинский, А.К. Ющенко, Р.К. Ющенко // Кибернетика и системный анализ. — 2008. — № 2. — С. 171-183. — Бібліогр.: 25 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id irk-123456789-72008
record_format dspace
spelling irk-123456789-720082014-12-16T03:02:15Z Графовые запросы для интеграции данных посредством XML Тульчинский, В.Г. Ющенко, А.К. Ющенко, Р.А. Программно-технические комплексы Для формування XML-подань баз даних запропоновано нову візуальну мову ER-QBE, що використовує семантику концептуальної моделі даних. ER-QBE грунтується на графових запитах, які являють собою дерева параметричних SQL-запитів. Мові ER-QBE є притаманною формально доведена повнота; за своєю виразністю вона краща за існуючі рішення, підтримує як реляційні, так і об'єктно-реляційні бази даних. 2008 Article Графовые запросы для интеграции данных посредством XML / В.Г. Тульчинский, А.К. Ющенко, Р.К. Ющенко // Кибернетика и системный анализ. — 2008. — № 2. — С. 171-183. — Бібліогр.: 25 назв. — рос. http://dspace.nbuv.gov.ua/handle/123456789/72008 681.3 ru Кибернетика и системный анализ Інститут кібернетики ім. В.М. Глушкова НАН України
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
language Russian
topic Программно-технические комплексы
Программно-технические комплексы
spellingShingle Программно-технические комплексы
Программно-технические комплексы
Тульчинский, В.Г.
Ющенко, А.К.
Ющенко, Р.А.
Графовые запросы для интеграции данных посредством XML
Кибернетика и системный анализ
description Для формування XML-подань баз даних запропоновано нову візуальну мову ER-QBE, що використовує семантику концептуальної моделі даних. ER-QBE грунтується на графових запитах, які являють собою дерева параметричних SQL-запитів. Мові ER-QBE є притаманною формально доведена повнота; за своєю виразністю вона краща за існуючі рішення, підтримує як реляційні, так і об'єктно-реляційні бази даних.
format Article
author Тульчинский, В.Г.
Ющенко, А.К.
Ющенко, Р.А.
author_facet Тульчинский, В.Г.
Ющенко, А.К.
Ющенко, Р.А.
author_sort Тульчинский, В.Г.
title Графовые запросы для интеграции данных посредством XML
title_short Графовые запросы для интеграции данных посредством XML
title_full Графовые запросы для интеграции данных посредством XML
title_fullStr Графовые запросы для интеграции данных посредством XML
title_full_unstemmed Графовые запросы для интеграции данных посредством XML
title_sort графовые запросы для интеграции данных посредством xml
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
publishDate 2008
topic_facet Программно-технические комплексы
url http://dspace.nbuv.gov.ua/handle/123456789/72008
citation_txt Графовые запросы для интеграции данных посредством XML / В.Г. Тульчинский, А.К. Ющенко, Р.К. Ющенко // Кибернетика и системный анализ. — 2008. — № 2. — С. 171-183. — Бібліогр.: 25 назв. — рос.
series Кибернетика и системный анализ
work_keys_str_mv AT tulʹčinskijvg grafovyezaprosydlâintegraciidannyhposredstvomxml
AT ûŝenkoak grafovyezaprosydlâintegraciidannyhposredstvomxml
AT ûŝenkora grafovyezaprosydlâintegraciidannyhposredstvomxml
first_indexed 2025-07-05T20:52:58Z
last_indexed 2025-07-05T20:52:58Z
_version_ 1836841727323799552
fulltext Â.Ã. ÒÓËÜ×ÈÍÑÊÈÉ, À.Ê. ÞÙÅÍÊÎ, Ð.À. ÞÙÅÍÊÎ ÓÄÊ 681.3 ÃÐÀÔÎÂÛÅ ÇÀÏÐÎÑÛ ÄËß ÈÍÒÅÃÐÀÖÈÈ ÄÀÍÍÛÕ ÏÎÑÐÅÄÑÒÂÎÌ XML Êëþ÷åâûå ñëîâà: ÿçûê XML, áàçû äàííûõ (ÁÄ), ïðåäñòàâëåíèÿ ÁÄ, ÿçûê QBE, XML-ïðåäñòàâëåíèÿ, ñåìàíòè÷åñêàÿ ñåòü. ÂÂÅÄÅÍÈÅ XML [1] — ïîïóëÿðíûé ÿçûê ðàçìåòêè äîêóìåíòîâ, ïîçâîëÿþùèé ñòðóêòóðèðî- âàòü èíôîðìàöèþ, èñïîëüçóÿ ïðîèçâîëüíûé íàáîð èíñòðóêöèé. XML-äîêóìåíò èìååò äðåâîâèäíóþ ñòðóêòóðó. Ñðåäè îñíîâíûõ ïðèìåíåíèé XML — Web-ñåð- âèñû, Èíòåðíåò-ïðèëîæåíèÿ, èíôîðìàöèîííûå õðàíèëèùà, ñèñòåìû äîêóìåíòî- îáîðîòà. Ïðåèìóùåñòâîì XML ÿâëÿåòñÿ òåêñòîâîå ïðåäñòàâëåíèå, íå òðåáóþùåå ñïåöèàëüíûõ ïðîãðàìì äëÿ ñîçäàíèÿ, ïðîñìîòðà è ðåäàêòèðîâàíèÿ.  òî æå âðå- ìÿ XML, êàê ïðàâèëî, èìååò áîëåå ãðîìîçäêèé ôîðìàò ïî ñðàâíåíèþ ñ àíàëî- ãè÷íûìè ïî ñîäåðæàíèþ áèíàðíûìè ôîðìàòàìè. XML, â îòëè÷èå îò HTML, íå ÿâëÿåòñÿ ÿçûêîì äëÿ êîäèðîâàíèÿ îïðåäåëåííîé èíôîðìàöèè. Îí ñëóæèò äëÿ ïðåäñòàâëåíèÿ ïðîèçâîëüíûõ èåðàðõèé äàííûõ, âûðà- æåííûõ â òåêñòîâîì âèäå. Êàæäîå êîíêðåòíîå ïðèìåíåíèå XML ïîðîæäàåò ôîð- ìàëüíî îïðåäåëåííûé ÿçûê èëè äèàëåêò. Ñóùåñòâóåò ìíîæåñòâî ñòàíäàðòèçèðîâàí- íûõ äèàëåêòîâ XML, íàïðèìåð MathML, RSS, GpaphML, XHTML è ò.ï. Òàêèìè äè- àëåêòàìè òàêæå ÿâëÿþòñÿ ñïåöèôèêàöèè ñõåìû XML-äîêóìåíòà: DSD, DTD, XSD, XDR [2]. Ñèíòàêñè÷åñêèé àíàëèçàòîð XML âûäàåò îøèáêó ïðè íåñîîòâåòñòâèè ñî- äåðæèìîãî XML-äîêóìåíòà îáúÿâëåííîé ñòðóêòóðå. Ñïåöèôèêàöèÿ ñõåìû ìîæåò áûòü âñòðîåíà â XML-äîêóìåíò (â òàêîì ñëó÷àå îí ñàì ñåáÿ îïèñûâàåò) èëè õðà- íèòüñÿ â âèäå îòäåëüíîãî ôàéëà (ýòî óäîáíî, åñëè îäèíàêîâóþ ñòðóêòóðó äîëæíû èìåòü ðàçíûå äîêóìåíòû). Íà ïðàêòèêå ÷àñòî èñïîëüçóåòñÿ ïðîìåæóòî÷íîå ðåøå- íèå: ñïåöèôèêàöèÿ ñõåìû, âñòðîåííàÿ â XML-äîêóìåíò, ññûëàåòñÿ íà òåðìèíû, îïðåäåëåííûå â äðóãèõ ôàéëàõ. Êîíñîðöèóì âñåìèðíîé ñåòè (World Wide Web Consortium, W3C) ïðåäëàãàåò ñðåäñòâà îáðàáîòêè XML-äàííûõ, îáëàäàþùèå áîëüøèìè âîçìîæíîñòÿìè ïî èíòåãðàöèè äàííûõ ðàçíûõ XML-äîêóìåíòîâ, ïîèñêó êîíêðåòíîé èíôîðìàöèè è òðàíñôîðìàöèè XML-äåðåâüåâ.  íàñòîÿùåå âðåìÿ áîëüøàÿ ÷àñòü äàííûõ õðàíèòñÿ â ðåëÿöèîííûõ ÁÄ. Äëÿ îáëåã÷åíèÿ ðàçðàáîòêè Èíòåðíåò-ïðèëîæåíèé, ìåæïðîãðàììíîãî âçàèìîäåéñòâèÿ è èíòåãðàöèè äàííûõ àêòóàëüíà ïóáëèêàöèÿ (ýêñïîðò) äàííûõ ÁÄ â XML. Ïðîèçâî- äèòåëè ÑÓÁÄ ïðåäëàãàþò ñïåöèàëüíûå ñðåäñòâà äëÿ ðåøåíèÿ ýòîé çàäà÷è. Ðàñøè- ðåíèå ÑÓÁÄ DB2 (IBM) SilkRoute [3] ýôôåêòèâíî âû÷èñëÿåò ìîìåíòàëüíûå ïðåä- ñòàâëåíèÿ, îïèñàííûå íà ÿçûêå RXL. Äðóãàÿ ðàçðàáîòêà òîé æå ãðóïïû, XPERANTO [4], ïðåäíàçíà÷åíà äëÿ îáúåêòíî-ðåëÿöèîííûõ áàç. Microsoft SQL Server, íà÷èíàÿ ñ âåðñèè 2000, ïîçâîëÿåò îïðåäåëÿòü êàê ìîìåíòàëüíûå, òàê è âèð- òóàëüíûå (äèíàìè÷åñêèå) XML-ïðåäñòàâëåíèÿ [5]. Äëÿ ýòîãî ðàçðàáîòàíî ðàñøèðå- íèå SQL, íàçâàííîå FOR XML è âïîñëåäñòâèè ïîëîæåííîå â îñíîâó ñòàíäàðòà SQL/XML [6].  òî æå âðåìÿ óñèëèÿ ïðåäïðèíèìàëèñü â íàïðàâëåíèè ìàíèïóëèðî- ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 171 � Â.Ã. Òóëü÷èíñêèé, À.Ê. Þùåíêî, Ð.À. Þùåíêî, 2008 âàíèÿ ðåëÿöèîííûìè äàííûìè èç ÿçûêîâ çàïðîñîâ XML — XML-QL [7] è áîëåå ãèáêîãî XQuery [8], ðàçðàáîòàííîãî W3C. Äëÿ îòîáðàæåíèÿ òàáëèö áàçû äàííûõ â XPath-çàïðîñàõ â âèäå âèðòóàëüíûõ XML-äîêóìåíòîâ ïðèìåíÿåòñÿ ÿçûê XDR, óñòóïàþùèé ïî ïîëíîòå è âûðàçèòåëüíîñòè RXL, íî ïîçâîëÿþùèé äîñòàòî÷íî ïðîñòî îïèñàòü îòîáðàæåíèå ñõåìû îäíîé òàáëèöû â ñõåìó âèðòóàëüíîãî XML-äîêóìåíòà. Îäíàêî ïåðå÷èñëåííûå ñòàíäàðòíûå ñðåäñòâà îáëàäàþò ðÿäîì îãðàíè÷åíèé: � â XPath/XDR òàáëèöû ÁÄ ïðåäñòàâëÿþòñÿ îòäåëüíûìè âèðòóàëüíûìè XML-äîêóìåíòàìè, ïîýòîìó íåäîñòàþùóþ ñåìàíòèêó ïðèõîäèòñÿ âïèñûâàòü íå- ïîñðåäñòâåííî â çàïðîñ ïðåîáðàçîâàíèÿ, ÷òî åãî ñèëüíî óñëîæíÿåò; � âñå äàííûå, ýêñïîðòèðóåìûå â XML-äîêóìåíò ïîñðåäñòâîì SQL/XML, äîë- æíû áûòü ïðåäñòàâëåíû îäíèì ñîåäèíåíèåì, ÷òî ñíèæàåò ýôôåêòèâíîñòü ðåàëèçà- öèè ñëîæíûõ XML-ïðåäñòàâëåíèé è ïîâûøàåò çàòðàòû ðåñóðñîâ; � òðàäèöèîííûå ñðåäñòâà àâòîìàòèçàöèè ðàçðàáîòêè çàïðîñîâ íå ïîääåðæèâà- þò XML-ïðåäñòàâëåíèÿ, ÷òî çàòðóäíÿåò èõ ïðîãðàììèðîâàíèå è ïîâûøàåò âåðîÿò- íîñòü îøèáêè.  [9, 10] ïðåäëàãàåòñÿ âîññòàíàâëèâàòü ðàñøèðåííóþ ìîäåëü ñóùíîñòü-ñâÿçü èç ðåëÿöèîííîé ñõåìû ïî øàáëîíàì è íà åå îñíîâå îïèñûâàòü XML-äåðåâî â âèäå ïîäñõåìû èëè íà ÿçûêå âëîæåííûõ îòíîøåíèé. Íåäîñòàòîê îòîáðàæåíèÿ XML íà ÿçûêå âëîæåííûõ îòíîøåíèé — íåîáõîäèìîñòü â ñïåöèàëüíîì íåðåëÿöèîííîì ðàñøèðåíèè SQL.  [11] ïðåäëàãàåòñÿ ïðîñòîå ýâðèñòè÷åñêîå ðåøåíèå: îïèñàíèå äåðåâà XML äåðåâîì SQL-çàïðîñîâ. Ãðàôîâûå çàïðîñû [12, 13] îáúåäèíÿþò ïðåè- ìóùåñòâà ïðåäëîæåííûõ ðåøåíèé, îáåñïå÷èâàÿ âèçóàëüíóþ òåõíîëîãèþ ðàçðàáîòêè äåðåâà çàïðîñîâ íà îñíîâå êîíöåïòóàëüíîé ìîäåëè. 1. ÃÐÀÔÎÂÛÅ ÇÀÏÐÎÑÛ Ãðàôîâûé çàïðîñ (ÃÇ) — ñðåäñòâî âûäåëåíèÿ è âèçóàëèçàöèè ñâÿçàííûõ ôðàã- ìåíòîâ äàííûõ, èìåþùèõ ñåòåâóþ ñòðóêòóðó. Ïîäîáíàÿ ñòðóêòóðà äàííûõ øèðî- êî ïðèìåíÿåòñÿ â èíôîðìàöèîííûõ ñèñòåìàõ íà óðîâíå êîíöåïòóàëüíîé ìîäåëè (íàïðèìåð, äèàãðàììû ñóùíîñòü-ñâÿçü, îáúåêò-ñâÿçü). Îñíîâîé âûäåëåíèÿ è âè- çóàëèçàöèè ôðàãìåíòîâ ñåòè (ïîäãðàôîâ) â ÃÇ ÿâëÿþòñÿ äåðåâüÿ îáõîäà. Ãëàâíûå îñîáåííîñòè ÃÇ — èñïîëüçîâàíèå ñåìàíòèêè êîíöåïòóàëüíîé ìîäåëè è ðåçóëüòàò â âèäå äåðåâà — íåïîñðåäñòâåííî ñâÿçûâàþò èõ ñ çàäà÷åé ôîðìèðîâàíèÿ XML-ïðåäñòàâëåíèé. 1.1. Ñòðóêòóðèðîâàííàÿ ñåìàíòè÷åñêàÿ ñåòü (ÑÑÑ) — ñïåöèàëüíàÿ ìîäåëü äàí- íûõ, ïîçâîëÿþùàÿ îòâëå÷üñÿ îò êîíêðåòíûõ îñîáåííîñòåé ñåòåâûõ êîíöåïòóàëü- íûõ ìîäåëåé.  îñíîâó CCC ïîëîæåíû ñåìàíòè÷åñêèå ñåòè — èçâåñòíàÿ ìîäåëü ïðåäñòàâëåíèÿ çíàíèé.  îòëè÷èå îò ìîäåëåé äàííûõ, ïðèìåíÿåìûõ â äåëîâîé ñôå- ðå, ñåìàíòè÷åñêèå ñåòè ïðåäíàçíà÷åíû äëÿ ñèñòåìàòèçàöèè çíàíèé îáùåãî õàðàêòå- ðà. Âåðøèíû ìîãóò áûòü äâóõ òèïîâ: ýêçåìïëÿðû è êëàññû. ÑÑÑ îòëè÷àþòñÿ ñòðî- ãîé òèïèçàöèåé âåðøèí è äóã ñåòè. Ïîäãðàô ñåìàíòè÷åñêîé ñåòè, ñîñòîÿùèé èç âåð- øèí-êëàññîâ è ñîåäèíÿþùèõ ýòè âåðøèíû äóã, âûäåëÿåòñÿ â ñëó÷àå ÑÑÑ â îòäåëüíóþ ñåòü, êîòîðàÿ âûñòóïàåò â ðîëè ñõåìû; ýòî ïðèáëèæàåò ÑÑÑ ê êëàññè- ÷åñêèì ìîäåëÿì äàííûõ. Ñõåìà îáðàçóåò îñòîâ ÑÑÑ. Ñòðóêòóðíî ÑÑÑ ïðåäñòàâëÿåò ñîáîé ðàñêðàøåííûé îðãðàô, âåðøèíû êîòîðî- ãî — ñóùíîñòè ìîäåëè ïðåäìåòíîé îáëàñòè (ÌÏðÎ), äóãè — ñâÿçè ìåæäó ñóùíîñ- òÿìè. Åãî äîïîëíåíèå îáðàçóåò ñõåìà — ðàñêðàøåííûé îðãðàô êëàññîâ. Äóãà, ñîå- äèíÿþùàÿ âåðøèíû-êëàññû, íàçûâàåòñÿ áèíàðíûì îòíîøåíèåì, à äóãà, ñîåäèíÿþ- ùàÿ âåðøèíû-ýêçåìïëÿðû, — óòâåðæäåíèåì. Ìîäåëè ñóùíîñòü–ñâÿçü è îáúåêò-ñâÿçü ýëåìåíòàðíî ñâîäÿòñÿ ê ÑÑÑ, ÷òî ïîçâîëÿåò íåïîñðåäñòâåííî ðàñ- ïðîñòðàíèòü äàëüíåéøèå ðåçóëüòàòû íà äàííûå, îïèñàííûå ER-äèàãðàììàìè, äèàã- ðàììàìè êëàññîâ èëè ïîñëåäîâàòåëüíîñòåé UML. Ñõåìû XML òàêæå çàäàþò ÑÑÑ. (Âî âñåõ ïåðå÷èñëåííûõ ñëó÷àÿõ âåðøèíàì ÑÑÑ öåëåñîîáðàçíî ñîïîñòàâëÿòü ñóù- íîñòè/îáúåêòû/ýëåìåíòû, àòðèáóòû XML — àòðèáóòàì ÑÑÑ.) Âîïðîñû âîññòàíîâëåíèÿ îòñóòñòâóþùåé êîíöåïòóàëüíîé ìîäåëè èç ñõåìû ðå- ëÿöèîííîé èëè îáúåêòíî-îðèåíòèðîâàííîé áàçû äàííûõ ðàññìîòðåíû â [10, 14, 15]. 172 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 1.2. Ãðàììàòè÷åñêîå ïðåäñòàâëåíèå ÑÑÑ. Çàäàäèì íåïóñòîå ìíîæåñòâî êîðíå- âûõ âåðøèí ÑÑÑ T E0 � . Ââåäåì ìíîæåñòâî íåòåðìèíàëüíûõ ñèìâîëîâ N E è îïðå- äåëèì âçàèìíî îäíîçíà÷íîå îòîáðàæåíèå n E N E: � . Ðàññìîòðèì ãðàììàòèêó � � � � � �( , , ,N N A T E L AE { } P P P PE E L� � � � * � PL * ) , â êîòîðîé êàæäîìó ýêçåìïëÿðó ñîïîñòàâëåíû òåðìèíàëüíûé è íåòåðìèíàëü- íûé ñèìâîëû, à êàæäîé êîðíåâîé âåðøèíå ÑÑÑ è êàæäîìó óòâåðæäåíèþ ÑÑÑ — ïðî- äóêöèè ÷åòûðåõ òèïîâ: P p A sS s T S n sE s� �{ }1 0: | , ( ) , P p A s s TE s * : |� { }2 0 , P p S r r s t L S n sL * : | ( , , ) , ( )� � �{ }� �2 , P p S rT r s t L S n s L � � �{ � �2 : | ( , , ) , ( ), T n t� ( )}. Íàçîâåì òàêóþ ïðàâîëèíåéíóþ ãðàììàòèêó ãðàììàòèêîé ÑÑÑ. Ìíîæåñòâî ñòðîê ÿçûêà ãðàììàòèêè ÑÑÑ � òîæäåñòâåííî ìíîæåñòâó ïóòåé îáõîäà ÑÑÑ, íà÷èíàþùèõñÿ ñ êîðíåâûõ âåðøèí ÑÑÑ. Ãðàììàòèêà �2 íåïîñðåäñòâåííî ñöåïëåíà ñ ãðàììàòèêîé �1, åñëè ïðîäóêöèè ãðàììàòèêè �2 ïîìå÷åíû ìåòêàìè èç ÷èñëà òåðìèíàëüíûõ/íåòåðìèíàëüíûõ ñèìâî- ëîâ ãðàììàòèêè �1, ïðè÷åì õîòÿ áû äëÿ íåêîòîðûõ öåïî÷åê, âûâîäèìûõ â �1, âñå ñèìâîëû êàæäîé öåïî÷êè ÿâëÿþòñÿ ìåòêàìè ïðîäóêöèé �2 è ïðè ýòîì îäíîçíà÷íî îïðåäåëÿþò ïîñëåäîâàòåëüíîñòü ïðîäóêöèé, âûâîäÿùèõ öåïî÷êó â �2 . Åñëè êàæäîé ìåòêîé ïîìå÷åíî íå áîëåå îäíîé ïðîäóêöèè �2 , òî �2 äåòåðìèíèðîâàíî ñöåïëåíà ñ �1. Äëÿ óäîáñòâà äàëüíåéøåãî èçëîæåíèÿ íåñêîëüêî èäåíòè÷íûõ ïðîäóêöèé ñ ðàçíû- ìè ìåòêàìè áóäåì ïðåäñòàâëÿòü êàê îäíó ïðîäóêöèþ ñ íåñêîëüêèìè ìåòêàìè. Ïóñòü �1 1 1 1 1� ( , , , )N T A P è �2 2 2 2 2 2 2 2 2� � � � �( , , , )* *N T A P P P P PE E L L — ãðàììàòèêè ÑÑÑ ñ îáùåé ñõåìîé. Îáîçíà÷èì ìíîæåñòâî ýêçåìïëÿðîâ ÑÑÑ �1 êàê E1, ìíîæåñòâî óòâåðæäåíèé — L1, ìíîæåñòâî êîðíåâûõ âåðøèí — T E01 1� . Ïóñòü êàæäàÿ ïðîäóêöèÿ �2 ïîìå÷åíà ìåòêîé èç ÷èñëà òåðìèíàëüíûõ ñèìâîëîâ �1, ïðè ýòîì âûïîëíÿþòñÿ ñëåäóþùèå óñëîâèÿ: 1) � � �p P p T f s f ps E s s 1 2 1 01 1label label( ) ( ) ( ( )) — êîðíåâàÿ âåðøèíà ñîîò- âåòñòâóþùåãî òèïà; 2) � � � �p P p L r s t L f r f pL� � ��1 2 1 1 2label label( ) ( , , ) ( ) ( ( 1 )) — äóãà ñî- îòâåòñòâóþùåãî òèïà; 3) ìåòêè ïàðíûõ ïðîäóêöèé ñîâïàäàþò — label label( ) ( )p px x 1 2 � ; 4) � � �t s T f t f s t s, ( ( ) ( ) )01 — òèï êàæäîé êîðíåâîé âåðøèíû ÑÑÑ �1 óíèêàëåí; 5) � � � � �r t s q o p L t o r q( , , ), ( , , ) ( )� � 1 — òèï è âõîäíîé ýêçåìïëÿð êàæ- äîãî óòâåðæäåíèÿ ÑÑÑ �1 îäíîçíà÷íî îïðåäåëÿþò âûõîäíîé ýêçåìïëÿð äàííîãî óòâåðæäåíèÿ. Íàçîâåì �2 ïîäñõåìîé �1. Ãðàììàòèêà �2 íåïîñðåäñòâåííî ñöåïëåíà ñ ãðàì- ìàòèêîé �1. Íàçîâåì ïîäñõåìó �2 ãðàììàòèêè ÑÑÑ �1 ïîëíîé, åñëè êàæäîé òåðìè- íàëüíîé öåïî÷êå, âûâîäèìîé â ãðàììàòèêå �1, ñîïîñòàâëÿåòñÿ ðîâíî îäíà òåðìè- íàëüíàÿ öåïî÷êà, âûâîäèìàÿ â ãðàììàòèêå �2 . Íàçîâåì ñîêðàùåíèåì ïîäìíîæåñ- òâî L L* ( ) ( )� �� ÿçûêà �, ñîñòîÿùåå èç öåïî÷åê, íå âêëþ÷àþùèõ ïîâòîðÿþùèåñÿ ñèìâîëû. Ñïðàâåäëèâî ñëåäóþùåå óòâåðæäåíèå. Òåîðåìà 1. Ñîêðàùåíèå ÿçûêà ïðîèçâîëüíîé ãðàììàòèêè ÑÑÑ îáëàäàåò ïî- ëíîé ïîäñõåìîé ñ êîíå÷íûì ÿçûêîì. Êîíå÷íîìó ÷èñëó öåïî÷åê ïîäñõåìû ñîîòâåòñòâóåò òî æå ÷èñëî êîíå÷íûõ ñîå- äèíåíèé ðåëÿöèîííûõ îòíîøåíèé èëè îáúåêòîâ, íà êîòîðûõ ìîæíî ñòàíäàðòíûì îáðàçîì âûïîëíÿòü îòáîð (ñåëåêöèþ), ÷òî ïîçâîëÿåò íåïîñðåäñòâåííî èñïîëüçîâàòü ÿçûê çàïðîñîâ ÑÓÁÄ äëÿ âûäåëåíèÿ çàäàííîãî ôðàãìåíòà ÑÑÑ. Êîìïëåêñíîå îïè- ñàíèå ôðàãìåíòà ÑÑÑ (ïîäñõåìà + óñëîâèÿ îòáîðà íà ÿçûêå çàïðîñîâ âìåùàþùåé ÑÓÁÄ) íàçûâàåòñÿ ãðàôîâûì çàïðîñîì. Òåîðåìà 2. Ôðàãìåíò CCC, ñîñòîÿùèé èç êîíå÷íîãî ìíîæåñòâà öåïî÷åê L� ( )�1 , êîòîðîå ìîæíî îïèñàòü êîíå÷íîé äèçúþíêöèåé îãðàíè÷åíèé íà ÿçûêå âìå- ùàþùåé ÑÓÁÄ, ïðåäñòàâëÿåòñÿ íåêîòîðûì ÃÇ. Òàêèì îáðàçîì, ìåõàíèçì ÃÇ îáëàäàåò ïîëíîòîé ñ òî÷êè çðåíèÿ ïðåäñòàâëåíèÿ ñåòåâîé êîíöåïòóàëüíîé ìîäåëè ïîñðåäñòâîì èåðàðõè÷åñêîãî ïðåäñòàâëåíèÿ. Îãðà- íè÷èâ íàáîð àòðèáóòîâ, ìîæåì ïîëó÷èòü èåðàðõè÷åñêîå ïðåäñòàâëåíèå XML-äîêó- ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 173 ìåíòîì, êîòîðûé ÿâëÿåòñÿ ÑÑÑ ïî îïðåäåëåíèþ. XML-äîêóìåíò äëÿ ÃÇ — òî æå ñàìîå, ÷òî ðåçóëüòèðóþùàÿ òàáëèöà äëÿ çàïðîñà ðåëÿöèîííîé ÁÄ.  ñèëó ïîëíîòû, ÃÇ ÿâëÿåòñÿ óíèâåðñàëüíûì ñðåäñòâîì ýêñïîðòà ôðàãìåíòîâ ÁÄ â XML. 2. ÐÀÇÐÀÁÎÒÊÀ ÃÇ ÏÎ ÎÁÐÀÇÖÓ Äëÿ âèçóàëüíîãî ôîðìèðîâàíèÿ ÃÇ ðàçðàáîòàí QBE-ïîäîáíûé ÿçûê çàïðîñîâ ER-QBE è àëãîðèòì òðàíñëÿöèè çàïðîñîâ ER-QBE â SQL-ïîäîáíûé ÿçûê çàïðî- ñîâ âìåùàþùåé ÑÓÁÄ.  îòëè÷èå îò QBE äëÿ ðåëÿöèîííîé ìîäåëè, ER-QBE äëÿ ÃÇ — íå îäíà ôîðìà/òàáëèöà, à äåðåâî ôîðì.  îòëè÷èå îò XDR, ER-QBE ôîêóñèðóåòñÿ íå íà ñèíòàêñè÷åñêèõ äåòàëÿõ ôîðìàòà XML (âûáîðå ïðåäñòàâëå- íèÿ àòðèáóòîâ ýëåìåíòàìè èëè àòðèáóòàìè XML, ïðåîáðàçîâàíèè èìåí), à íà èíôîðìàöèîííîì ñîäåðæàíèè XML-äîêóìåíòà. 2.1. ER-QBE ôîðìèðóåò ÃÇ ñ ó÷åòîì ñëåäóþùèõ îãðàíè÷åíèé: 1) çàïðîñ íå ñîçäàåò íîâûõ îáúåêòîâ èëè òèïîâ; 2) åñëè êàêèå-íèáóäü àòðèáóòû îáúåêòà/çàïèñè ó÷àñòâóþò â ôîðìèðîâàíèè îáîáùåííîãî îòíîøåíèÿ, èäåíòèôèêàòîð äàííîãî îáúåêòà èëè ïåðâè÷íûé êëþ÷ òèïà IDENTITY ýòîé çàïèñè çàïèñûâàåòñÿ â XML-äîêóìåíò; 3) íè÷åãî, êðîìå àòðèáóòîâ, â çàïðîñå íå âûáèðàåòñÿ. Îãðàíè÷åíèÿ 2, 3 îáåñïå÷èâàþò ðåàëèçàöèþ îáíîâëåíèÿ ÁÄ íà îñíîâå ìîäè- ôèêàöèé XML-ïðåäñòàâëåíèÿ. Åñëè çàäà÷à ñîñòîèò â ïîëó÷åíèè ñòàòè÷åñêîãî (ìî- ìåíòàëüíîãî) XML-ïðåäñòàâëåíèÿ, óñëîâèÿ 2 è 3 ìîãóò áûòü îñëàáëåíû: äîñòàòî÷- íî ïîòðåáîâàòü íàëè÷èÿ êëþ÷à (âîçìîæíî, ñîñòàâíîãî) ñðåäè âûáðàííûõ àòðèáóòîâ è ðàçðåøèòü ïðîñòûå âû÷èñëåíèÿ áåç àãðåãàöèè. Ñòðóêòóðó ÃÇ çàäàåò ïîäñõåìà — ÑÑÑ, âåðøèíû êîòîðîé ñîîòâåòñòâóþò êëàñ- ñàì ñõåìû (òàáëèöàì ÁÄ), à äóãè — áèíàðíûì îòíîøåíèÿì (ññûëêàì, âíåøíèì êëþ÷àì).  ER-QBE ïîäñõåìà ñòðîèòñÿ ïîñëåäîâàòåëüíî. Ñíà÷àëà äîáàâëÿþòñÿ êîðíåâûå âåðøèíû. Îñòàëüíûå âåðøèíû ïîäñõåìû ïðè- ñîåäèíÿþòñÿ ê ðàíåå äîáàâëåííûì âåðøèíàì ïî äóãàì. Ïîëüçîâàòåëü âûáèðàåò, ê êàêîé âåðøèíå äîáàâèòü íîâóþ è ïî êàêîìó áèíàðíîìó îòíîøåíèþ. Äëÿ âûáîðà ïðåäëàãàþòñÿ âñå ïàðû «ïåðâè÷íûé êëþ÷ êëàññà âûáðàííîé âåðøèíû — ñîîòâåò- ñòâóþùèé âíåøíèé êëþ÷ êàêîãî-òî êëàññà» è «ïåðâè÷íûé êëþ÷ êàêîãî-òî êëàñ- ñà — ñîîòâåòñòâóþùèé âíåøíèé êëþ÷ êëàññà âûáðàííîé âåðøèíû». Òàêèì îáðà- çîì, ñâÿçè ìåæäó êëàññàìè âåðøèí ìîãóò èäòè ïî ññûëêå â ëþáîì íàïðàâëåíèè. Âìåñòî íîâîé âåðøèíû ê âûáðàííîé ìîæíî ïðèñîåäèíèòü ðàíåå äîáàâëåííóþ âåð- øèíó ñîîòâåòñòâóþùåãî êëàññà. Îäíîìó êëàññó ìîæåò ñîîòâåòñòâîâàòü íåñêîëüêî âåð- øèí ïîäñõåìû, îäíîìó áèíàðíîìó îòíîøåíèþ — íåñêîëüêî äóã. Ðàçðåøåíû öèêëè- ÷åñêèå ñâÿçè, â òîì ÷èñëå äóãà ìîæåò ñîåäèíÿòü âåðøèíó ïîäñõåìû ñ íåé ñàìîé. Îäíà- êî ñîåäèíåíèå ïàðû âåðøèí äâóìÿ îäèíàêîâî íàïðàâëåííûìè äóãàìè îäíîãî áèíàðíîãî îòíîøåíèÿ íå äîïóñêàåòñÿ. Ñâîéñòâîì äóãè ÿâëÿåòñÿ ñòåïåíü çàâèñèìîñòè: ðàçðåøåí ëè ýêñïîðò ýêçåìïëÿðà ïåðâîé âåðøèíû äóãè, åñëè ñ íèì íå ñâÿçàí íè îäèí ýêçåìïëÿð âòîðîé âåðøèíû äóãè.  DTD ýòîìó ñîîòâåòñòâóåò âûáîð ìåæäó ìîäèôèêà- òîðàìè âëîæåííîãî ýëåìåíòà * è +. Êàæäîé âåðøèíå ïîäñõåìû â ER-QBE ñîîòâå- òñòâóåò ôîðìà, íàïîìèíàþùàÿ òðàíñïîíèðîâàííûå ôîðìû QBE [16], — òàáëèöà, â ïåðâîé êîëîíêå êîòîðîé ïåðå÷èñëåíû àòðèáóòû ñîîòâåòñòâóþùåãî êëàññà ñõåìû ÁÄ, à îñòàëüíûå êîëîíêè ñëóæàò äëÿ çàäàíèÿ óñëîâèé îòáîðà ýêçåìïëÿðîâ äàííîé âåð- øèíû. Èìåíà àòðèáóòîâ, âûáðàííûõ äëÿ ýêñïîðòà â XML, ïîìå÷àþòñÿ. Ïîäñõåìà ñ íàëîæåííûìè óñëîâèÿìè îòáîðà è âûáðàííûìè àòðèáóòàìè îïèñûâàåò ÃÇ. ER-QBE ðåàëèçîâàí â ïðîãðàììå «Ñåëåêòîð» ÑÓÁÄ «ÌèêðîÏîèñê» [17].  «Ñåëåêòîðå» èìåíà àòðèáóòîâ âûâîäÿòñÿ â êîëîíêó «À», óñëîâèÿ — â êîëîíêè «Â», «Ñ» è ò.ä. (ðèñ.1). Èìÿ âåðøèíû è èìåíà àòðèáóòîâ â êàæäîé ôîðìå ìîæíî èçìåíÿòü â ñîîòâåò- ñòâèè ñ òðåáóåìîé ñõåìîé XML.  «Ñåëåêòîðå» èìåíà âåðøèí è àòðèáóòîâ âûâîäÿò- ñÿ, êàê â XML-äîêóìåíòå. Îäíàêî â äðóãîé ðåàëèçàöèè ìîæåò áûòü äîïîëíèòåëüíî ïðåäóñìîòðåíà âèçóàëèçàöèÿ èñõîäíûõ èìåí èç êîíöåïòóàëüíîé è/èëè ëîãè÷åñêîé ñõåìû ÁÄ. 174 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 Ïðèíöèïû ôîðìèðîâàíèÿ óñëîâèé íà ñêàëÿðíûå àòðèáóòû â ðàìêàõ îäíîé ôîðìû àíàëî- ãè÷íû QBE. Óñëîâèÿ â îäíîé êîëîíêå îáúåäèíÿþòñÿ êîíúþí- êöèåé, ãðóïïû óñëîâèé ðàçíûõ êîëîíîê — äèçúþíêöèåé.  óñ- ëîâèÿõ ðàçðåøåíî èñïîëüçîâàòü ñêàëÿðíûå çíà÷åíèÿ (ñòðîêè, ÷èñëà), äðóãèå àòðèáóòû òîé æå âåðøèíû, àòðèáóòû âåðøèí, ïðåäøåñòâóþùèõ ýòîé âåðøè- íå â äåðåâå îáõîäà ïîäñõåìû â ôîðìàòå <âåðøèíà>.<àòðèáóò> èëè <âåðøèíà>[<èíäåêñ>].<àò- ðèáóò>. Îòñóòñòâèå èíäåêñà èíòåðïðåòèðóåòñÿ êàê óêàçàíèå íà ïåðâûé ýêçåìïëÿð âåðøèíû <âåðøèíà> ñðåäè ïðåäêîâ òå- êóùåé âåðøèíû â äåðåâå îáõî- äà. Ïîëîæèòåëüíûé èíäåêñ îáîçíà÷àåò ïîðÿäêîâûé íîìåð ýêçåìïëÿðà âåðøèíû <âåðøè- íà> ñðåäè ïðåäêîâ òåêóùåé âåðøèíû â äåðåâå îáõîäà, ñ÷èòàÿ îò êîðíÿ, ìîäóëü îòðèöàòåëüíîãî èíäåêñà — ïî- ðÿäêîâûé íîìåð, ñ÷èòàÿ îò òåêóùåé âåðøèíû. Åñëè óñëîâèå ñîäåðæèò óêàçàíèå íà âåðøèíó, êîòîðîé ñðåäè ïðåäêîâ òåêóùåé âåðøèíû â äåðåâå îáõîäà íåò, îíî èãíî- ðèðóåòñÿ. Óñëîâèÿ ïî ñâÿçè ìåæäó âåðøèíàìè ïîääåðæèâàþòñÿ àâòîìàòè÷åñêè è çàäàâàòü èõ â ôîðìå íå íóæíî.  äîïîëíèòåëüíûå ñòðîêè ìîæíî äîáàâëÿòü âû÷èñëÿåìûå àòðèáóòû â âèäå âû- ðàæåíèé íàä òåìè æå ýëåìåíòàìè: ñêàëÿðíûìè çíà÷åíèÿìè, àòðèáóòàìè òåêóùåé âåðøèíû è ïðåäøåñòâóþùèõ åé âåðøèí. Ãðàôîâûå çàïðîñû ñ äîïîëíèòåëüíûìè ñòðîêàìè â âåðøèíàõ íå ïîääåðæèâàþò îáíîâëåíèé XML-ïðåäñòàâëåíèÿ. ÑÑÑ, ñôîðìèðîâàííàÿ â ðåçóëüòàòå âûïîëíåíèÿ ÃÇ, ìîæåò áûòü ïî-ðàçíîìó ïðåä- ñòàâëåíà â XML. Êîíöåïöèè ÑÑÑ íàèáîëåå îòâå÷àåò ñõåìà XML-äîêóìåíòà, â êîòîðîé îáúåêòû ÑÑÑ ïðåäñòàâëåíû ýëåìåíòàìè XML, à àòðèáóòû — àòðèáóòàìè. Îäíàêî ñ òî÷- êè çðåíèÿ ñîâìåñòèìîñòè ñ SQL/XML öåëåñîîáðàçíà ïîääåðæêà àëüòåðíàòèâíîãî ïðåä- ñòàâëåíèÿ àòðèáóòîâ ÑÑÑ â âèäå ýëåìåíòîâ XML ñ âîçìîæíîñòüþ êîäèðîâàòü èõ äîïîë- íèòåëüíûå ñâîéñòâà. Íàïðèìåð, ïðèçíàê îòñóòñòâèÿ çíà÷åíèÿ (NULL) êîäèðóåòñÿ çíà÷å- íèåì àòðèáóòà xsi:nil=“true”. Âûáîð âàðèàíòà ïðåäñòàâëåíèÿ àòðèáóòîâ — ïàðàìåòð íàñòðîéêè ER-QBE.  «Ñåëåêòîðå» — ýòî îáùàÿ íàñòðîéêà íà âåñü XML-äîêóìåíò, êàê FOR XML AUTO â SQL/XML.  äðóãîé ðåàëèçàöèè ìîæåò áûòü ïðåäóñìîòðåíà èíäè- âèäóàëüíàÿ íàñòðîéêà ïðåäñòàâëåíèÿ êàæäîãî àòðèáóòà, êàê â XDR. Îäíàêî ãèáêîñòè FOR XML IMPLICIT ER-QBE íå äîñòèãàåò: ïîëíîòà ÃÇ îòíîñèòñÿ ê èíôîðìàöèè â XML-äîêóìåíòå, à íå ê åå ôîðìàòèðîâàíèþ. (Íàïðèìåð, â ðåëÿöèîííûõ áàçàõ SQL è QBE íå îáåñïå÷èâàþò ãèáêîñòè ãåíåðàòîðà îò÷åòîâ.)  öåëîì ïîëüçîâàòåëüñêèé èíòåðôåéñ ER-QBE î÷åíü áëèçîê ê èíòåðôåéñó òðà- äèöèîííûõ QBE-ïîäîáíûõ ãåíåðàòîðîâ çàïðîñîâ. Åãî îñîáåííîñòè: � âåðòèêàëüíîå, à íå ãîðèçîíòàëüíîå ðàñïîëîæåíèå àòðèáóòîâ â ôîðìå (îíî ñî- îòâåòñòâóåò âåðòèêàëüíîìó ïðåäñòàâëåíèþ ýëåìåíòîâ îäíîãî óðîâíÿ ïðè âèçóàëè- çàöèè XML-äîêóìåíòà ñòàíäàðòíûìè ïðîãðàììàìè, íàïðèìåð Internet Explorer); � àòðèáóòû ðàçíûõ êëàññîâ íå ñîáèðàþòñÿ â îáùóþ ôîðìó, à ðàññìàòðèâàþòñÿ îòäåëüíî. 2.2. Ðåàëèçàöèÿ XML-ïðåäñòàâëåíèé îñíîâàíà íà òðàíñëÿöèè ÃÇ, îïèñàííîãî ER-QBE, â íàáîð îáû÷íûõ çàïðîñîâ ê ÁÄ. Áóäåì ïðèäåðæèâàòüñÿ ñèíòàêñèñà ÿçûêà SQL, êîòîðûé îáåñïå÷èâàåò óíèâåðñàëüíóþ ñèíòàêñè÷åñêóþ îñíîâó ïîäàâëÿþùåãî áîëüøèíñòâà ñîâðåìåííûõ ÿçûêîâ çàïðîñîâ ðåëÿöèîííûõ, îáúåêòíî-ðåëÿöèîííûõ è îáúåêòíî-îðèåíòèðîâàííûõ ÁÄ. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 175 Ðèñ. 1. ER-QBE â ïðîãðàììå «Ñåëåêòîð» Ïóñòü � � S 2 — ÿçûê âìåùàþùåé ÑÓÁÄ äëÿ ÁÄ ñî ñõåìîé S , äîïîëíåííîé ñèíî- íèìàìè èç ïîäñõåìû �2 . Îáîçíà÷èì ÃÇ G2 2� ( , )� � , ãäå �2 — ïîäñõåìà, a � � � � � S T2 2 — ìíîæåñòâî îãðàíè÷åíèé, ñîïîñòàâëåííûõ òåðìèíàëàì ÃÇ. Îïðåäåëèì ëîãè÷åñêîå îãðàíè÷åíèå, íàëîæåííîå íà ïðàâèëüíóþ öåïî÷êó � ïîäñõåìû ÑÑÑ �2 , êàê êîíúþíêöèþ îãðàíè÷åíèé, ñîïîñòàâëåííûõ âåðøèíàì è äó- ãàì � k . Ñîïîñòàâèì ýòîé öåïî÷êå ïîñëåäîâàòåëüíîñòü � èìåí âåðøèí ïîäñõåìû, ïðîéäåííûõ ïðè îáõîäå ïîäñõåìû ñîãëàñíî öåïî÷êå �, à èìåííî � �1 1� n( ) â ïåð- âîé ïîçèöèè è �k Z� , åñëè ( : )p X Z P L k� � � �1 1 2 � � äëÿ k-é ïîçèöèè. Îáîçíà÷èì � k ïðîèíäåêñèðîâàííûå íîìåðîì âõîæäåíèÿ ñèìâîëû ïîñëåäîâà- òåëüíîñòè � èìåí âåðøèí ïîäñõåìû. Ñôîðìèðóåì çàïðîñ íà ÷òåíèå äàííûõ èç ÁÄ ïî ñëåäóþùèì ïðàâèëàì. �  ÷àñòè SELECT çàïðîñà ïåðå÷èñëÿþòñÿ âûáðàííûå àòðèáóòû ñ ïðåôèêñîì � k , óòî÷íÿþùèì, ê êàêîìó ñèìâîëó öåïî÷êè îòíîñèòñÿ àòðèáóò. Äëÿ ñòàòè÷åñêèõ XML-ïðåäñòàâëåíèé â ôîðìóëû âû÷èñëÿåìûõ àòðèáóòîâ ïðåôèêñû � k àòðèáóòîâ-àð- ãóìåíòîâ ïîäñòàâëÿþòñÿ àíàëîãè÷íûì îáðàçîì. Ýêçåìïëÿðû, èäåíòèôèêàòîðû êîòî- ðûõ íå ñïåöèôèöèðîâàíû â ÷àñòè SELECT êàêîãî-íèáóäü çàïðîñà, â XML-äîêóìåíòå íå îòîáðàæàþòñÿ (ïðîïóñêàþòñÿ), õîòÿ è ó÷àñòâóþò â åãî ôîðìèðîâàíèè. Äëÿ äèíàìè- ÷åñêèõ XML-ïðåäñòàâëåíèé îòñóòñòâóþùèå àòðèáóòû-èäåíòèôèêàòîðû ýêçåìïëÿðîâ ïîäñòàâëÿþòñÿ àâòîìàòè÷åñêè ñîãëàñíî îãðàíè÷åíèþ 2 (ï. 2.1). �  ÷àñòè FROM ïåðå÷èñëÿþòñÿ êëàññû f k( )� ñõåìû ÑÑÑ ñ óêàçàíèåì â êà÷åñ- òâå ñèíîíèìîâ ñîîòâåòñòâóþùèõ ñèìâîëîâ � k . �  ÷àñòè WHERE äëÿ ñïåöèôèêàöèè óñëîâèé èñïîëüçóåòñÿ ñîîòâåòñòâóþùåå èñ÷èñëåíèå. Äëÿ êëàññè÷åñêîé ðåëÿöèîííîé ìîäåëè — ýòî èñ÷èñëåíèå ïðåäèêàòîâ ïåðâîãî ïîðÿäêà. Óñëîâèÿ ñîåäèíåíèÿ ïî ñâÿçè âñòàâëÿþòñÿ â êîíúþíêöèþ àâòîìà- òè÷åñêè ñ ó÷åòîì ñòåïåíè çàâèñèìîñòè äóãè: â êîììåð÷åñêèõ ÑÓÁÄ ïîìèìî ïðî- ñòîãî ñîåäèíåíèÿ (inner join) — � � � �k k k kf f( ) ( )� � 1 ìîæíî ïðèìåíÿòü è âíåø- íåå ñîåäèíåíèå (left outer join) — � � � �k k k kf f( ) ( )* � � 1 .  ñëó÷àå âíåøíåãî ñîå- äèíåíèÿ � k äîëæíû âûâîäèòüñÿ â XML íåçàâèñèìî îò íàëè÷èÿ ñâÿçàííûõ ñ íèìè � k � 1. Ê óñëîâèÿì ñîåäèíåíèÿ ïîñðåäñòâîì êîíúþíêöèé äîáàâëÿþòñÿ îãðàíè÷åíèÿ, ñîîòâåòñòâóþùèå ñèìâîëàì öåïî÷êè: { }� � �| ( , )k � . � Äëÿ óïîðÿäî÷åíèÿ ðåçóëüòàòîâ çàïðîñà äîáàâëÿåòñÿ ORDER BY ñ ïåðå÷èñëå- íèåì àòðèáóòîâ òî÷íî òàêèì, êàê â ÷àñòè SELECT. Îïèñàííûå ïðàâèëà îáåñïå÷èâàþò äèíàìè÷åñêóþ (â ïðîöåññå ôîðìèðîâàíèÿ XML-ïðåäñòàâëåíèÿ) òðàíñëÿöèþ ÃÇ â ñîâîêóïíîñòü çàïðîñîâ ÑÓÁÄ. Ñîåäèíåíèå, ïîëó÷åííîå â ðåçóëüòàòå âûïîëíåíèÿ ñôîðìèðîâàííîãî îïèñàí- íûì îáðàçîì çàïðîñà ïî îäíîé ïðàâèëüíîé öåïî÷êå ïîäñõåìû, ñîîòâåòñòâóåò ôðàã- ìåíòó XML-äîêóìåíòà — ëåñó äåðåâüåâ îáõîäà ÑÑÑ. Âîññòàíîâèòü èåðàðõè÷åñêóþ ñòðóêòóðó äîñòàòî÷íî ïðîñòî, òàê êàê ïðè ïîñëåäîâàòåëüíîì ïðîñìîòðå çàïèñåé î ïåðåõîäå ê ñëåäóþùåìó ýêçåìïëÿðó íà êàæäîì óðîâíå èåðàðõèè ñèãíàëèçèðóåò èçìåíåíèå ñîîòâåòñòâóþùåãî êëþ÷åâîãî àòðèáóòà. 2.3. Äèíàìè÷åñêèå (âèðòóàëüíûå) XML-ïðåäñòàâëåíèÿ ðåàëèçóþòñÿ ñîâðåìåí- íûìè ÑÓÁÄ â ôîðìå URL-çàïðîñîâ íà îñíîâå SQL/XML èëè çàïðîñîâ XPath íà îñíîâå XDR. Îáå òåõíîëîãèè õîðîøî ñîãëàñóþòñÿ ñ ÃÇ. Åñëè ê çàïðîñó, ñãåíåðèðî- âàííîìó äëÿ îäíîé ïðàâèëüíîé öåïî÷êè ïîäñõåìû, äîáàâèòü ÷àñòü FOR XML AUTO èëè FOR XML AUTO ELEMENTS, ÑÓÁÄ, ïîääåðæèâàþùèå SQL/XML, òà- êèå êàê Microsoft SQL Server, âîññòàíîâÿò èåðàðõè÷åñêóþ ñòðóêòóðó XML-ïðåä- ñòàâëåíèÿ ïî ïðàâèëàì, àíàëîãè÷íûì ïðàâèëàì ÃÇ. Ðàçíûì èñõîäíûì òàáëèöàì ñî- ïîñòàâëÿþòñÿ ðàçíûå óðîâíè èåðàðõèè, àòðèáóòû ïðåäñòàâëÿþòñÿ àòðèáóòàìè èëè ýëåìåíòàìè, â çàâèñèìîñòè îò îòñóòñòâèÿ èëè íàëè÷èÿ óòî÷íåíèÿ ELEMENTS. Íàïðèìåð, äëÿ çàïðîñà SELECT Customers.CustomerID, Customers.ContactName, Orders.OrderID FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID FOR XML AUTO ðåçóëüòàò ìîæåò èìåòü âèä 176 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 <Customers CustomerID="ALFKI" ContactName="Maria Anders"> <Orders OrderID="10643"/> <Orders OrderID="10692"/> <Orders OrderID="10702"/> <Orders OrderID="10835"/> <Orders OrderID="10952"/> <Orders OrderID="11011"/> </Customers> à äëÿ çàïðîñà SELECT Customers.CustomerID, Customers.ContactName, Orders.OrderID FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID FOR XML AUTO, ELEMENTS èìåòü âèä <Customers> <CustomerID>ALFKI</CustomerID> <ContactName>Maria Anders</ContactName> <Orders><OrderID>10643</OrderID></Orders> <Orders><OrderID>10692</OrderID></Orders> <Orders><OrderID>10702</OrderID></Orders> <Orders><OrderID>10835</OrderID></Orders> <Orders><OrderID>10952</OrderID></Orders> <Orders><OrderID>11011</OrderID></Orders> </Customers> Äëÿ ïîëó÷åíèÿ ïîëíîãî äèíàìè÷åñêîãî XML-ïðåäñòàâëåíèÿ ÃÇ äîñòàòî÷íî ïå- ðå÷èñëèòü URL-çàïðîñû, ñîîòâåòñòâóþùèå âñåì ïðàâèëüíûì öåïî÷êàì ïîäñõåìû â òåêñòå çàïðîñà XQuery, íàïðèìåð: <result> { doc(“http://IISServer/db1?sql=SELECT+*+FROM+Providers+FOR+XML+AUTO &root=Providers”) doc(“http://IISServer/db1?sql=SELECT+CustomerID+ContactName+FROM +Customers+Orders+FOR+XML+AUTO&root=Customers”) } </result> Ïðèìåíåíèå çàïðîñîâ XPath àíàëîãè÷íî ïðèìåíåíèþ URL-çàïðîñîâ, çà èñêëþ- ÷åíèåì òîãî, ÷òî ïî êàæäîìó ïîäçàïðîñó òèïà SELECT íóæíî ñîçäàâàòü ðåëÿöèîí- íîå ïðåäñòàâëåíèå (CREATE VIEW...) è ãåíåðèðîâàòü XDR-ñõåìó — îïèñàíèå ñî- îòâåòñòâèÿ ìåæäó ñõåìîé ðåëÿöèîííîãî ïðåäñòàâëåíèÿ è ñõåìîé ñîîòâåòñòâóþùåãî âèðòóàëüíîãî XML-ïðåäñòàâëåíèÿ. Ìåõàíèçì ÃÇ îáåñïå÷èâàåò àâòîìàòè÷åñêîå ôîðìèðîâàíèå XDR-îïèñàíèé ñ âûáîðîì ôîðìû ïðåäñòàâëåíèÿ êàæäîãî àòðèáóòà ÁÄ — áîëåå ãèáêèõ, ÷åì FOR XML AUTO, íî íå FOR XML IMPLICIT. Ñ òî÷êè çðåíèÿ ïðîñòîòû ðåàëèçàöèè èñïîëüçîâàíèå URL-çàïðîñîâ íà îñíîâå SQL/XML äëÿ ÃÇ ïðåäïî÷òèòåëüíåå. 2.4. Àâòîìàòè÷åñêîå îáíîâëåíèå ÁÄ íà îñíîâå èçìåíåíèé XML-ïðåäñòàâëåíèÿ â îáùåì ñëó÷àå — òðóäíàÿ çàäà÷à (â ñâÿçè ñ âîçìîæíîñòüþ ïðîÿâëåíèÿ ïîáî÷íûõ ýôôåêòîâ). Îñíîâíûå ïîäõîäû â ýòîé îáëàñòè: 1) ñâåäåíèå çàäà÷è ê îáíîâëåíèþ ðåëÿöèîííûõ ïðåäñòàâëåíèé; 2) âûäåëåíèå êëàññîâ èåðàðõè÷åñêèõ ïðåäñòàâëåíèé, äëÿ êîòîðûõ îïåðàöèè èç- ìåíåíèÿ çíà÷åíèé àòðèáóòîâ, âñòàâêè è óäàëåíèÿ ìîãóò áûòü îòòðàíñëèðîâàíû â áåçîïàñíóþ ñ òî÷êè çðåíèÿ ïîáî÷íûõ ýôôåêòîâ ïîñëåäîâàòåëüíîñòü îïåðàöèé.  ðàìêàõ âòîðîãî ïîäõîäà íà îñíîâå ìîäåëè âëîæåííûõ îòíîøåíèé âûäåëåí êëàññ õîðîøî âëîæåííûõ NPSJ-ïðåäñòàâëåíèé (îò Nest-last Project-Select-Join — âëîæåííîñòü â ôîðìå ïðîåêöèè ðåçóëüòàòîâ ïðîñòîãî îòáîðà è îáúåäèíåíèÿ), îáëà- äàþùèé óêàçàííûì ñâîéñòâîì [18]. Ïðèçíàê äàííîãî êëàññà — íàëè÷èå åäèíñòâåí- ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 177 íîé çàïèñè-èñòî÷íèêà (ýêçåìïëÿðà) ëþáîãî ýëåìåíòà èåðàðõèè. Õîðîøàÿ âëîæåí- íîñòü íå ãàðàíòèðóåò êîððåêòíîñòè ëþáîé ìîäèôèêàöèè XML-ïðåäñòàâëåíèÿ. Îíà ãàðàíòèðóåò òîëüêî âíóòðåííþþ íåïðîòèâîðå÷èâîñòü ìîäèôèöèðîâàííîãî XML-äîêóìåíòà: èçìåíåíèå êàæäîãî àòðèáóòà è ýëåìåíòà âûïîëíÿåòñÿ íåçàâèñèìî îò äðóãèõ (îòñóòñòâèå èçáûòî÷íîñòè). Îäíàêî èçìåíåíèå çíà÷åíèÿ ìîæåò ïðèâåñòè ê íàðóøåíèþ îãðàíè÷åíèé ïî çíà÷åíèÿì, çàëîæåííûõ â ÃÇ, èëè óñëîâèé öåëîñòíîñòè ÁÄ. Äëÿ XML-ïðåäñòàâëåíèÿ íà îñíîâå ER-QBE ïðèíàäëåæíîñòü ê êëàññó õîðîøî âëîæåííûõ NPSJ-ïðåäñòàâëåíèé îáåñïå÷èâàåòñÿ àëãîðèòìîì òðàíñëÿöèè ÃÇ â ÿçûê âìåùàþùåé ÑÓÁÄ, èçëîæåííûì â ï. 2.2 ïðè âûïîëíåíèè ñëåäóþùèõ îãðàíè÷åíèé: 1) îòîáðàæåíèå n2 âåðøèí ïîäñõåìû íà êëàññû ñõåìû — âçàèìíî îäíîçíà÷- íîå: q N p N q p n q n p � � � �2 2 2 2( ) ( ) ; 2) åñòåñòâåííûé èåðàðõè÷åñêèé ïîðÿäîê: p P P f s tL L� �2 2 2 � � * ( ( ), , ) � �L t s1 ! , èíà÷å ãîâîðÿ, n2 ( )� — ñâÿçü òèïà (1:N) èëè (0:N). Ïîñêîëüêó îáíîâëÿåìûå XML-ïðåäñòàâëåíèÿ íà îñíîâå ER-QBE âñåãäà ñîäåð- æàò ID ýêçåìïëÿðà, ñòàíäàðòíûå ïàðàìåòðè÷åñêèå çàïðîñû ÑÓÁÄ íà èçìåíåíèå çíà- ÷åíèé àòðèáóòîâ, âñòàâêó è óäàëåíèå ýêçåìïëÿðà äëÿ êàæäîé âåðøèíû ÃÇ ãåíåðèðó- þòñÿ ýëåìåíòàðíî. Îäíàêî â ðåàëüíûõ ïðèëîæåíèÿõ èõ, êàê ïðàâèëî, íåîáõîäèìî äîðàáàòûâàòü.  ÑÓÁÄ «ÌèêðîÏîèñê» ýòè çàïðîñû õðàíÿòñÿ â âèäå èñõîäíûõ òåê- ñòîâ ïàðàìåòðè÷åñêèõ çàïðîñîâ â âåðøèíàõ ÃÇ. Îòñóòñòâèå òåêñòà çàïðîñà îçíà÷àåò çàïðåò ñîîòâåòñòâóþùåé ìîäèôèêàöèè ÷åðåç èçìåíåíèå XML-ïðåäñòàâëåíèÿ.  îò- ëè÷èå îò êëàññè÷åñêîãî QBE, ER-QBE íå ïðåäîñòàâëÿåò ñðåäñòâ âèçóàëüíîãî ôîð- ìèðîâàíèÿ ñëîæíûõ çàïðîñîâ íà ìîäèôèêàöèþ äàííûõ â ÁÄ. Âûáîð ñäåëàí â ïî- ëüçó ïðîñòîòû, òàê êàê â ðàìêàõ îäíîãî ÃÇ òàêèõ çàïðîñîâ ïîíàäîáèëîñü áû â òðè ðàçà áîëüøå ÷èñëà âåðøèí è â êàæäîì èç íèõ ìîãëè áû ïîòðåáîâàòüñÿ äàííûå èç òàáëèö, íå èñïîëüçóåìûõ ïðè ôîðìèðîâàíèè XML-ïðåäñòàâëåíèÿ. Áîëåå àêòóàëüíûì äëÿ îáíîâëåíèÿ XML-ïðåäñòàâëåíèÿ íà îñíîâå ÃÇ ÿâëÿåòñÿ âîïðîñ ãåíåðèðîâàíèÿ ïîñëåäîâàòåëüíîñòè íåîáõîäèìûõ èçìåíåíèé ÁÄ â ñâÿçè ñ ïîñòóïëåíèåì èçìåíåííîãî XML-äîêóìåíòà. Äëÿ õîðîøî âëîæåííûõ XML-ïðåä- ñòàâëåíèé ïîðÿäîê ìîäèôèêàöèè ñîâïàäàåò ñ ïîðÿäêîì ñëåäîâàíèÿ ñèìâîëîâ âåð- øèí � k â ñòðîêàõ ãðàììàòèêè ïîäñõåìû. Ïóñòü URL èñõîäíîãî XML-äîêóìåíòà — �1, à URL ìîäèôèöèðîâàííîãî XML-äîêóìåíòà — � 2 . Äëÿ ôîðìèðîâàíèÿ â âèäå XML-äîêóìåíòà çàäàíèÿ íà ìîäèôèêàöèþ ýêçåìïëÿðîâ, ñîîòâåòñòâóþùèõ ýëåìåí- òàì � k , âîñïîëüçóåìñÿ ÿçûêîì XQuery, êîòîðûé â íà÷àëå 2007 ãîäà ðåêîìåíäîâàí êîíñîðöèóìîì W3C äëÿ ïðåîáðàçîâàíèÿ XML-äàííûõ â Èíòåðíåò-ïðèëîæåíèÿõ [8, 19]. Áóäåì èñïîëüçîâàòü ïîëóôîðìàëüíûå âûðàæåíèÿ XPath, èìåÿ â âèäó, ÷òî òåêñò XQuery àâòîìàòè÷åñêè ãåíåðèðóåòñÿ äëÿ êàæäîãî ñèìâîëà êàæäîé ïðàâèëüíîé öåïî÷êè ïîäñõåìû: <result>{ let $a := doc(“�1”)/� � �1 2/ / ... / k let $b := doc(“� 2 ”)/� � �1 2/ / ... / k <delete>{ for $c in $a where not exists($b[@ID=$c/@ID]) return(<entity dbname="n k2 ( )� " key="n k2 (� .ID)" ID="{$c/@ID/text()}">) }</delete> <insert>{ for $c in $b where not exists($a[@ID=$c/@ID]) return(<entity dbname="n2 2( )� " refname="n k2 1( )� � " refkey="n k2 1( . )� � ID " refID="{$c/../../@ID/text()}" ID="{$c/@ID/text()}"> for $d in $c/@* return(<attribute dbname="n k2 ( .[$ / ()])� d nmtoken ">{$d/text()}</attribute>) for $d in $c/* where(not(exists($d/*))) return(<attribute dbname="n k2 ( .[$ / ()])� d nmtoken ">{$d/text()}</attribute>) </entity>) }</insert> 178 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 <update>{ for $c in $b, $d in $a where $c/@ID=$d/@ID and exists(return( for $e in $c/@*, $f in $d/@* where $e/nmtoken()=$f/nmtoken() and $e/text()!=$f/text() return (<dummy/>) for $e in $c/*, $f in $d/* where (not exists($e/*)) and $e/nmtoken()=$f/nmtoken() and $e/text()!=$f/text() return (<dummy/>) )) return(<entity dbname="n k2 ( )� " key="n k2 ( . )� ID " ID="{$c/@ID/text()}"> for $e in $c/@*, $f in $d/@* where $e/nmtoken()=$f/nmtoken() and $e/text()!=$f/text() return(<attribute dbname="n k2 ( .[$ / ()])� e nmtoken ">{$e/text()}</attribute>) for $e in $c/*, $f in $d/* where (not exists($e/*)) and $e/nmtoken()=$f/nmtoken() and $e/text()!=$f/text() return(<attribute dbname="n k2 ( .[$ / ()])� e nmtoken ">{$e/text()}</attribute>) </entity>) }</update> }</result>  ðåçóëüòàòå âûïîëíåíèÿ îïèñàííîãî çàïðîñà äëÿ òåêóùåãî ñèìâîëà � k ïðà- âèëüíîé öåïî÷êè ïîäñõåìû � ôîðìèðóåòñÿ XML-äîêóìåíò ñ òðåìÿ ðàçäåëàìè: <delete> (óäàëèòü), <insert> (âñòàâèòü), <update> (èçìåíèòü), â êîòîðûõ ïåðå÷èñëå- íû ýêçåìïëÿðû ÁÄ è àòðèáóòû, ïîäëåæàùèå ìîäèôèêàöèè íà äàííîì øàãå. Äëÿ âñòàâêè ñîõðàíÿåòñÿ òàêæå èíôîðìàöèÿ îá ýêçåìïëÿðå íà ïðåäûäóùåì óðîâíå èå- ðàðõèè. Ñîáñòâåííûé èäåíòèôèêàòîð çàïèñè âûâîäèòñÿ â ýòîì ñëó÷àå òîëüêî äëÿ îáåñïå÷åíèÿ ññûëî÷íîé öåëîñòíîñòè íà ñëåäóþùèõ óðîâíÿõ èåðàðõèè (äëÿ ñëåäóþ- ùåãî ñèìâîëà öåïî÷êè �, åñëè îí åñòü). Çàïðîñ ðàáîòàåò äëÿ XML-ïðåäñòàâëåíèé ñ àòðèáóòàìè ÁÄ êàê â ôîðìå ýëåìåíòîâ, òàê è â ôîðìå àòðèáóòîâ XML. 3. ÏÐÈÌÅÍÅÍÈÅ XML-ÏÐÅÄÑÒÀÂËÅÍÈÉ ÄËß ÈÍÒÅÃÐÀÖÈÈ ÄÀÍÍÛÕ Â ÏÐÎÌÛÑËÎÂÎÉ ÃÅÎÔÈÇÈÊÅ Îáðàáîòêà è èíòåðïðåòàöèÿ ãåîôèçè÷åñêèõ äàííûõ — ñëîæíûé ïðîöåññ, âêëþ- ÷àþùèé íåñêîëüêî óðîâíåé äåòàëèçàöèè. Íà êàæäîì óðîâíå ïðèìåíÿþòñÿ îòäåëüíûå ìåòîäû èññëåäîâàíèÿ, òåõíîëîãèè îáðàáîòêè è èíòåðïðåòàöèè, ïðî- ãðàììíûå ðåøåíèÿ, à äëÿ îáìåíà äàííûìè ìåæäó íèìè èñïîëüçóþòñÿ êàê âíóò- ðåííèå, òàê è îòêðûòûå ôîðìàòû äàííûõ. Çàäà÷è èíòåðïðåòàöèè äàííûõ ãåîôè- çè÷åñêèõ èññëåäîâàíèé â áîëüøèíñòâå ñëó÷àåâ îòíîñÿòñÿ ê êëàññó íåäîîïðåäå- ëåííûõ ìíîãîïàðàìåòðè÷åñêèõ çàäà÷ ñ íåäîñòîâåðíûìè âõîäíûìè äàííûìè, ïîýòîìó ãåîëîãî-ãåîôèçè÷åñêèå èññëåäîâàíèÿ ïðåäñòàâëÿþò ñîáîé èòåðàòèâíûé ïðîöåññ.  ñâÿçè ñ ïîñòóïëåíèåì äîïîëíèòåëüíîé èíôîðìàöèè ðåãóëÿðíî ïðîâî- äèòñÿ ïåðåèíòåðïðåòàöèÿ äàííûõ, ïåðåïîäñ÷åò çàïàñîâ è ò.ï. Ãåîôèçè÷åñêàÿ àï- ïàðàòóðà, ìåòîäû èíòåðïðåòàöèè è ìåòîäû îáðàáîòêè äàííûõ ïîñòîÿííî ñîâåð- øåíñòâóþòñÿ, ïîýòîìó îãðàíè÷èòüñÿ âíåäðåíèåì åäèíñòâåííîé ïðîãðàììíîé ñèñ- òåìû ñ åäèíîé ÁÄ íåðåàëüíî.  äîáûâàþùèõ è ãåîôèçè÷åñêèõ êîìïàíèÿõ ïðèíÿòî õðàíèòü âñå èñõîäíûå äàííûå è âàðèàíòû èõ èíòåðïðåòàöèè. Ê íàñòîÿ- ùåìó âðåìåíè íàêîïëåíû îãðîìíûå îáúåìû òàêîé èíôîðìàöèè â âèäå ôàéëîâ è ÁÄ ðàçëè÷íûõ ïðîãðàìì, ÷àñòî óñòàðåâøèõ. Àêòóàëüíîé çàäà÷åé ÿâëÿåòñÿ ñîçäà- íèå è ïîääåðæêà èíôîðìàöèîííûõ õðàíèëèù ãåîôèçè÷åñêîé èíôîðìàöèè [20]. Èíôîðìàöèîííîå õðàíèëèùå äîëæíî îáåñïå÷èâàòü åäèíóþ, ïîëíîöåííóþ, ñèñòå- ìàòèçèðîâàííóþ è íåïðîòèâîðå÷èâóþ ñîâîêóïíîñòü äàííûõ, èçâëå÷åííûõ èç ðàç- ëè÷íûõ èñòî÷íèêîâ è ñòàâøèõ äîñòóïíûìè êîíå÷íûì ïîëüçîâàòåëÿì äëÿ ïîíèìàíèÿ è ïðèìåíåíèÿ. Äëÿ ñèíõðîíèçàöèè ãåîôèçè÷åñêèõ äàííûõ ìåæäó ðàçëè÷íûìè ÁÄ, â ÷àñòíîñ- òè ñ öåëüþ ïîääåðæêè èíôîðìàöèîííîãî õðàíèëèùà, XML îáëàäàåò ðÿäîì âàæíûõ ïðåèìóùåñòâ ïî ñðàâíåíèþ ñ òàáëèöàìè ÁÄ: ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 179 � èåðàðõè÷åñêàÿ ñòðóêòóðà XML-äîêóìåíòîâ ñîîòâåòñòâóåò îáùåé èåðàðõè÷åñ- êîé ñòðóêòóðå ãåîôèçè÷åñêèõ äàííûõ (ðåãèîí-ìåñòîðîæäåíèå-êóñò-ñêâàæè- íà-ñòâîë-èññëåäîâàíèå) è îáëåã÷àåò ïðåäñòàâëåíèå ìíîãîîáðàçèÿ âëîæåííûõ èå- ðàðõèé íà îäíîì óðîâíå (ñ ìåñòîðîæäåíèåì ñâÿçàíû ïëàñòû, ðàçëîìû, ñêâàæèíû, ñåéñìè÷åñêèå èññëåäîâàíèÿ è ò.ï., â ñâîþ î÷åðåäü ñòðóêòóðèðîâàííûå); ðåëÿöèîí- íàÿ ìîäåëü «ïåðåâîðà÷èâàåò» ýòó èåðàðõèþ, òàê êàê ñâÿçè 1:N ðåàëèçóþòñÿ âíåøíè- ìè êëþ÷àìè è îãðàíè÷åíèÿìè öåëîñòíîñòè, è ðàçáèâàåò íà ôðàãìåíòû, ïîñêîëüêó ïðåäñòàâëåíèå âñåé áàçû äàííûõ îäíèì «ñóïåðîòíîøåíèåì» íåýôôåêòèâíî; � êîíñòðóêöèÿ «//» XQuery ïîçâîëÿåò èñêàòü äàííûå íà ëþáîì óðîâíå èåðàðõèè áåç äåòàëüíîé ñïåöèôèêàöèè ïóòè; â SQL-çàïðîñàõ íåîáõîäèìî ó÷èòûâàòü âñå ïðîìå- æóòî÷íûå óðîâíè èåðàðõèè, ò.å. äåòàëüíî çíàòü ñõåìó êàæäîãî èñòî÷íèêà äàííûõ; � XQuery ïîçâîëÿåò ïåðåíîñèòü âëîæåííûå èåðàðõèè öåëèêîì; â ðåëÿöèîííûõ áàçàõ äëÿ ðåàëèçàöèè îäíîé òàêîé îïåðàöèè íóæíî íàïèñàòü ïðîöåäóðó, ñîñòîÿ- ùóþ èç ñïåöèàëüíîé ïîñëåäîâàòåëüíîñòè çàïðîñîâ; � òðàäèöèîííûå êëèåíò-ñåðâåðíûå èíòåðôåéñû ÑÓÁÄ òðåáóþò íàëè÷èÿ ñïåöèàëü- íîãî ïðîãðàììíîãî îáåñïå÷åíèÿ äëÿ äîñòóïà ê ÁÄ (äðàéâåðîâ, áèáëèîòåê). Äëÿ èíòåãðà- öèè äàííûõ äâóõ ðàçíûõ ÁÄ íåîáõîäèìî îðãàíèçîâàòü ñîâìåñòíóþ ðàáîòó ñ äâóìÿ ÑÓÁÄ. XML-ïðåäñòàâëåíèÿ ïîñòðîåíû ïî ïðèíöèïó «òîíêîãî êëèåíòà» — íå òðåáóþò àäìèíèñòðèðîâàíèÿ è ñïåöèàëüíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ íà ñòîðîíå êëèåíòà; � ðåàëèçîâàòü ýêñïîðò â XML äàííûõ ëþáîãî èçâåñòíîãî ôîðìàòà, êàê è ýêñïîðò XML èç ïðîãðàìì, ïîääåðæèâàþùèõ ãåíåðàöèþ òåêñòîâûõ îò÷åòîâ, ãîðàçäî ëåã÷å, ÷åì îáåñïå÷èòü äîñòóï ê òàêèì äàííûì â SQL (íàïðèìåð, ïóòåì ðàçðàáîòêè ODBC- èëè OLE-DB-ïðîâàéäåðà); â ãåîôèçè÷åñêèõ ôàéëîâûõ àðõèâàõ òàêèå ñïåöèàëüíûå äàí- íûå ïðåîáëàäàþò, ïðåäâàðèòåëüíîå ñîõðàíåíèå âñåõ äàííûõ ôàéëà â îäèí XML-äîêó- ìåíò óìåíüøàåò ðèñêè ðàññîãëàñîâàíèÿ äàííûõ è ïîòåðè ÷àñòè èíôîðìàöèè; � XML — îñíîâà ìåæïðîãðàììíîãî âçàèìîäåéñòâèÿ ñîãëàñíî ìåæäóíàðîäíûì ñòàíäàðòàì ebXML (ISO/TS 15000:2004) è OpenXML (ECMA 376).  ðàìêàõ îïèñàííîé çàäà÷è èíòåãðàöèè äàííûõ öåëåñîîáðàçíî ïðåíåáðå÷ü ïðîèçâîäèòåëüíîñòüþ (ñêîðîñòüþ âûïîëíåíèÿ àâòîìàòè÷åñêèõ îïåðàöèé) ðàäè ñíè- æåíèÿ îáúåìà ðó÷íîãî òðóäà. ×àñòî àðõèâíûå ñèñòåìû ÁÄ óñïåâàþò ìîðàëüíî óñòàðåòü äî òîãî, êàê â íèõ óäàåòñÿ îðãàíèçîâàòü èíôîðìàöèîííûé ïîèñê ïî äåñÿò- êàì èëè ñîòíÿì òûñÿ÷ ñêâàæèí ãåîôèçè÷åñêîãî àðõèâà. Ðàññìîòðèì âàðèàíò èñïîëüçîâàíèÿ XQuery äëÿ ñâåäåíèÿ ê óíèôèöèðîâàííîé ôîðìå äàííûõ XML-ïðåäñòàâëåíèé ðàçëè÷íûõ ÁÄ íà ïðèìåðå èíòåãðàöèè äàííûõ ïà- êåòîâ «ÃåîÏîèñê» [21] (ÑÓÁÄ «ÌèêðîÏîèñê»), è «Tesseral Pro» (ÑÓÁÄ Microsoft SQL Server 2003). Ýêñïîðò XML-äîêóìåíòîâ, ôðàãìåíòû êîòîðûõ ïîêàçàíû íà ðèñ. 2, âû- ïîëíåí ñ ïîìîùüþ ïðîãðàììû «Ñåëåêòîð». Èçâåñòíû íåñêîëüêî ðåàëèçàöèé XQuery: Saxon [22]), Galax [23], Quizx [24], SEDNA [25]. Äëÿ âûïîëíåíèÿ XQuery-çàïðîñîâ èñ- ïîëüçîâàí Saxon. Íà ðèñ. 3 ïðèâåäåí XQuery-çàïðîñ, íàïèñàííûé äëÿ èõ èíòåãðàöèè. 180 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 Ðèñ. 2. XML-äîêóìåíòû äëÿ ÁÄ: à — ìåñòîðîæäåíèå-ñêâàæèíà-êàðîòàæ; á — ìåñòîðîæäåíèå– ñêâàæèíà–ïðîïëàñòêè a á ÇÀÊËÞ×ÅÍÈÅ ßçûê ER-QBE íà îñíîâå ãðàôîâûõ çàïðîñîâ îáåñïå÷èâàåò èíòóèòèâíûé âèçóàëü- íûé ñïîñîá ñïåöèôèêàöèè XML-ïðåäñòàâëåíèé ðåëÿöèîííûõ, îáúåêòíî-ðåëÿöè- îííûõ è îáúåêòíî-îðèåíòèðîâàííûõ ÁÄ. Ãðàôîâûå çàïðîñû îáëàäàþò ïîëíîòîé ñ òî÷êè çðåíèÿ âûäåëåíèÿ èåðàðõè÷åñêè-óïîðÿäî÷åííûõ ôðàãìåíòîâ ÁÄ íà îñíî- âå ER-ïîäîáíîé êîíöåïòóàëüíîé ìîäåëè. ER-QBE ïðîñòî è ýôôåêòèâíî ðåàëèçó- þòñÿ â ëþáîé ÑÓÁÄ ñ SQL-ïîäîáíûì ÿçûêîì çàïðîñîâ. Ðåàëèçàöèÿ ER-QBE àâ- òîìàòè÷åñêè îáåñïå÷èâàåò âîçìîæíîñòü îáíîâëåíèÿ ÁÄ íà îñíîâå èçìåíåíèÿ XML-ïðåäñòàâëåíèé, â ñî÷åòàíèè ñ SQL/XML ïîääåðæèâàåò äèíàìè÷åñêèå XML-ïðåäñòàâëåíèÿ. Ñîâìåñòíîå èñïîëüçîâàíèå ãðàôîâûõ çàïðîñîâ è XQuery ïîçâîëÿåò ñóùåñòâåííî óïðîñòèòü èíòåãðàöèþ äàííûõ ðàçíûõ ÁÄ, ïîääåðæêó ñî- ãëàñîâàíèÿ äàííûõ â èíôîðìàöèîííûõ õðàíèëèùàõ. Ðåàëèçàöèÿ ER-QBE â ñî- ñòàâå ÑÓÁÄ «ÌèêðîÏîèñê» îïðîáîâàíà â çàäà÷àõ èíòåãðàöèè ãåîôèçè÷åñêèõ äàííûõ.  õîäå äàëüíåéøåãî èññëåäîâàíèÿ ïðåäñòàâëÿåò èíòåðåñ ðàññìîòðåíèå âîçìîæíîñòè ïðèìåíåíèÿ ãðàôîâûõ çàïðîñîâ äëÿ ñïåöèôèêàöèè ïðåîáðàçîâàíèÿ XML-äîêóìåíòîâ ñðåäñòâàìè XQuery. ÏÐÈËÎÆÅÍÈÅ Äîêàçàòåëüñòâî òåîðåìû 1. Ðàññìîòðèì ïðîèçâîëüíóþ ãðàììàòèêó ÑÑÑ �. Ïîñ- òðîèì ïî L* ( )� ãðàô ïåðåõîäîâ àâòîìàòà â âèäå äåðåâà ñ âåòâÿìè, ñîîòâåòñòâóþ- ùèìè ïðàâèëüíûì öåïî÷êàì. Ïî ïîñòðîåíèþ îí ÿâëÿåòñÿ ÑÑÑ. ßçûê ãðàììàòèêè Ã1 ïî ïîñòðîåíèþ — ñîêðàùåíèå ÿçûêà ãðàììàòèêè � � �: ( ) ( )*L L� 1 . Ïîêàæåì, ÷òî ëþáàÿ ãðàììàòèêà ÑÑÑ ñ êîíå÷íûì ÿçûêîì èìååò ïîëíóþ ïîä- ñõåìó ñ êîíå÷íûì ÿçûêîì. Äëÿ ýòîãî äîñòàòî÷íî ïðèâåñòè àëãîðèòì ïîñòðîåíèÿ òà- êîé ïîäñõåìû. Îáîçíà÷èì k-é ñèìâîë òåðìèíàëüíîé öåïî÷êè � L( )�1 êàê � k . Ðàñ- ñìîòðèì ïàðû âèäà o f k n o n f kk k� �[ ( ), ], ( ) [ ( ( )), ]� � â êà÷åñòâå ñèìâîëîâ àëôàâèòà ñ èíäåêñîì k. Ïóñòü �2 2 2� � � �( ( ) | ~ ,N n o o O N A{ } { } T O B N2 � � �( ) ~ , A P P P P PE E L L2 2 2 2 2 2, )* * � � � � , ãäå ~ N — ìíîæåñòâî öåëûõ ÷èñåë, P p A f x n f x L xE x2 2 2 1 11 2� � �{ }: [ ( ), ] ([ ( ), ]) | ( )� �� , P p A f x L xE x2 2 2 1 11* : [ ( ), ] | ( )� � �{ }� �� , ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 181 Ðèñ. 3. Èíòåãðàöèÿ äàííûõ ñèñòåì «ÃåîÏîèñê» è «Tesseral Pro»: à — XQuery-çàïðîñ; á — ðåçóëüòàò èíòåãðàöèè XML-äîêóìåíòîâ áa P p n f n X k f y n f n Z kL y2 2 1 11 1� � � �{ : ([ ( ( )), ]) [ ( ), ] ([ ( ( )), ]) | ( )� �L �1 � � � y X yZ Pk L� ( ) 1}, P p n f n X k f y L yL y k2 2 1 11* : ([ ( ( )), ]) [ ( ), ] | ( ) (� � � � �{ � �� X y PL ) * 1}. Ïîìåòèì êàæäóþ ïðîäóêöèþ åå íèæíèì èíäåêñîì — òåðìèíàëüíûì ñèìâî- ëîì ñîîòâåòñòâóþùåé ïðîäóêöèè èç �1. Óñëîâèÿ 1–5 ïîäñõåìû îáåñïå÷èâàþòñÿ äëÿ �2 ïî ïîñòðîåíèþ. Åñëè öåïî÷êà � L( )�1 è � �� , ïî ïîñòðîåíèþ � L( )�1 . Òàê êàê ÿçûê L( )�1 êî- íå÷íûé, äëèíà öåïî÷åê îãðàíè÷åíà ñâåðõó. Òàêèì îáðàçîì, èíäåêñû íåòåðìèíàëîâ �2 îãðàíè÷åíû. Åñëè ïðîäóêöèÿ �2 ñîäåðæèò â ïðàâîé ÷àñòè íåòåðìèíàë, åãî èíäåêñ íà åäèíèöó ïðåâîñõîäèò èíäåêñ íåòåðìèíàëà â åå ëåâîé ÷àñòè. Îòñþäà ñëåäóåò, ÷òî äëèíà öåïî÷åê, âûâîäèìûõ â �2 , îãðàíè÷åíà. Ñëåäîâàòåëüíî, ÿçûê L( )�2 — êîíå÷íûé. Äîêàæåì, ÷òî ëþáîé òåðìèíàëüíîé öåïî÷êå � ãðàììàòèêè �1 ñîîòâåòñòâóåò õîòÿ áû îäíà ïîñëåäîâàòåëüíîñòü ïðîäóêöèé �2 , âûâîäÿùàÿ òåðìèíàëüíóþ öåïî÷êó. Äëÿ öåïî÷åê èç îäíîãî ñèìâîëà ýòî óòâåðæäåíèå î÷åâèäíî. Ïóñòü îíî î÷åâèäíî äëÿ öåïî- ÷åê äëèíîé k. Äëÿ | |� � �k 1 çàìåíèì ïîñëåäíþþ ïðîäóêöèþ â ïîñëåäîâàòåëüíîñòè, âûâîäÿùåé öåïî÷êó, ñîîòâåòñòâóþùóþ � � �1 2 . . . k , íà ïàðíóþ ê íåé ñ íåòåðìèíàëîì â ïðàâîé ÷àñòè. Ïî ïîñòðîåíèþ �2 ñîäåðæèò ïðîäóêöèþ, ïðèâîäÿùóþ ïîñëåäíèé íå- òåðìèíàë ê òåðìèíàëüíîìó ñèìâîëó. Ïî èíäóêöèè �2 ÿâëÿåòñÿ ïîëíîé ïîäñõåìîé �1. Òåîðåìà äîêàçàíà. Äîêàçàòåëüñòâî òåîðåìû 2. Äîñòàòî÷íî ïðèâåñòè àëãîðèòì ïîñòðîåíèÿ ÃÇ, óäîâëåòâîðÿþùåãî óñëîâèþ äàííîé òåîðåìû. Ðàçîáüåì èñõîäíîå ìíîæåñòâî öåïî÷åê L� ( )�1 íà îäíîòèïíûå ãðóïïû. Äëÿ ýòîãî êàæäîé öåïî÷êå ýêçåìïëÿðîâ � ñîïîñòàâèì òàêóþ öåïî÷êó êëàññîâ �, ÷òî � �k kf� ( ) , è îòíåñåì ê îäíîé ãðóïïå s� âñå öåïî÷êè � �L ( )�1 , ñîïîñòàâëåííûå �. Ðàññìîòðèì ãðàô ïåðåõîäîâ àâòîìàòà â âèäå äåðåâà ñ âåòâÿìè, ñîîòâåòñòâóþùèìè èçáðàííûì èç êàæäîé ãðóïïû ïðåäñòàâèòåëÿì. Ïî ïî- ñòðîåíèþ îí ÿâëÿåòñÿ ÑÑÑ ñ êîíå÷íûì ÿçûêîì. Îáîçíà÷èì ñîîòâåòñòâóþùóþ ãðàì- ìàòèêó �2 ; åå ìîæíî âûáðàòü â êà÷åñòâå ïîëíîé ïîäñõåìû �1 ïî îïðåäåëåíèþ. Ïî ïîñòðîåíèþ L( )�2 ñîäåðæèò ðîâíî îäíó öåïî÷êó äëÿ êàæäîé òåðìèíàëüíîé âåðøè- íû. Íàãðóçèì ýòó öåïî÷êó � îãðàíè÷åíèåì íà ÿçûêå âìåùàþùåé ÑÓÁÄ òàê, ÷òîáû çàïðîñ, ïîñòðîåííûé ïî îïèñàííûì â ï. 2.2 ïðàâèëàì, îïèñûâàë ïîäìíîæåñòâî s L� � ( )�1 . Ýòî âîçìîæíî ïî óñëîâèþ. Ñîïîñòàâèì ïîëó÷åííîå îãðàíè÷åíèå òåðìè- íàëüíîé âåðøèíå �2 , ñîîòâåòñòâóþùåé ïîñëåäíåìó ñèìâîëó öåïî÷êè �. Ïîëó÷åí- íûé ÃÇ íàçîâåì G2 2� ( , )� � . Îáîçíà÷èì ìíîæåñòâî öåïî÷åê G2 êàê M G( )2 . Ïî ïîñòðîåíèþ ( ( ) ( )M G L2 1� � � . Äîïóñòèì, � � � �� �L M G( ) ( )�1 2 .  ñèëó òîãî, ÷òî �2 — ïîëíàÿ ïîäñõåìà, òåðìèíàëüíîé öåïî÷êå � ñîîòâåòñòâóåò ðîâíî îäíà òåðìè- íàëüíàÿ öåïî÷êà � L( )�2 . Ñëåäîâàòåëüíî, � íå óäîâëåòâîðÿåò åäèíñòâåííîìó óñëî- âèþ, îïèñûâàþùåìó s� . Ïîëó÷åíî ïðîòèâîðå÷èå. Òåîðåìà äîêàçàíà. ÑÏÈÑÎÊ ËÈÒÅÐÀÒÓÐÛ 1. B r a y T . , P a o l i J . Extensible Markup Language (XML) 1.0 (2nd Edition) / Sperberg-McQueen (Eds). — W3C Recommendation. (http://www.w3.org/TR/2000/REC-xml-20001006) 2. L e e D . , C h u W . Comparative analysis of six XML schema languages // ACM SIGMOD Record. — 2000. — N 29. — P. 76–87. 3. S h a n m u g a s u n d a r a m J . , S h e k i t a E . , B a r r R . e t a l . Efficiently publishing relational data as XML documents // Proc. of VLDB. — Cairo, Egipt: ACM SIGMOD, 2000. — P. 65–76. 4. C a r e y M . , F l o r e s c u D . , I v e s Z . e t a l . XPERANTO: Publishing object-relational data as XML // Informal Proc. of WebDB 2000. — Dallas, USA: ICM SIGMOD, 2000. — P. 105–110. 5. R y s M . Bringing the internet to your database: using SQLServer 2000 and XML to build loosely-coupled systems // Proc. of ICDE’01. — Heidelberg, Germany: IEEE Comp. Soc., 2001. — P. 465–472. 6. www.sqlxml.org. 182 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 7. D e u t s c h A . , F e r n a n d e z M . , F l o r e s c u D . e t a l . A query language for XML // Proc. of WWW8. — Toronto, Canada: CNRC, 1999. — P. 77–91. 8. C h a m b e r l i n D . , F l o r e s c u D . , R o b i e J . e t a l . XQuery: a query language for XML. — 2001. (http://www.w3.org/TR/query) 9. R o d r i g u e z - G i a n o l l i P . , M y l o p o u l o s J . A semantic approach to XML-based data integration // Proc. of ER’01. — Yokohama, Japan: Springer-Verlag, 2001. — P. 117–132. 10. L e e D . , M a n i M . , C h i u F . e t a l . NeT and CoT: Translating relational schemas to XML schemas using semantic constraints // Proc. of ACM CIKM. — McLean, Virginia, USA: ACM SIGMOD, 2002. — P. 206–217. 11. Ñ à ì î õ â à ë î â Í . À . Ïîääåðæêà îáíîâëåíèé XML-ïðåäñòàâëåíèé íàä ðåëÿöèîííûìè áàçàìè // Ïðîáë. ïðîãðàììèðîâàíèÿ — 2006. — ¹ 2–3. — Ñ. 455–457. 12. à ð å ÷ ê î  . Î . , Ò ó ë ü ÷ è í ñ ê è é  . à . , Ò ó ë ü ÷ è í ñ ê è é Ï . à . Îò QBE ê ãðàôîâûì çàïðîñàì // Òð. VI Ìåæäóíàð. êîíô. «Çíàíèå–Äèàëîã–Ðåøåíèå». — Êèåâ: Àññîöèàöèÿ ñîçäàòåëåé è ïîëüçîâàòåëåé èíòåëëåêòóàëüíûõ ìàøèí, 1997. — Ò. 1. — Ñ. 216–224. 13. Ò ó ë ü ÷ è í ñ ê è é  . à . , Ò ó ë ü ÷ è í ñ ê è é Ï . à . Ãðàôîâûé ïðîòîòèï ïðèëîæåíèÿ // Ïðîáë. ïðîãðàììèðîâàíèÿ. — 2002. — ¹ 1-2. — Ñ. 489–498. 14. A g r a w a l S . , C h a u d h u r i S . , N a r a s a y y a V . Automated selection of materialized views and in- dexes in SQL databases // Proc. of VLDB, 2000. — Cairo, Egypt: VLDB, 2000. — P. 496–505. 15. M i l l e r R . J . , H a a s L . , H e r n a n d e z M . A . Schema mapping as query discovery // Proc. of VLDB, 2000. — Cairo, Egypt: VLDB, 2000. — P. 227–236. 16. Z l o o f M . M . Query by Example // Proc. of AFIPS, 1975. — Anaheim, CA, USA: AFIPS, 1975. — N 44. — P. 431–438. 17. Ò ó ë ü ÷ è í ñ ê è é  . à . , Ò ó ë ü ÷ è í ñ ê è é Ï . à . Ãðàôîâûå çàïðîñû äëÿ èíòåãðàöèè äàííûõ ïîñðåäñòâîì XML // Òð. III Ìåæäóíàð. êîíô. «Òåîðåòè÷í³ òà ïðèêëàäí³ àñïåêòè ïîáóäîâè ïðîãðàìíèõ ñèñòåì». — Êèåâ: Êè¿â. íàö. óí-ò ³ì. Ò.Ã. Øåâ÷åíêà. — 2006. — Ò. 1. — Ñ. 92–95. 18. B r a g a n h o l o V . On Updatability of XML Views over Relational Databases // Proc. of WebDB 2003. — 2003. (http://www.cse.ogi.edu/webdb03/presentations/06.pdf) 19. D e u t s c h A . , F e r n a n d e z M . , F l o r e s c u D . e t a l . A query language for XML // Proc. of WWW8. — Toronto, Canada: CNRC, 1999. — P. 77–91. 20. à ð å ÷ ê î  . Î . , Ò ó ë ü ÷ è í ñ ê è é  . à . , Ò ó ë ü ÷ è í ñ ê è é Ï . à . , Õ à ð ÷ å í ê î À .  . Èíôîðìàöèîííûå õðàíèëèùà â ïðîìûñëîâîé ãåîôèçèêå // Ïðîáë. ïðîãðàììèðîâàíèÿ. — 2000. — ¹ 1–2. — Ñ. 81–90. 21. www.geopoisk.com. 22. saxon.sourceforge.net. 23. www.galaxquery.org. 24. www.axyana.com/xquest. 25. modis.ispras.ru/sedna/index.htm. Ïîñòóïèëà 16.05.2007 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2008, ¹ 2 183