Académique Documents
Professionnel Documents
Culture Documents
A GRAFOS
aresta
nó_1 nó_2
Grafo com propriedades
10
aresta
nó_1 nó_2
(nó_1)-[aresta {propriedade:valor}]->(nó_2)
aresta
nó_1 nó_2
Propriedade: valor
Modelo de BD orientado a grafos
11
◻ Vértices e arestas
possuem propriedades
◻ Agrupamento de nós
◻ Consulta de nós com o mesmo rótulo
Exemplo
13
nome: “João”
matricula: 201822
cpf: “555.666.444-55”
nascimento: 23/06/1912
aluno
Exemplo: sistema da universidade
15
nome: “João”
matricula: 201822
cpf: “555.666.444-55”
nascimento: 23/06/1912
nome: “João”
matricula: 201822
cpf: “555.666.444-55”
nascimento: 23/06/1912
aluno
CURSA sala: 72
turma: “E”
nome: “algoritmos”
CURSA disciplina
sala: 74
turma: “F”
disciplina
Inserção
Criação de nós
20
Empresa
Pessoa
Pessoa
Pessoa
Pessoa
Criando nós com parâmetros para as
26
propriedades
◻ Parâmetro
{ "props" : { "name" : "Andres", "position" :
"Developer" } }
◻ Inserção do nó
CREATE (n:Person $props) RETURN n
◻ Resultado
Node[20]{name:"Andres",position:"Developer"}
Criação de arestas
27
◻ CREATE (nóOrigem)-
[:RótuloAresta {prop1: valor1, prop2: valor2,..., propn:
valorn}]->(nóDestino)
Tipo da aresta
Criação de arestas
28
◻ CREATE (nóOrigem)-
[:RótuloAresta {prop1: valor1, prop2: valor2,..., propn:
valorn}]->(nóDestino)
◻ CREATE (nóOrigem)-
[:RótuloAresta {prop1: valor1, prop2: valor2,..., propn:
valorn}]->(nóDestino)
◻ Rótulo de nós
:VehicleOwner em vez de :vehice_owner
◻ Tipos de relações
:OWNS_VEHICLE em vez de :ownsVehicle
◻ Case sensitive
:PERSON, :Person e :person são três rótulos diferentes
Consultas
Estrutura da clausula da consulta
34
◻ MATCH
O padrão no grafo a ser detectado
◻ WHERE
Adiciona restrições (filtros) ao padrão procurado
◻ RETURN
O que deve ser retornado como resultado
Uso do Match
35
Resultado
■ Node[1]{name:"B"}
Uso do Match
38
User
Resultado
■ Dilshad
■ Cesar Friend Enemy
Friend
■ Becky
Uso do Match
39
Resultado User
■ Dilshad
■ Cesar
Friend Friend Enemy
Retornar o tipo da relação
40
Resultado
■ “KNOWS” Friend Enemy
Friend
Consulta por tipo de relação
41
Resultado User
■ Dilshad
■ Cesar
■ Becky Friend Friend Enemy
Consulta por diversos tipos de relação
42
■ Dilshad
Friend Friend Enemy
■ Cesar
■ Becky
■ John
Retornar o tipo da relação com espaço
43
Resultado
■ “John”
■ “Paul”
Exemplo de uso do Match
45
Resultado
■ “Joe”
■ “Sara”
Exemplo de uso do Match
46
Resultado
■ “Steve”
■ “Maria”
Clausula WHERE
47
◻ MATCH (n)
WHERE n.name = 'Peter’ OR n.age < 30
RETURN n.name, n.age
◻ Resultado
“Peter” 35
“Tobias” 25
Filtro por rótulo de nós
49
◻ MATCH (n)
WHERE n:Swedish
RETURN n.name, n.age
◻ Resultado
“Andres” 36
Filtro por propriedade de nós
50
◻ MATCH (n)
WHERE n.age > 30
RETURN n.name, n.age
◻ Resultado
“Andres” 36
“Peter” 35
Filtro por propriedade de arestas
51
◻ MATCH (n)-[k:KNOWS]->(f)
WHERE k.since < 2000
RETURN f.name, f.age
◻ Resultado
“Peter” 35
Filtro por cadeia de caracteres
52
◻ MATCH (n)
WHERE n.name STARTS WITH 'Pet'
RETURN n.name, n.age
◻ MATCH (n)
WHERE n.name ENDS WITH 'ter'
RETURN n.name, n.age
◻ MATCH (n)
WHERE n.name CONTAINS 'ete'
RETURN n.name, n.age
Clausula RETURN
53
◻ Retornar um nó
MATCH (n { name: 'B' })
RETURN n
Resultado
■ Node[1]{name:"B"}
Retorno de relações
55
◻ Resultado
:KNOWS[0]{}
Retorno de propriedades
56
◻ Resultado
“A”
Retorno de todos os elementos
57
◻ Resultado
a b p r
Node[0]{name Node[1]{name (0)-[BLOCKS,1] :BLOCKS[1]{}
:"A",happy:"Ye :"B"} ->(1)
s!",age:55}
Node[0]{name Node[1]{name (0)-[KNOWS,0] :KNOWS[0]{}
:"A",happy:"Ye :"B"} ->(1)
s!",age:55}
Retorna outras expressões
58
◻ Resultado
◻ Resultado
Node[1]{name:"B"}
Exemplo
60
MATCH (user)-[:friend]->(fr)
Resultado
| user.name | fr.name |
| "Joe" | "Steve" |
| "John" | "Sara" |
Consulta com parâmetro
63
◻ { "name" : "Johan" }
◻ { "name" : "Johan" }
◻MATCH (n:Person)
WHERE n.name STARTS WITH $name RETURN n.name
Agregação
65
◻ Ordena os resultados
◻ MATCH (n)
RETURN n.name, n.age
ORDER BY n.name
Clausula ORDER BY
67
◻ Ordem decrescente
◻ MATCH (n)
RETURN n.name, n.age
ORDER BY n.name DESC
Clausula ORDER BY
68
◻ MATCH (n)
RETURN n.name, n.age
ORDER BY n.age, n.name
Clausula SKIP
69
◻ MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP 3
Clausula LIMIT
70
◻ MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 3
Clausula LIMIT
71
◻ MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP 1
LIMIT 2
72
Atualização
Clausula SET
73
◻ { "surname" : "Taylor" }
◻ Resultado
Stefan German
Clausula SET com agregação
78
Remoção
Clausula DELETE
80
◻ Remove um nó
◻ MATCH (n:Person { name: 'UNKNOWN' })
DELETE n
Remove nó com seus relacionamentos
81
◻MATCH (n)
DETACH DELETE n
CUIDADO!
Remove uma propriedade
84