Created
April 17, 2020 08:57
-
-
Save Awes0meM4n/bc46cc457a85e2ff6f46688c9b325a17 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Ejercicio 1: Introducción a Neo4J | |
//Cree los siguientes nodos y relaciones | |
// Nodos de tipo Amigo con propiedades | |
CREATE (Juan:Amigo {nombre: 'Juan Martín', edad: 45}), | |
(Maria:Amigo {nombre: 'María Alonso', edad: 27, ciudad: 'Madrid'}), | |
(Jose:Amigo {nombre: 'José Gómez', edad: 25}), | |
(Eva:Amigo {nombre: 'Eva Pérez', edad: 33, ciudad:'Barcelona'}), | |
(Elisa:Amigo {nombre: 'Elisa Alonso', edad: 34, ciudad:'Barcelona'}), | |
(Sergio:Amigo {nombre: 'Sergio Álvarez', edad: 26}), | |
(Elvira:Amigo {nombre: 'Elvira Jimenez', edad: 20}), | |
(Juan)-[:ES_AMIGO {desde:'31/12/2015'}]->(Maria), | |
(Juan)-[:ES_AMIGO]->(Eva), | |
(Juan)-[:ES_AMIGO]->(Jose), | |
(Jose)-[:ES_AMIGO]->(Sergio), | |
(Eva)-[:ES_AMIGO]->(Maria), | |
(Maria)-[:ES_AMIGO]->(Eva), | |
(Maria)-[:ES_AMIGO]->(Elisa), | |
(Sergio)-[:ES_AMIGO]->(Elvira) | |
//Nodos de tipo Persona con tres propiedades (format JSON) | |
CREATE (:Persona {nombre: 'Andrés Álvarez', edad:21, ciudad:'Avila'}) | |
CREATE (:Persona {nombre: 'Marta Romero', ciudad:'Madrid'}) | |
1) Inserte una nueva Persona que se llame Carmen Martínez, de 52 años. | |
CREATE (:Persona {nombre: 'Carmen Martínez', edad:51}) | |
2) Recoja mediante una relación que Andrés Álvarez es el hermano de Marta Romero. | |
MATCH (a),(b) | |
WHERE a.nombre= 'Andrés Álvarez' AND b.nombre = 'Marta Romero' | |
CREATE (a)-[r:ES_HERMANO]->(b) | |
RETURN r | |
3) Recoja que Carmen Martínez es la madre de Andrés Álvarez y de Marta Romero. | |
MATCH (a),(b),(c) | |
WHERE a.nombre= 'Andrés Álvarez' AND b.nombre = 'Marta Romero' AND c.nombre = 'Carmen Martínez' | |
CREATE (c)-[:ES_MADRE]->(a), (c)-[:ES_MADRE]->(b) | |
RETURN a,b,c | |
4) Añada la etiqueta de Amigo a Marta Romero. | |
MATCH (a{nombre: 'Marta Romero'}) | |
SET a :Amigo | |
RETURN a | |
5) Recoja que Eva Pérez es amiga de Marta Romero. | |
MATCH (a),(b) | |
WHERE a.nombre= 'Eva Pérez' AND b.nombre = 'Marta Romero' | |
CREATE (a)-[r:ES_AMIGO]->(b) | |
RETURN a,b | |
6) Incluya la propiedad de la Provincia en los Amigos de Madrid. | |
MATCH (a:Amigo) | |
WHERE a.ciudad = 'Madrid' | |
SET a.provincia='Madrid' | |
RETURN a | |
7) Recupere los Amigos que vivan en Madrid o Barcelona. | |
MATCH (a:Amigo) | |
WHERE a.ciudad = 'Madrid' OR a.ciudad= 'Barcelona' | |
RETURN a | |
8) Borre las personas de menos de 18 años. | |
MATCH (a:Persona) | |
WHERE a.edad<18 | |
DETACH DELETE a | |
//No se borra ninguno. | |
9) Añada a las personas una restricción de existencia y unicidad de la propiedad DNI. Si no es posible, modifique los nodos para permitir la creación de estas restricciones. | |
CREATE CONSTRAINT ON (a:Persona) ASSERT a.DNI IS UNIQUE | |
CREATE CONSTRAINT ON (a:Persona) ASSERT a.nombre IS UNIQUE | |
CREATE CONSTRAINT ON (a:Persona) ASSERT exists (a.nombre) | |
// No funciona en la versión Community Edition | |
call db.constraints() | |
DROP CONSTRAINT ON (a:Persona) ASSERT a.DNI IS UNIQUE | |
DROP CONSTRAINT ON (a:Persona) ASSERT a.nombre IS UNIQUE | |
10) Recupere todos los amigos y los amigos de los amigos de Eva Pérez. | |
MATCH (a)-[:ES_AMIGO]->(b)-[:ES_AMIGO]->(c) | |
WHERE a.nombre= 'Eva Pérez' | |
AND a<>c | |
return b.nombre AS Amigo_Eva, c.nombre AS Amigo_de_Amigo_Eva | |
11) Recupere el nombre y la edad de los amigos de Juan Martín. | |
MATCH (a{nombre: 'Juan Martín'})-[:ES_AMIGO]->(b) | |
return b.nombre AS nombreAmigo, b.edad AS edadAmigo | |
12) Cree un índice para el nombre de los amigos. | |
CREATE INDEX ON :Amigo(nombre) | |
call db.indexes() | |
13) Exporte el grafo completo creado, tanto en formato csv como png. | |
// primero ejecutáis la consulta que devuelve todos los nodos y las relaciones | |
match (n) return n | |
//Después, desde el cliente de Neo4J (navegador), tenéis diferentes vistas. | |
//Si os vais a la vista gráfica, tenéis la opción de descargar el grafo como .png | |
//Si os vais a la vista de tabla, texto o código, tenéis la opción de descargar el grafo como .csv |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment