• Non ci sono risultati.

1Complexgraphpattern InterrogazionibasatesugraphpatternelinguaggioCypher AzzoliniRiccardo2020-05-28

N/A
N/A
Protected

Academic year: 2021

Condividi "1Complexgraphpattern InterrogazionibasatesugraphpatternelinguaggioCypher AzzoliniRiccardo2020-05-28"

Copied!
5
0
0

Testo completo

(1)

Azzolini Riccardo 2020-05-28

Interrogazioni basate su graph pattern e linguaggio Cypher

1 Complex graph pattern

Come già anticipato, i linguaggi di interrogazione per grafi permettono di esprimere graph pattern più complessi, chiamati appunto complex graph pattern (cgp), costruiti a partire dai basic graph pattern (bgp) mediante appositi operatori, tra cui i principali sono:

• proiezione (di fatto analoga alla clausola SELECT di SQL);

• join;

• unione;

• filter, che permette di specificare dei predicati di selezione, tipicamente con con- nettivi quali la congiunzione, la disgiunzione, e possibilmente anche la negazione (in pratica, corrisponde al WHERE di SQL).

Tra questi operatori, quello che risulta meno immediato (nel contesto dei grafi) è il join.

Il suo significato può essere illustrato mediante un esempio. Considerando i due bgp

y

x

z

w a

b

c

d

il loro join sulla condizione z = w è il seguente graph pattern:

(2)

y

x

z = w a b

c

d

2 Esempio di complex graph pattern in SPARQL

Dato un edge-labelled graph (nello specifico, un grafo RDF) relativo ad attori e film,

:Clint_Eastwood

:Person :type

:Unforgiven

:Movie :type

"Unforgiven"

:title

:Anna_Levine

:Person :type

:acts_in :acts_in

si vogliono trovare tutte le coppie di attori che recitano nei film intitolati “Unforgiven”.

Il basic graph pattern corrispondente è:

x1

:Person :type

x3

:Movie :type

"Unforgiven"

:title

x2

:Person :type

:acts_in :acts_in

La seguente interrogazione SPARQL specifica tale basic graph pattern, e lo combina con una proiezione (SELECT) che indica di restituire solo gli attori, e non il film:

SELECT ?x1 ?x2 WHERE {

?x1 :acts_in ?x3 ; :type :Person .

?x2 :acts_in ?x3 ;

(3)

:type :Person .

?x3 :title "Unforgiven" ; :type :Movie .

}

Così, però, siccome SPARQL implementa il matching basato su omomorfismi, verranno restituite anche le “coppie” in cui è presente due volte lo stesso attore. Se le si vuole escludere, bisogna aggiungere esplicitamente una clausola FILTER:

SELECT ?x1 ?x2 WHERE {

?x1 :acts_in ?x3 ; :type :Person .

?x2 :acts_in ?x3 ; :type :Person .

?x3 :title "Unforgiven" ; :type :Movie .

FILTER (?x1 != ?x2) }

3 Cypher

Cypher è il linguaggio di interrogazione per property graph implementato dal DBMS graph-oriented Neo4j. Esso è un linguaggio dichiarativo (come del resto tutti i linguag- gi d’interrogazione visti in precedenza), ed è anch’esso basato sul matching di graph pattern.

3.1 Esempio di bgp e proiezione

Come primo esempio di uso del linguaggio Cypher, si vogliono determinare ancora tutte le coppie di attori che recitano nei film intitolati “Unforgiven” (la stessa interrogazione appena mostrata in SPARQL), ma, questa volta, il grafo considerato è un property graph:1

n1: Person name: Clint Eastwood

n2: Movie title: Unforgiven

n3: Person name: Anna Levine e1: acts_in

e2: directs

e3: acts_in

1Questo grafo contiene alcune informazioni in più rispetto all’edge-labelled graph di prima: esse serviranno per l’esempio successivo.

(4)

Il bgp che esprime quest’interrogazione è:

x1: Person x3: Movie

title: Unforgiven

x2: Person

x4: acts_in x5: acts_in

In Cypher, la query si scrive come:

MATCH (x1:Person) -[:acts_in]-> (:Movie {title:"Unforgiven"})

<-[:acts_in]- (x2:Person) RETURN x1, x2

Una particolarità di Cypher, già evidente in questo esempio, è che la sintassi cerca di

“imitare” la rappresentazione grafica di un grafo:

• i nodi vengono specificati tra parentesi tonde;

• gli archi sono specificati tra parentesi quadre “inserite” in una freccia, -[]-> o

<-[]- (a seconda della direzione dell’arco).

La specifica di un nodo/arco è composta da tre elementi, tutti opzionali:

• una variabile;

• un’etichetta, scritta dopo i due punti: il nodo del graph pattern potrà corrispondere solo ai nodi del grafo interrogato che hanno quella stessa etichetta;

• i valori delle proprietà, indicati tra parentesi graffe.

Infine, la clausola RETURN esegue una proiezione, specificando quali variabili restituire (ma si ha anche una proiezione implicita, ottenuta omettendo le variabili relative a certi nodi/archi).

Siccome il matching avviene con la semantica no-repeated-edge, vengono automatica- mente escluse le coppie formate da un attore con sé stesso, per le quali i due archi -[:acts_in]-> del pattern dovrebbero infatti essere mappati su uno stesso arco del grafo interrogato.

3.2 Esempio di union

Per mostrare un complex graph pattern più elaborato, considerando il property graph dei film dell’esempio precedente, si vogliono trovare i titoli di tutti i film diretti o interpretati da Clint Eastwood:

(5)

MATCH (:Person {name:"Clint Eastwood"}) -[:acts_in]-> (x3:Movie) RETURN x3.title

UNION ALL

MATCH (:Person {name:"Clint Eastwood"}) -[:directs]-> (x3:Movie) RETURN x3.title

Per ottenere sia i film diretti che quelli interpretati da Clint Eastwood, si usa un cgp basato sull’operatore di unione. In particolare, la parola chiave ALL indica di non elimi- nare i valori duplicati: così, ad esempio, “Unforgiven” comparirà due volte nel risultato, perché esso è sia diretto che interpretato da Clint Eastwood.

4 Cenni alle interrogazioni di navigazione

Oltre ai graph pattern, esiste un’altra categoria di interrogazioni: quelle basate sulla navigazione di grafi.

Ad esempio, dato un grafo relativo ad attori e film, un’interrogazione di questo tipo per- metterebbe di trovare tutte le coppie di attori che hanno un “percorso di collaborazione”

(se a1 ha recitato in un film insieme ad a2, a2 ha recitato insieme ad a3, e così via, fino ad an, allora esiste un percorso di collaborazione tra a1 e an).

Riferimenti

Documenti correlati

Nella società di basso indice d’intolleranza verso la diversità (estra- neità) i figli sono vagamente informati su ciò che è proibito e impuro; il superego è sottosviluppato;

In questo quadro anche i rapporti della Chiesa di Siena con le somme autorità del tempo, Papato e Impero, si fecero più intensi ed a chi scrive è toccato l’arduo compito di

 alcuni dettagli del ciclo di vita degli attori possono differire tra attori locali e remoti.. Ancora sui Vantaggi del Modello

Tracciare la propria linea del destino, così come la voleva, è stato quello che Antonio Alizzi ha fatto finora: da un angolo della Sicilia a Milano, passando per Verona do-

Gli Antigeni solubili di Legionella sono evidenziabili nel- la fase acuta della malattia (1-3 giorni dall’esordio dei sin- tomi) e la loro ricerca rappresenta il più utile test

Applicando il metodo di Fourier-Motzkin dire se il seguente sistema lineare ammette un’unica soluzione ovvero ammette infinite soluzioni ovvero non ammette

Tavolo Nazionale: una rappresentanza dei giovani dalle varie regioni parteciperà ad un Tavolo Nazionale sui Giovani nella Cooperazione che, lavorando per due giornate,

in conformità alle finalità istituzionali, dalle associazioni, dai consorzi e dagli altri enti non commerciali di tipo associativo. Le somme versate dagli associati o partecipanti