1 Cypher & Neo4j
Tutte le operazioni di inserimento, aggiornamento, e selezione di elementi all'interno di Neo4j vengono effettuate mediante il linguaggio Cypher.
Come riportato dalla documentazione ufficiale di Neo4j, Cypher è un linguaggio dichiarativo per query su Graph Database semplice e potente che permette di estrarre ed aggiornare/inseriti dati all'interno del nostro database.
Per comprendere al meglio il suo funzionamento facciamo riferimento al precedente post Neo4j Primi Passi in cui abbiamo creato un database che contiene informazioni su alcuni film e sugli attori che li hanno interpretati.
2 Comando CREATE:Creazione nodi e relazioni.
La clausola CREATE viene utilizzata da Cypher per creare nodi e relazioni.
Per quanto riguarda i nodi, la sintassi generale per creare un nodo è:
create (<nomenodo>:<LABEL>{<lista coppie <NOME:VALORE> separate da virgola>})
Per quanto riguarda i nodi, la sintassi generale per creare un nodo è:
create (<nomenodo>:<LABEL>{<lista coppie <NOME:VALORE> separate da virgola>})
Supponiamo di voler creare due semplici nodi con "label" Attore e due proprieta nome e cognome.
La rispettiva sintassi per la creazione sarà la seguente:
Ora creiamo altri nodi con etichetta Film e proprieta titolo nel seguente modo(lo so alcuni film ai piu possono essere sconosciuti, ma questo non è un problema.
Una volta creati i nodi passiamo alla creazione delle relazioni.
Nel nostro caso creremo due tipi di relazioni una tra ATTORE e FILM e una tra FILM e NAZIONE.
La sintassi generale per creare una relazione è
(nodo1)-[:<LABEL_RELAZIONE>{<lista coppie <NOME:VALORE> separate da virgola>}]->(nodo2)
Vediamo alcuni esempi per capire meglio quanto detto per la creazione delle relazioni.
Una volta creati i nodi passiamo alla creazione delle relazioni.
Nel nostro caso creremo due tipi di relazioni una tra ATTORE e FILM e una tra FILM e NAZIONE.
La sintassi generale per creare una relazione è
(nodo1)-[:<LABEL_RELAZIONE>{<lista coppie <NOME:VALORE> separate da virgola>}]->(nodo2)
Vediamo alcuni esempi per capire meglio quanto detto per la creazione delle relazioni.
Quello che avremo è un grafo aggiornato con nuovi nodi e relazioni di questo tipo:
Restituisci i titoli dei film con De Curtis Protagonista
3 Comando MATCH/WHERE/RETURN:Estrazione Dati
Il Passo successivo a quello dell'inserimento di nodi e relazioni tra di essi, è quello di estrarre le informazioni da un Graph Database.
La clausola MATCH permette di specificare un pattern per effettuare le ricerche in maniera precisa all'interno di un Graph Database.
Tale comando, come accade nei comandi SELECT del linguaggio SQL per gli Rdbms, è spesso "accoppiato" con la clausola WHERE,la quale è opzionale e aggiunge delle "condizioni" da verificare per ogni match in modo tale da permette un filtraggio/ricerca degli elementi di un database.
La clausola RETURN specifica invece il valore che deve restituire l'operazione di MATCH con una rappresentazione dei risultati che può essere tabellare o grafica.
La sintassi dell'operazione di match sarà la seguente:
MATCH <match su nodi o operazioni>
{WHERE <condizioni>} //inquesto caso { indicano che il comando è opzionale
RETURN <qualche cosa>
Come fatto in precedenza vediamo alcuni esempi:
Restituisci i titoli dei film con De Curtis e De Filippo Protagonisti
Restituisci i titoli dei film con De Curtis o Sordi Protagonisti
Restituisci il numero di film nel database per attori
4 Conclusioni
Quello che abbiamo visto oggi sono solo semplici operazioni che possono essere effettuati su un Graph Database.
Se avrete la bontà di seguirmi, nel prossimo post affronteremo tematiche piu interessanti in Neo4j su come fare l'import di grandi dataset di file csv e alcuni algoritmi su grafi .
Ci sentiamo alla prossima
Nessun commento:
Posta un commento