23
XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery Piotr Szwed Katedra Automatyki AGH

XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

  • Upload
    jontae

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery. Piotr Szwed Katedra Automatyki AGH. Plan prezentacji. Czym są sieci XQPN? Język XQuery Definicja sieci XQPN Wykonanie sieci Prototypowa implementacja Przewidywane zastosowania. Czym są sieci XQPN?. - PowerPoint PPT Presentation

Citation preview

Page 1: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą

języka XQuery

Piotr Szwed

Katedra Automatyki AGH

Page 2: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

2

Plan prezentacji

• Czym są sieci XQPN?• Język XQuery• Definicja sieci XQPN• Wykonanie sieci• Prototypowa implementacja• Przewidywane zastosowania

Page 3: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

3

Czym są sieci XQPN?

Sieci XQPN (XQuery Petri Networks)• Kolorowane sieci Petriego pozwalające na

wykonywanie operacji na zawartości dokumentów XML przypisanych miejscom sieci.

• W sieciach XQPN łukom przypisane są wyrażenia – zapytania języka XQuery

Motywacje• Narzędzie do specyfikacji aplikacji

internetowych wykorzystujących usługi sieciowe (web service). Celem jest przeprowadzenie automatycznych testów sterowanych wykonaniem tranzycji w sieci służącej, jako wzorzec

Page 4: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

4

Język XQuery

• XQuery (ang. XML Query Language) jest językiem zapytań przeznaczonym do ekstrakcji danych z dokumentów XML i baz danych oferujących interfejs XML

• Prace zapoczątkowano w 2001. W styczniu 2007 język XQuery 1.0 otrzymał oficjalną rekomendację organizacji W3C

• Wiele implementacji: – Saxon, Altova XML – Oracle, IBM DB2, Microsoft SQL Server

Page 5: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

5

XQuery - cechy języka

• Nadzbiór XPath • Zapytania XQuery zwracają ciągi wartości

atomowych lub znaczników XML (węzłów).• Możliwość dodawania znaczników i modyfikacji

struktury węzłów (w wynikowej sekwencji)• Możliwość łączenia danych z różnych

dokumentów• Definiowanie zmiennych i funkcji użytkownika• Wywoływanie zewnętrznych funkcji

Page 6: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

6

XQuery – elementy składni

• Instrukcje FLWORfor $x in /bookstore/book

where $x/price>30

order by $x/title

return $x/title

• Przypisanielet $y := expression …

• Instrukcje warunkoweif(condition)then exp1 else exp2

Page 7: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

7

Sieci XQPN - definicja

XQPN = (P, T, A, Q, W, G) • P – zbiór miejsc,• T – zbiór tranzycji, P T = • A  P  T  T  P zbiór łuków,• Q: A  Q, funkcja przydzielająca łukom

zapytania XQuery, przez Q oznaczony jest zbiór wszystkich zapytań,

• W: P  T  (N  {*})  (N  {*}) funkcja przypisującą łukom wejściowym pary liczb określających krotność łuku.

• G: T  Q jest funkcją przypisującą tranzycjom dozory, czyli zapytania XQuery zwracające wartości logiczne.

Page 8: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

8

Sieci XQPN - znakowanie

Znakowaniem sieci XQPN nazywamy funkcję M : P M, która przydziela miejscom dokumentyXML ze zbioru M.

Zakładamy, że identyfikatora miejsca p jest teżkorzeniem dokumentu M(p) przypisanego domiejsca p  P Nazwy korzeni dokumentów muszą być unikalne.

Page 9: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

9

XQPN – łuki i wyrażenia

read

deleteoutput

Łuki wejściowe•Usuwające węzły XML (delete)•Odczytujące węzły XML (read)

Wyrażenia: XPath, FLWOR, przypisanie let $x := expression

Dopuszczalna jest zależność zmiennych wejściowych (nie cykliczna)

Łuki wyjścioweDodają węzły XML do miejsc wyjściowych

Wyrażenia•Odwołują się do zmiennych wejściowych•Dopuszczalne jest stosowanie instrukcji FLWOR, if-then-else, dodawanie nowych znaczników

Page 10: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

10

XQPN - przykład

• Zmiennej lokalnej $x zostanie przypisana sekwencja węzłów spełniająca predykat [./@id>12]

• Węzły zostaną przeniesione z miejsca store do out

store T

let $x := /*/item[./@id>12]

out

$x

mul

<store><item id='7'/><item id='12'/><item id='13'/><item id='21'/><item id='27'/>

</store>

Page 11: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

11

XQPN - krotność

store T

let $x := /*/item[./@id>12]

out

$x

mul

Krotność określa liczbę elementów (węzłów), które zostaną odczytane lub usunięte z miejsc wejściowych podczas wykonania tranzycji.

• Krotność ma postać pary liczb [min,max] lub pojedynczego symbolu (min=max)• Dopuszczalny jest symbol * (wszystkie elementy)• Tranzycja usunie (odczyta) z sekwencji wejściowej co najmniej min elementów i co najwyżej max elementów• Jeżeli sekwencja wejściowa zawiera mniej niż min węzłów, tranzycja nie może zostać wykonana

• Dla mul = 4 tranzycja jest niedopuszczalna• Dla mul = * tranzycja usunie wszystkie elementy spełniające predykat [./@id>12]• Dla mul = 1 tranzycja usunie jeden element

Page 12: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

12

XQPN – wykonanie sieci

Wykonanie sieci to ciąg odpaleń tranzycji

Wykonanie tranzycji:• Ustalenie wiązania• Faza właściwa – usunięcie znaczników z miejsc

wejściowych i dodanie znaczników do miejsc wyjściowych

Page 13: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

13

XQPN – wyznaczanie wiązania 1

• Sieci kolorowane CPN– Wiązanie to przypisanie wartości do zmiennych w wyrażeniach.

• Sieci XQPN– Zmienne związane przez wyrażenia– Zmienne mogą zmieniać wartość w trakcie wykonania (iteracja)

store T

let $x := /*/item[./@id>12]

out

for $y in $xreturn <item><id>{ data($y/@id) }</id></item>

1

Stąd, w sieciach XQPN– Wiązania wyznaczane wyłącznie dla zmiennych wejściowych– W praktyce: ukrytych zmiennych związanych z łukami wejściowymi– Do sekwencji węzłów, która ma zostać przypisana zmiennej stosuje się

ograniczenia wynikające z krotności

Page 14: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

14

XQPN – wyznaczanie wiązania 2

Algorytm wyznaczania wiązania

1. Wykonaj zapytanie exp-i i zapisz wynik w zmiennej tymczasowej: let $tmp :=  exp-i,

2. Wyznacz ciąg węzłów będących bezpośrednimi potomkami korzenia dokumentu przypisanego do miejsca, dla których wejściowe zapytanie zwróciłoby sekwencję $tmp: $inputset-i = local:upcast($tmp)

3. Jeżeli liczba elementów count($inputset-i) nie mieści się w przedziale określonym przez krotność łuku wejściowego – STOP, wiązanie jest niedozwolone

4. Zastosuj ograniczenie wynikające z krotności do ciągu $inputset-i i zapisz wynik w zmiennej $inputnodes-i :

let $inputnodes-i := local:arbitray_select(inputset-i)

5. Wyznacz wiązanie zmiennej $xi jako:let $xi := $inputnodes-i exp-i

p-i

p-j

T

let x-i := exp-i

let x-j := exp-j

r

it1 it2 ... itk

n

x

Page 15: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

15

XQPN – dozory tranzycji

users

form

T logged

let $users := /users/user

let $fdata :=/form/formdata$users

$users/login = $fdata/@login and$users/password = $fdata/@password

1

1

users

form

T logged

let $users := /users/user[./login=$fdata/@login and

./password=$fdata/@password]

let $fdata := /form/formdata$users

1

1

Dozory są zapytaniami XQuery zwracającymi wartości logiczne.

Są przypisane bezpośrednio tranzycjom.

Dozory decydują o dopuszczalności tranzycji dla danego wiązania zmiennych łuków wejściowych.

Często dozory można wyeliminować zastępując je zależnością (bardziej efektywne).

Page 16: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

16

XQPN – odpalenie tranzycji

Odpalenie tranzycji polega na uaktualnieniuzawartości danych w miejscach wejściowych i wyjściowych. pl-i pl-j

Dla miejsc wejściowych• return <pl-i>{/pl-i/* except $inputnodes-i}</pl-i>

Dla miejsc wyjściowych• obliczana jest wyjściowa sekwencja węzłów $outputnodes-j na

podstawie wyrażenia przypisanego łukowi wyjściowemu

• return <pl-j>{/pl-j/* union $outputnodes-j}</pl-j>

Page 17: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

17

XQPN – implementacja 1

Decyzje projektowe– Które elementy algorytmu wykonania tranzycji mają

być implementowane w środowisku XQuery, a które poza nim?

– Konieczność przeformułowania zapytań – dla zapewnienia zgodności ze specyfikacją sieci i poprawy efektywności

– Rozmiar dokumentów XML podlegających przetwarzaniu – bazy danych czy kilka elementów

– Dobór komponentu odpowiedzialnego za wykonanie zapytań XQuery

Page 18: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

18

XQPN – implementacja 2

Dwie prototypowe implementacje

Altova XML – interfejs COM, platforma .NET, C #– Wydajny dla małych zbiorów danych– Ciasny interfejs COM– Manipulacje poza XQuery poprzez DOM

Saxon-B – interfejs XQJ, platforma Java– Mniej wydajny dla niewielkich dokumentów, bardziej

wydajny dla dokumentów >10000 węzłów– Łatwość manipulacji poza środowiskiem XQuery

Page 19: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

19

XQPN – przewidywane zastosowania

• Automatyczna generacja przypadków testowych dla aplikacji wykorzystujących usługi sieciowe (web service)

• Pasywne testy aplikacji internetowych• Generacja szkieletu aplikacji na podstawie

modelu XQPN

Page 20: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

20

XQPN – zastosowania 2Model aplikacji wykorzystującej usługi sieciowe

(automatyczna generacja scenariuszy testowych).

Test Data View Controller Model

goods

vgoods

addToCart

session

displayCart

cartinquantity

vcart

*

let $iq := //num

1

1

let $ses := //vgoods/@sessionlet $vitem := //item

return <id>{$ses}</id>return <cartitem>{$ses}<id>{string($itemid/@id)}</id> <quantity>{string($iq)}</quantity></cartitem>

let $ses := //id1

*

return <vcartsession='{$ses}'>...

let $items := //item[./@id=$cart/id]

[$iq>0 and $iq<=$vitem/stock and$iq<=$item/stock]

let $cart := //cartitem[./@session=$ses]

goods

let $item := //item[./@id=$vitem/@id]

1

1

addToCartFail

vbuyerrorreturn <vbuyerror>{$ses} <id>{string($itemid)}</id><quantity>{string($iq)}</quantity> {$item/stock}</vbuyerror>

let $iq := //num

let $ses := //vgoods/@sessionlet $vitem := //item

1

let $item := //item[./@id=$vitem/@id] 1

[$iq=0 or $iq>$vitem/stock or$iq>$item/stock]

Page 21: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

21

XQPN – zastosowania 3Komponenty systemu do testowania usług sieciowych

Initial Marking XML

Model

Test Data

Test ResultXML

Proxy(patched)

WebServiceBD

XQPN EXecutor

Transition2WebMapper

Test Driver

DB Logger

Comparator

DB Logger

XQPN Editor

WebApp

Output XML

DB contentXML

TransitionBinding

XQPNStructure

ReachedMarking XML

Test CaseResult

Page 22: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

22

Podsumowanie

• Sieci XQPN są proponowane jako narzędzie specyfikacji aplikacji wykorzystujących XML jako wewnętrzny format wymiany danych

• Miejsca sieci przechowują dokumenty XML (reprezentujące dane formularzy, rekordy bazy danych, itp.)

• Składnia wyrażeń przypisanych łukom jest zgodna z językiem XQuery

• W implementacjach do wykonania tranzycji używane są gotowe procesory XQuery

Page 23: XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

23

XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery

Dziękuję za uwagę