Seminario di Ingegneria del Software “Studio di RacePro per fare delle interrogazioni in OWL-QL. In particolare dovrei cercare di esprimere delle conjunctive-queries interessanti”. Alessio De Gaetanis OBIETTIVI • Analisi delle funzionalità del sistema RacerPro e dell’applicazione client RacerPorter. • Definizione di una base di conoscenza in RacerPro • Studio del linguaggio nRQL, che ci permetterà di esprimere delle conjunctivequeries su alcune basi di conoscenza. Funzioni di RacerPro Sistema di Ragionamento Web Semantico: data un’ontologia OWL (OWL-Lite o OWL-DL), ne controlla la consistenza, trova relazioni di sottoclasse, i sinonimi e recupera le risorse. Sistema di logica descrittiva: sistema di rappresentazione della conoscenza che implementa il calcolo basato su tableau altamente ottimizzato per una logica descrittiva molto espressiva. Il sistema implementa la logica descrittiva ALCQHIR+. Data una: TBox determina la (in)consistenza, la sussunzioni, e le relazioni padre-figlio tra concetti. ABox controlla la sua consistenza, testa e recupera gli individui che soddisfano certe condizioni,… RacerPorter Shell: display: permette di una query, ilfocalizzando cui risultato Network: Individuals: Queries Taxonomy: (Rules): visualizza una una volta volta si effettuare può la selezionato strutture selezionato selezionare dell un ununa ABox concetto, elemento query (rule) si puoi possono ottenere dalla l’attenzione listalae State poi usare i pulsanti per un comandosemplicemente alla query (rule) sull’elemento lista dimostrato tutti iletipi selezionato adistanze. essoapplicare associati premendo il recuperare sue sarà nell’area RacerPro Log. indica lo stato corrente del sistema, selezionata. Pulsante Direct Types o All Types che indica l’oggetto corrente che si sta interrogando. KB in RacerPro – I Concetti Bisogna definire i termini di concetto complessi utilizzando: • i termini booleani • le qualified restriction (il riempitivo di ruolo deve essere di un certo concetto). • le number restriction • top e bottom • i concetti di dominio concreto (restrizioni di predicato per i riempitivi degli attributi) Attributi interi min, max,equal Attributi reali >,>=,<,<=,=,<> Predicato esistenziale: a o an Predicato di negazione: no KB – Assiomi di Concetto e TBox • General concept inclusion: (implies C1 • Concept equation: (equivalent C1 C2) • Concept disjointness axioms: C2) (disjoint C1 … Cn) • Primitive concept axioms: (define-primitive-concept CN C) •Primitive concept axioms: (define-concept CN C) Possono essere ciclici Una TBox può contenere anche diversi assiomi per un singolo concetto. KB – Dichiarazione di ruoli L’insieme dei ruoli (R) è costituito da due insiemi disgiunti: • Features (F): ruoli funzionali. • Ruoli transitivi (R+): ruoli transitivamente chiusi Sono permesse gerarchie di ruolo Per ogni ruolo bisogna definire :domain e il :range Si usa :inverse o (inv R) per riferirsi al ruolo inverso Possono essere definiti o nella signature o tramite: (define-primitive-role RN :domain C) (define-primitive-role RN :range D) KB – Dominio Concreto A ogni individuo può essere associato un oggetto (nome per il valore del dominio concreto) tramite i nomi d’attributo. L‘insieme A di tutti gli attributi deve essere disgiunto dall’insieme dei ruoli. Gli attributi sono considerati come “typed” (possono assumere valori di tipo cardinal, integer, real, complex o string). KB - Esempio ... (signature :atomic-concepts (... teenager) :roles (...) :attributes ((integer age) (real temperature-celsius) (real temperature-fahrenheit)) :individuals (eve doris) :objects (temp-eve temp-doris) ... (equivalent teenager (and human (min age 16))) (equivalent old-teenager (and human (min age 18))) (equivalent human-with-fever (and human (>= temperature-celsius 38.5)) (equivalent seriously-ill-human (and human (>= temperature-celsius 42.0))) (constrained doris temp-doris temperature-celsius) (constraints (= temp-doris 39.5)) TBOX ... ABOX Modellazione di logiche descrittive Racer Inf. indefinita ≠ Database Inf. definita Open World Assumption: ciò che non può essere provato esser vero, non vuol dire che sia falso. Racer permette di utilizzare anche la LocalClosed World Assumption (uso di NAF) RacerPro è in grado di leggere file RDF, RDFS e OWL. nRQL-new Racer Query Language • Linguaggio di query di ABox per DL espressive ALCQHIR+(D-) • Linguaggio di query RDF e OWL Permette di esprimere conjunctive query Le espressioni di base sono detti atomi unari (un oggetto) o binari (con due). Un oggetto può essere o un individuo o una variabile iniettiva o ordinaria. Semantica del dominio attivo: le variabili possono essere associate soltanto a individui modellati esplicitamente nella corrente ABox (senza un preciso ordinamento sulla loro consegna). nRQL – Concept Query Atoms Atomi unari utili per recuperare tutti gli individui di un concetto o di una classe OWL. Esempio: Query head Query body (retrieve (?x) (?x woman)) > (((?X EVE)) ((?X DORIS)) ((?X ALICE)) ((?X BETTY))). Espressione di concetto Esempio: da un determinato documento OWL. complessa (retrieve (?x) (?x (or |http://www.owl-ontologies.com/unnamed.owl#person| |http://www.owl-ontologies.com/unnamed.owl#book|))) > (((?X |http://www.owl-ontologies.com/unnamed.owl#michael|)) ((?X |http://www.owl-ontologies.com/unnamed.owl#michael|))) nRQL è più potente di qualsiasi altro linguaggio di query di documenti RDF nRQL- Role Query Atoms Atomi binari necessari per recuperare coppie dei riempitivi di ruolo contenuti in una ABox o coppie di individui OWL legati da un object properties. Esempio. (retrieve (?mother ?child) (?mother ?child has-child)) > (((?MOTHER BETTY) (?CHILD DORIS)) ((?MOTHER BETTY) (?CHILD EVE)) ((?MOTHER ALICE) (?CHILD BETTY)) ((?MOTHER ALICE) (?CHILD CHARLES))). Ruolo invertito: costruttore INV (retrieve (?mother ?child) (?child ?mother (inv has-child))) Ruolo negato: costruttore not (non è supportato da altre DL ALCQHIR+(D-)) (retrieve (?x) (?x (not mother))) > (((?X CHARLES))) nRQL–Constraint Query Atoms Atomi binari utili per recuperare quelle coppie di individui della ABox (o OWL) il cui valore di certi attributi di dominio concreto soddisfa un vincolo. Esempio: dopo aver aggiunto l’età per ogni individuo. (retrieve (?x) (?x (>= age 75))) > (((?X ALICE))). I singoli attributi, possono essere sostituiti da catena di ruoli di lunghezza arbitraria (terminanti con attributi) Esempio. (retrieve (?x) (?x ?x (constraint (has-father age) (has-mother age) >))). nRQL – Auxiliary Query Atoms Atomi HAS-KNOWN-SUCCESSOR che permettono di recuperare gli individui che hanno un certo successore di ruolo modellato esplicitamente nell’ABox, ma non siamo interessati attualmente al recupero di questo successore. Esempio. (retrieve (?x) (?x (has-known-successor has-child))) > (((?X CHARLES)) ((?X BETTY)) ((?X ALICE))). nRQL – Operatori Query Head Projection Recuperano: • Oggetti del dominio concreto di individui dell’ABox e i loro valori • Le datatype properties e le annotation properties di un individuo in un file OWL Assicura che alice può essere limitato Solo all’individuo Alice dell’ABox Esempio (retrieve (alice (age alice))(bind-individual alice)) > ((($?ALICE ALICE) ((AGE $?ALICE) (ALICE-AGE)))). (retrieve (alice (age alice) (told-value (age alice))) (bind-individual alice)) > ((($?ALICE ALICE) ((AGE $?ALICE) (HUHU ALICE-AGE) ((:TOLD-VALUE (AGE $?ALICE)) (:NO-TOLD-VALUE 80)))) nRQL – Query Complesse (1/3) Possiamo costruire un body query più complesso con i seguenti operatori: • AND: costruttore n-ario usato per formulare query congiuntive congiunti Esempio (retrieve (?x ?y) (and (?x mother) (?y man) (?x ?y has-child))) > (((?X ALICE) (?Y CHARLES))). Esempio: tutte le persone che hanno una mamma in comune (retrieve (?mother ?child1 ?child2) (and (?child1 human) (?child2 human) (?mother ?child1 has-child) (?mother ?child2 has-child))). nRQL – Query Complesse (2/3) • UNION: calcola l’unione dei singoli insiemi di risposta (con stessa arità) dei corpi dei query argomento. Esempio: la prima query deve essere trasformata nella seconda. (retrieve (?x ?y) (union (?x ?y has-child) (?x man))) (retrieve (?x ?y) (union (?x ?y has-child) (and (?x man) (?y top)))). • NEG: implementa la negazione come semantica di fallimento (NAF). Si può utilizzare anche per atomi di ruolo Esempio: complementare di (?x grandmother). (retrieve (?x) (neg (?x grandmother))) nRQL – Query Complesse (3/3) • INV: costruttore di ruoli inversi. • PROJECT-TO: operatore di proiezione per body di query. Esempio: Data l’ABox (instance a c) (instance b d) (instance c top) (related a b r) Vogliamo recuperare quelle istanze C che non hanno successori noti R che sono istanze di D. In questo caso la risposta dovrebbe essere (((?X B)) ((?X C))). (retrieve (?x) (neg (project-to (?x) (and (?x c) (?x ?y r) (?y d))))) La proiezione deve essere effettuata prima della negazione Modi di processamento Set at a time: computa la risposta in unico insieme (retrieve) Lazy mode: evita computazioni che non riguardano la query minimizza il tempo di computazione Eager mode: prima di rispondere alla query, classifica la TBox minimizza globalmente il tempo di processamento. Tuple at a time: le tuple vengono restituite una alla volta su richiesta del client. multi-processamento delle query: ognuna si contraddistingue dall’identificativo (id) Lazy mode: le prossime tuple non sono compuate fino alla richiesta del client il thread è in fase di waiting Eager mode: il thread continua a calcolare anche le tuple successive che vengono messe in coda per eventuali richieste. Grado di completezza Modo completo Se il test di consistenza iniziale di una ABox è impossibile il ragionamento e i servizi di recupero sono indisponibili per l’alta complessità Es. Non è possibile caricare un’intera università dal LUBM (solo 5 dipartimenti anziché 14) Utilizziamo un modo incompleto per recuperare individui dall’ABox potrebbe risultare completo per alcune ABox strutturate in maniera semplice Casi di Studio – Prima KB (1/4) (in-knowledge-base grafo grafo-node-egde) (signature :atomic-concepts (node redN blueN) :roles ((edge :inverse inverse-edge :domain node :range node)) :individuals (a b c d)) (implies *top* (and (all edge node) (all inverse-edge node))) (implies redN node) (implies blueN node) (implies redN (not blueN)) (implies node (or redN blueN)) a c b d (related (related (related (related a b c c b c a d edge) edge) edge) edge) Casi di Studio – Prima KB (2/4) x Prima query: y z x q(x) :- ∃y, z, w. edge(x,y) ∧ edge(y,z) ∧ edge(z,w) In nRQL: (RETRIEVE (?X) (AND (?X ?Y EDGE) (?Y ?Z EDGE) (?Z ?W EDGE))) > (((?X D)) ((?X A)) ((?X C)) ((?X B)) In ogni modello, esiste una catena di questo tipo a partire da ogni nodo a a a a c c b d c b d (1) c b d (2) b d (3) (4) Casi di Studio – Prima KB (3/4) Seconda query: x y q(x,y,z) :- edge(x,y) ∧ edge(y,z) ∧ edge(z,x) In nRQL: (RETRIEVE (?X ?Y ?Z) (AND (?X ?Y EDGE) (?Y ?Z EDGE) (?Z ?X EDGE))) > (((?X A) (?Y B) (?Z C)) (1) ((?X C) (?Y A) (?Z B)) (2) ((?X B) (?Y C) (?Z A))) (3) z a Il sistema fornisce tre liste di nodi differenti che soddisfano la query, che in realtà però individuano sempre lo stesso ciclo di nodi b c d Terza query: q(x) :- edge(x,y) ∧ edge(y,z) ∧ edge(z,x) In nRQL: (RETRIEVE (?X) (AND (?X ?Y EDGE) (?Y ?Z EDGE) (?Z ?X EDGE))) > (((?X A)) ((?X C)) ((?X B))) x y z Casi di Studio – Prima KB (4/4) Quarta query: q(x) :- ∃y,z. edge(x,y) ∧ RedN(y) edge(y,z) ∧ BlueN(z) ∧ edge(z,x) In nRQL: x (RETRIEVE (?X) (AND (?X ?Y EDGE) (?Y REDN) (?Y ?Z EDGE) (?Z BLUEN) (?Z ?X EDGE))) > NIL y z In questo caso il sistema RacerPro non è in grado di dimostrare l’esistenza di tale cammino. Infatti assegnando un colore ai nodi (in particolare al nodo c) a cui non è stato ancora associato, in tutte le possibili combinazione, possiamo osservare l’esistenza di tale cammino in ognuna di esse (in ogni modello). a a c c b d b d Casi di Studio – Seconda KB (1/2) (in-knowledge-base grafoII grafoII-node-egde) (signature :atomic-concepts (node nodeRB) :roles ((edgeR :inverse inverse-edgeR :domain node :range node) (edgeB :inverse inverse-edgeB :domain node :range node)) :individuals (a)) a (implies (implies (implies (implies (implies (implies (some inverse-edgeR node) node) (some edgeR node) node) (some inverse-edgeB node) node) (some edgeB node) node) nodeRB (some edgeB node)) nodeRB (some edgeR node)) (related a a edgeB) (instance a nodeRB) Casi di Studio – Seconda KB(2/2) Prima query q(x):-∃y, z. edgeB(x,y) ∧ edgeR(x,z) ∧ edgeR(y,z) In nRQL: (RETRIEVE (?X) (AND (?X ?Y EDGEB) (?X ?Z EDGER) (?Y ?Z EDGER))) > NIL Neanche in questo caso il sistema è in grado di dimostrare che il nodo a soddisfa la query in ogni modello. Infatti il nodo a (a cui associamo la variabile x), essendo un nodeRB, deve avere un edgeB (lo ha già verso se stesso) e un edgeR verso un altro nodo (oppure anche verso se stesso). Quindi poiché anche y coincide con il nodo a, l’edgeR condiviso da x e z, sarà condiviso anche da y e z, come è evidente in figura. a x y z Casi di Studio Compito A del 19/12/2005 Casi di Studio Compito A del 19/12/2005 (1/3) Prima query Per ogni schema concettuale che ha richiesto più di 30 giorni per lo sviluppo, si vogliono conoscere i dati relativi al progetto, al numero, e alla versione. (RETRIEVE > (((?X (?X |http://www.owl-ontologies.com/unnamed.owl#Conceptual_12|) ((:TOLD-VALUE (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#schemeNumber| ?X)) (|http://www.owl-ontologies.com/unnamed.owl#schemeNumber|?X))(234)) (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#version| ?X)) ((:TOLD-VALUE ?Y (|http://www.owl-ontologies.com/unnamed.owl#version| ?X) ("uml")) (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#identifyNumber| ?Y)) (?Y |http://www.owl-ontologies.com/unnamed.owl#Project_9|) (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#cost| ?Y)) ((:TOLD-VALUE (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#duration| ?Y))) (|http://www.owl-ontologies.com/unnamed.owl#identifyNumber|?Y))(456)) (AND (?X |http://www.owl-ontologies.com/unnamed.owl#Conceptual|) ((:TOLD-VALUE (?X (min |http://www.owl-ontologies.com/unnamed.owl#developmentPeriod| 30)) ?Y)) (30000.0)) (?X(|http://www.owl-ontologies.com/unnamed.owl#cost| ?Y |http://www.owl-ontologies.com/unnamed.owl#related|))) ((:TOLD-VALU (|http://www.owl-ontologies.com/unnamed.owl#duration|?Y))(“16:27:26")))) Casi di Studio Compito A del 19/12/2005 (2/3) Seconda query Per ogni schema logico di dimensione maggiore di 100, si vogliono conoscere il tempo di sviluppo, ed il costo del relativo progetto. RETRIEVE (?X (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#developmentPeriod|?X)) ?Y (TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#cost| ?Y)))) (AND (?X |http://www.owl-ontologies.com/unnamed.owl#Logical|) (?X (MIN |http://www.owl-ontologies.com/unnamed.owl#size| 100)) (?X ?Y |http://www.owl-ontologies.com/unnamed.owl#related|))) > (((?X |http://www.owl-ontologies.com/unnamed.owl#Logical_10|) ((:TOLD-VALUE(|http://www.owl-ontologies.com/unnamed.owl#developmentPeriod| ?X)) (24)) (?Y |http://www.owl-ontologies.com/unnamed.owl#Project_3|) ((:TOLD-VALUE (|http://www.owl-ontologies.com/unnamed.owl#cost| ?Y))(15000.0)))) Casi di Studio Compito A del 19/12/2005 (3/3) Terza query Fornire la lista dei progetti per i quali è stato prodotto almeno uno schema logico implementato in un DBMS per il quale almeno un committente del relativo progetto non ha la licenza. (RETRIEVE (?X) (AND (?X |http://www.owl-ontologies.com/unnamed.owl#Logical|) (?X ?Y |http://www.owl-ontologies.com/unnamed.owl#layout|) (?X ?Z |http://www.owl-ontologies.com/unnamed.owl#related|) (?W ?Z |http://www.owl-ontologies.com/unnamed.owl#order|) (NEG (?W ?Y |http://www.owl-ontologies.com/unnamed.owl#permission|)))) > (((?X |http://www.owl-ontologies.com/unnamed.owl#Logical_13|))) Quarta query Produrre la lista di tutti i progetti il cui costo è inferiore al compenso totale che hanno determinato per l'azienda, dove il compenso totale che un progetto determina per l'azienda è semplicemente la somma dei compensi erogati dai relativi committenti per quel progetto. Non è possibile calcolare il compenso totale di un determinato progetto. Conclusioni RacerPro • processa documenti OWL-DL (completezza computazionale e decidibilità) • implementa la DL ALCQHIR+ nRQL • permette di esprimere le conjunctive query e query complesse a partire da semplici atomi. • supporta due tipi di negazione: classica negazione del vero e NAF (non supportata da nessun linguaggio di query OWL). • supporta ricerche complesse sui valori degli attributi di un individuo (dominio concreto). • supporta un’operatore di proiezione proiect-to. • è un potente linguaggio di query OWL e RDF. Conclusioni (2/2) Grande potere espressivo Limitato potere computazionale: nei casi di studio abbiamo osservato che il sistema non è in grado di dimostrare dei fatti che sono veri in ogni modello della KB. Il test di consistenza iniziale dell’ABox limita il sistema, che non è in grado di utilizzare delle KB molto grandi (non più di 10.000 individui).