POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového prostoru pro RDF systémové tabulky. Doporučuje se vytvořit, aby se nedávaly systémové RDF tabulky mezi ostatní systémové tabulky do tabulkového prostoru SYSTEM. Příklad (1): CREATE TABLESPACE rdf_tblspace DATAFILE 'rdf_Premyslovci.dat' SIZE 1024M REUSE AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED SEGMENT SPACE MANAGEMENT AUTO; 2. Vytvoření RDF sítě (může provést uživatel, který má právo DBA). Je nutné vytvořit, aby bylo možno využívat RDF modely. Příklad (2): EXECUTE SDO_RDF.CREATE_RDF_NETWORK('rdf_Premyslovci'); Vestavěná procedura, která vytvoří RDF síť zadaného jména. 3. Vytvoření tabulky pro uložení RDF dat Je nutné vytvořit. Příklad (3): CREATE TABLE PREMYSLOVCI_RDF_DATA (id NUMBER, triple SDO_RDF_TRIPLE_S); Vytvořená tabulka bude uchovávat RDF data a má dva atributy. Atomický identifikátor (id) a atribut triple (trojice), který je objektového datového typu ve struktuře: ID trojice, ID modelu, ID subjektu, ID vlastnosti a ID objektu.
4. Vytvoření RDF modelu Je nutné vytvořit Příklad (4): EXECUTE SDO_RDF.CREATE_RDF_MODEL('PREMYSLOVCI', 'PREMYSLOVCI_RDF_DATA', 'TRIPLE'); Vestavěná procedura, která vytvoří RDF model jména PREMYSLOVCI, RDF data se budou ukládat do tabulky PREMYSLOVCI_RDF_DATA, vytvořené v příkladu (3) a to do id a objektového atributu TRIPLE, definovaných v příkladu (3) se bude vkládat identifikátor a jednotlivé trojice.
POSTUP PRO VKLÁDÁNÍ DAT DO TABULKY TROJIC Modifikovaný příkaz INSERT, který obsahuje SDO_RDF_TRIPLE_S konstruktor pro vkládání trojic do tabulky. Příklad (5): INSERT INTO PREMYSLOVCI_RDF_DATA VALUES (1, SDO_RDF_TRIPLE_S('PREMYSLOVCI', 'http://www.osu.cz/premyslovci/Borivoj', 'http://www.osu.cz/premyslovci/fatherOf', 'http://www.osu.cz/premyslovci/Spytihnev')); formát konstruktoru: model_name varchar2 subject varchar2 property varchar2 object varchar2
-- jméno modelu -- subjekt -- vlastnost (predikát) -- objekt
Všechny tři zdroje mohou být URI, subjekt a objekt mohou být prázdným uzlem, objekt může být literál.
POSTUP PRO DEFINOVÁNÍ DATABÁZE PRAVIDEL A JEJICH VKLÁDÁNÍ DO DATABÁZE 1. Programový blok, který vytváří index nad databází pravidel Příklad (6): BEGIN SDO_RDF_INFERENCE.CREATE_RULES_INDEX ( 'rdfs_rix_PREMYSLOVCI', SDO_RDF_Models('PREMYSLOVCI'), SDO_RDF_Rulebases('RDFS') ); END; Po vytvoření indexu umožní zadávat dotazy bez dedukce. Pro deduktivní dotazy je třeba nejdříve vytvořit databázi pravidel a do ní vložit příslušná pravidla, která budou využívána při odvozování. 2. Vytvoření databáze pravidel EXECUTE SDO_RDF_INFERENCE.CREATE_RULEBASE('PREMYSLOVCI_ RB'); Po vytvoření uživatelem definované databáze pravidel se jménem PREMYSLOVCI_RB lze do této databáze vkládat pravidla pomocí modifikovaného příkazu INSERT. Pro každou databázi pravidel se vytvoří systémová tabulka se jménem MDSYS.RDFR_jméno. Struktura této tabulky je následující: rule_name varchar2(30) -- jméno pravidla antecedents varchar2(4000) -- formule předpokladů filter varchar2(4000) -- další podmínky, které lze přidat do antecedentu, může být null consequents varchar2(4000) -- formule důsledků
aliases prostorů
SDO_RDF_ALIASES -- jeden nebo více jmenných
3. vkládání pravidel do databáze pravidel využívá se modifikovaný příkaz INSERT, který dovolí zadat strukturovaná data. Příklad (7): INSERT INTO MDSYS.RDFR_PREMYSLOVCI_RB VALUES ( 'grandFather_rule', '(?x :fatherOf ?y) (?y :fatherOf ?z)', NULL, '(?x :grandFatherOf?z)', SDO_RDF_Aliases(SDO_RDF_Alias('','http://www.osu.cz/premyslov ci/')) ); Definování dotazu K získávání RDF dat má Oracle k dispozici funkci SDO_RDF_MATCH, která má následující argumenty: query varchar2 -- literál nebo zřetězení literálů, kde každý literál představuje trojici, obvykle obsahující proměnné. Proměnné musí být volné, tj. nesmí být v dosahu kvantifikátoru. models SDO_RDF_MODELS -- objektový datový typ rule_bases SDO_RDF_RULEBASE -- objektový datový typ aliases SDO_RDF_ALIASES -- objektový datový typ filter varchar2, -- další kritéria výběru index_status varchar2 -- může být null, incomplete, invalid Příklad (8): Zobrazte všechny dvojice dědů a vnuků v RDF databázi Přemyslovců. select x,y from table (SDO_RDF_MATCH( '(?x :grandFatherOf ?y)',
SDO_RDF_MODELS('Premyslovci'), SDO_RDF_RULEBASES('RDFS','Premyslovci_rb'), SDO_RDF_ALIASES(SDO_RDF_ALIAS('','http://www.osu.cz/prem yslovci/')), null)); Příklad předpokládá, že existuje: RDF model Premyslovci Báze pravidel Premyslovci_rb, kde je minimálně pravidlo ?x :grandFatherOf ?y Jmenný prostor 'http://www.osu.cz/premyslovci/' (ten se vytváří automaticky se zadání zdrojů do trojic)