Phanor Coll menu

Graphgist del Trolebus

Hace unas semanas decidi crear un graphgist de la linea 1 del trolebus de Merida, Venezuela. Inicialmente el grafo iba a mostrar las estaciones y las urbanizaciones cercanas a cada una, inicie el proceso dibujando un esquema del grafo

alt=

luego de dibujarlo y pensarlo un poco mas para crear las relaciones,termine con la siguiente lista que represnta los elementos cercanos a cada una de las estaciones.

  • CC_CERCA (mall)
  • URB_CERCA (residential-houses)
  • RES_CERCA (residential-apartments)
  • FARMACIA_CERCA (farmacy)
  • COMIDA_CERCA (fast food)
  • ESTACIONSERVICIO_CERCA (service station)
  • CLINICA_CERCA (clinic)
  • VETERINARIO_CERCA (vet)
  • PARQUE_CERCA (parks)
  • HOTEL_CERCA (hotels)
  • SIGUIENTE_ESTACION (next station)
  • ESTADIO_CERCA (stadium)
  • BANCO_CERCA (bank)
  • MUSEO_CERCA (museum)
  • CLUB_CERCA (club)
  • MERCADO_CERCA (market)
  • PANADERIA_CERCA (bakery)

al tener listo las relaciones y los nodos con sus propiedades, genere el script para crear cada uno de ellos, sus propuedades y las respectivas relaciones.


CREATE (es_pl:estacion { name: 'Pie del Llano', estado: 'activo' }),

(es_sa:estacion { name: 'San Antonio', estado: 'activo' }),(es_acu:estacion { 

name: 'El Acuario', estado: 'activo' }),(es_museo:estacion { name: 'Mueso de 

Ciencias', estado: 'activo' }),(es_cz:estacion { name: 'Carrizal', estado: 

'activo' }),(es_ac:estacion { name: 'Alto Chama', estado: 'activo' }),

(es_lt:estacion { name: 'Las Tapias', estado: 'inactivo' }),(es_lm:estacion { 

name: 'La Mara', estado: 'activo' }),(es_lp:estacion { name: 'La Parroquia', 

estado: 'activo' }),(es_pz:estacion { name: 'Pan de Azucar', estado: 'activo' }),

(es_lc:estacion { name: 'Las Cruces', estado: 'inactivo' }),

(es_mont:estacion { name: 'Montalban', estado: 'activo' }),(es_cent:estacion 

{ name: 'Centenario', estado: 'activo' }),(es_ph:estacion { name: 'Pozo 

Hondo', estado: 'activo' }),(es_terminal:estacion { name: 'Terminal Ejido', 

estado: 'activo' })

NOTA: este es una parte del script, el contenido completo se puede obtener en http://gist.neo4j.org/?dropbox-18895574/gist/trolegraph.adoc

El codigo de creacion lo probe inicialmente en una copia de Neo4j V.2 local, obteniendo la siguiente representacion en el administrador

Ya al tener lista la BD, procedi a crear los casos de uso (las diferentes concultas que se le podrian hacer a este grafo)

Casos de Uso

-Cuales estacion es estan activas

MATCH (es:estacion) where es.estado='activo' return es.name as estacion

-Listado de las estaciones con un centro comercial cercano

MATCH (es:estacion)-[:CC_CERCA]-(cc) return es.name as estacion,cc.name as cc

-Listado de estaciones con un establecimiento de comida cercano

MATCH (es:estacion)-[:COMIDA_CERCA]-(c) return es.name as estacion,c.name as establecimiento

-Estacion con un Burger King cercano

MATCH (b:comida { name: 'Burger King'})-[:COMIDA_CERCA]-(es) return es.name as estacion

-Estacion con una clinica cercana

match (es:estacion)-[:CLINICA_CERCA]-(clinica) return es.name, clinica.name

-Estacion con una hospital veterinario cercano

MATCH (es:estacion)-[:VETERINARIO_CERCA]-() RETURN es.name

Con este pequeño ejemplo se pude ver lo facil que es consultar un grafo y obtener la informacion necesaria, la idea detras de este graphgist es crear una aplicacion que ayude a turistas saber como llegar mediante las estaciones del trolebus a un lugar en particular, porsupuesto eso es un trabajo en progreso y apenas esta en su etapa inicial.