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...
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...
Documentation Cypher :)
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
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
Comptez maintenant le nombre de plus courts chemins que vous venez d'obtenir !
Le count() existe comme en SQL ... !
match (s67 {nom:'s67'}),(s160{nom:'s160'}),p=allShortestPaths((s67)-[:BUS|:TAXI*]->(s160)) count(p)
Quelle est la distance séparant les stations s61 et s160 ?
(Distance) ->(longueur),
(longueur) -[anglais]-> (length),
(length) -> (length)
match (s61 {nom:'s61'}),(s160{nom:'s160'}),p=shortestPath((s61)-[*]->(s160)) return length(p)