The Shortest Path
Passons aux choses sérieuses...
Ce qui fait l'intérêt d'un SGB graphe c'est l'intégration d'API et d'outils algorithmiques relatifs aux graphes ! Voyons donc voir ça de plus près...
Question
Je voudrai visualiser le chemin le plus court entre s61 et s160, peu importe les moyens de transport utilisés.
Pour cela il va d'abord falloir matcher le point de départ et le point d'arrivée puis définir une variable qui identifiera le chemin.
match (s61 {nom:'s61'}),(s160 {nom:'s160'}), p= .......
Le nom de la fonction ressemble étrangement au nom de l'exercice...
Bon, le premier est pas évident, mais ça ira mieux pour les prochains ;)
match (s61 {nom:'s61}),(s160 {nom:'s160'}), p=shortestPath((s61)-[*]->(s160)) return p
Question
Quels sont les plus courts chemins entre s67 et s160, sans prendre de métro ?
Retournez faire un tour vers la Documentation Cypher :), vous trouverez une fonction avec un nom qui ressemble bien à ce qu'on cherche .. !
Commencez par ne pas tenir compte de la contrainte sur l'utilisation du métro.
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[*]->(s160)) return p
Puis rajoutez la contrainte dans la relation.
Ne pas utiliser le métro revient à utiliser le bus ou le taxi. Le "ou" s'exprime "|"
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[:BUS|:TAXI*]->(s160)) return p