Está en la página 1de 23

3 BD Orientadas a Grafos

Jathinson Meneses Mendoza


Henry A. Jimenez Herrera
Neo4j

Ejercicio Zoológico.

Se pretende crear una base de datos de administración de un zoológico que
contemple tres entidades principales: el personal encargado de cuidar a los
animales por reciento, los propios animales y los recintos donde se alojan.

En la base de datos se desea poder asignar al cuidador más adecuado para
cada animal, para lo cual se tendrá en cuenta la edad de los cuidadores,
tambien se desea saber que animal es pareja de otro , quienes son
hermanos o hijos de que animal.

Asimismo, se busca obtener información sobre el estado de los recintos, es
decir, si están disponibles para su uso, en mantenimiento o ya se
encuentran ocupados.

Neo4j

Ejercicio Zoológico.


Neo4j

Ejercicio Zoológico.

Vamos a crear la base de datos para lo siguiente lo vamos a hacer de la
siguiente manera:

1 vamos a Neo4J Auradb


Neo4j

Ejercicio Zoológico.

2 vamos a Query


Neo4j

Ejercicio Zoológico.

3 descargamos el archivo que se encuentra en este link ArchivoZoo lo
copiamos y lo ejecutamos en run del query


Neo4j

Ejercicio Zoológico.

Consultas Consultas Elementos Devuelve todos los animales macho del
zoológico.

match (n:Animal{sexo:"Macho"})

return n


Neo4j

Ejercicio Zoológico.

Consultas Devuelve la cantidad de empleados que tengan más de 40 años.

match(empleado:Empleado)

where empleado.edad > 40

return count(empleado) as `Cantidad empleados`


Neo4j

Ejercicio Zoológico.

Consultas Devuelve todos los animales que compartan el mismo
veterinario que Tadala.

Match(animal:Animal{name:"Tadala"})<-[:SE_ENCARGA_DE]-
(veterinario:Empleado{puesto:"Veterinario"})

With veterinario

Match (veterinario)-[:SE_ENCARGA_DE]->(animal2:Animal)

Where animal2.name <> "Tadala"

Return animal2


Neo4j

Ejercicio Zoológico.

Consultas Devuelve las crías de animales de las cuales se encarga la
empleada llamada Clara..

Match (cuidador:Empleado{name:"Clara"})-[:SE_ENCARGA_DE]->(recinto:Recinto)<-[:HABITA]-
(cria:Animal)-[:ES_HIJO_DE]->(animal:Animal)

Return distinct(cria)


Neo4j

Ejercicio Zoológico.

Consultas Devuelve los animales que son cuidados por los mismos
cuidadores que se encargan de Canela y que, además, pertenezcan a un
recinto diferente. También devuelven los recintos en los que habitan.

match (animal:Animal{name:"Canela"})-[:HABITA]->(recinto:Recinto)<-[:SE_ENCARGA_DE]-
(cuidador:Empleado{puesto:"Cuidador"})

with animal, recinto, cuidador

match (animal2:Animal)-[:HABITA]->(recinto2:Recinto)<-[:SE_ENCARGA_DE]-(cuidador)

where animal2.name <> "Canela"

and recinto <> recinto2

return distinct(animal2), recinto2
Neo4j

Ejercicio Zoológico.

Consultas Devuelve los animales que son cuidados por los mismos
cuidadores que se encargan de Canela y que, además, pertenezcan a un
recinto diferente. También devuelven los recintos en los que habitan.

Neo4j

Ejercicio Zoológico.

Consultas Devuelve la media de edad de los animales agrupados en
especies que tengan pareja, con un veterinario asignado cuyo nombre
contenga la letra 'o' y que, además, habiten en un recinto en estado
disponible..

match (recinto:Recinto)<-[:HABITA]-(animal:Animal)-[:ES_PAREJA_DE]->(animal2:Animal)-[:HABITA]->(recinto:Recinto)

where recinto.estado = "Disponible"

with animal, animal2

match (veterinario:Empleado{puesto:"Veterinario"})

where((animal)<-[:SE_ENCARGA_DE]-(veterinario)

or (animal2)<-[:SE_ENCARGA_DE]-(veterinario))

and veterinario.name CONTAINS 'o'

return distinct labels(animal)[1] as Especie, avg(animal.edad) as `Edad media`
Neo4j

Ejercicio Zoológico.

Consultas Devuelve la media de edad de los animales agrupados en
especies que tengan pareja, con un veterinario asignado cuyo nombre
contenga la letra 'o' y que, además, habiten en un recinto en estado
disponible..

Neo4j

Ejercicio Zoológico.

Consultas archivos de consultas generales ConsultasTotales
Neo4j

Ejercicio Amigos Expertos.

Se desea hacer una base de datos en la cual se pueda tener una relacion
de amigo y de conocimientos en los que ellos sean expertos.


==Cree un registro para usted mismo

CREATE (you:Person {name:"You"})

RETURN you

Neo4j

Ejercicio Amigos Expertos.

`CREATE` crea nodos con etiquetas y propiedades

----

MATCH (you:Person {name:"You"})

CREATE (you)-[like:LIKE]->(neo:Database {name:"Neo4j" })

RETURN you,like,neo

----

Neo4j

Ejercicio Amigos Expertos.

`CREATE` puede crear nodos individuales o estructuras más complejas.

----

MATCH (you:Person {name:"You"})

FOREACH (name in ["Johan","Rajesh","Anna","Julia","Andrew"] |

CREATE (you)-[:FRIEND]->(:Person {name:name}))

----

`FOREACH` te permite ejecutar operaciones de actualización para cada
elemento de una lista.

Neo4j

Ejercicio Amigos Expertos.

Encuentre sus Amigos.

----

MATCH (you {name:"You"})-[:FRIEND]->(yourFriends)

RETURN you, yourFriends

----

Neo4j

Ejercicio Amigos Expertos.

== Crear amigos y experiencia de segundo grado----

MATCH (neo:Database {name:"Neo4j"})

MATCH (anna:Person {name:"Anna"})

CREATE (anna)-[:FRIEND]->(:Person:Expert {name:"Amanda"})-
[:WORKED_WITH]->(neo)

----
Neo4j

Ejercicio Amigos Expertos.

== Encuentre a alguien en su red que pueda ayudarlo a aprender Neo4j

----

MATCH (you {name:"You"})

MATCH (expert)-[:WORKED_WITH]->(db:Database {name:"Neo4j"})

MATCH path = shortestPath( (you)-[:FRIEND*..5]-(expert) )

RETURN db,expert,path

----
Neo4j

Ejercicio Amigos Expertos.

== Retorne todo el grafo

----

MATCH (n)

RETURN n

----
Neo4j

Ejercicio Amigos Expertos.
archivos de consultas generales AmigoExpertos

También podría gustarte