Username: (Neptun-kód) Password: 123456 Host: eszakigrid106.inf.elte.hu Port: 1521 Service name: orcl.inf.elte.hu Feladatok: 1. Az SWP-ben a wine modellből SPARQL segítségével gyűjtsük ki a vörös, száraz borok nevét (wine) és ízét (flavor) és az eredményt mentsük le RDF/XML fájlba. (A wine ontológia: http://www.w3.org/TR/owl-guide/wine.rdf ) # Hosszú megoldás: PREFIX wine: PREFIX owl: PREFIX rdfs: SELECT ?wine ?flavor WHERE { ?type rdfs:subClassOf ?c . ?c owl:onProperty wine:hasColor . ?c owl:hasValue wine:Red . ?type rdfs:subClassOf ?f . ?f owl:onProperty wine:hasFlavor . ?f owl:hasValue ?flavor . ?type rdfs:subClassOf ?d . ?d owl:onProperty wine:hasSugar . ?d owl:hasValue wine:Dry . ?wine a ?type . } # Ez csak azokat találja meg, amelyeknek csak 1 ízük van. # Nem lenne egyszerűbb az, hogy "?wine wine:hasColor wine:Red" ? # OWLSIF -> lehet! # Rövid, de semmiből ki nem található megoldás: # Még jó, hogy volt egy minta lekérdezés erről! PREFIX wine: SELECT ?wine ?flavor WHERE { ?wine wine:hasColor wine:Red . ?wine wine:hasFlavor ?flavor . ?wine wine:hasSugar wine:Dry . } # Default Rulebase: OWLSIF # Execute Query (NEM a Without Inference!) 2. Oracle-ben hozzunk létre egy pelda(id,xm,xst,res) táblát, ahol id egész értékű, xm és xst XML típusú oszlop, a res pedig szöveget (HTML kódot) fog majd tárolni. create table pelda ( id integer, xm xmltype, xst xmltype, res varchar2(4000) ); 3. Az 1. feladat RDF/XML eredményét töltsük be az id=1 sorba, az xm oszlopba. Az 1. feladat eredménye az alábbi: flavor wine wine wine wine flavor wine flavor flavor flavor flavor flavor wine flavor flavor flavor wine wine flavor wine wine flavor wine flavor wine flavor flavor wine wine flavor flavor flavor wine wine flavor wine wine flavor wine flavor wine wine Ezt töltöttem fel a /tmp/D2SOFR/ könyvtárba, red_dry_wine.rdf néven. CREATE OR REPLACE DIRECTORY TMP AS '/tmp/D2SOFR/'; insert into pelda(id,xm) values (1,XMLType(bfilename('TMP','red_dry_wine.rdf'), nls_charset_id('EE8ISO8859P2'))); 4. Oracle-ben kérdezzük le, hogy a ChateauMorgonBeaujolais bornak milyen az íze (flavor)? SELECT p.xm.EXTRACT('/*[name()="rdf:RDF"]/*[name()="rdf:Description"][@*[name()="rdf:nodeID"]=(/*[name()="rdf:RDF"]/*[name()="rdf:Description"][*[name()="rs:binding"]/@*[name()="rdf:nodeID"]=(//*[name()="rdf:Description"][*[name()="rs:value"]/@*[name()="rdf:resource"]="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#ChateauMorgonBeaujolais"]/@*[name()="rdf:nodeID"])]/*[name()="rs:binding"][1]/@*[name()="rdf:nodeID"])]/*[name()="rs:value"]/@*[name()="rdf:resource"] ') FROM pelda p WHERE ID=1; 5. Készítsünk egy XSLT-t, amely egy HTML lapot készít az 1. feladat eredményéből, amelyen az adatok wine,flavor fejlécű táblázatban szerepelnek, és mentsük el az XSLT-t.

Red, Dry Wine

WineFlavor
6. Töltsük be az XSLT-t, mint XML fájlt az id=1 sor, xst oszlopába. update pelda set xst='

Red, Dry Wine

WineFlavor
' where id=1; 7. Írjunk egy Oracle eljárást, amely a pelda tábla minden sorára az xm oszlopában tárolt XML-re alkalmazza az xst oszlopában tárolt XSLT-t és az eredményt a res oszlopba teszi. CREATE OR REPLACE PROCEDURE pelda_XSLT(id0 integer) is BEGIN UPDATE pelda SET res = XMLTRANSFORM(xm,xst) WHERE ID = id0; end; / 8. Teszteljük az eljárást az id=1 sorral. CALL pelda_XSLT(1); SELECT res FROM pelda;