Hi Sebastian,

I'm not sure I understand your model.

The relationships between stations are one seat of segments of the same
train-trip ?

I wonder why you didn't model the train with it's wagons and seats as nodes
and then connect the seat nodes with a RESERVED_FROM releationship to the
stations from which it is reseved?

and the :Train also being connected to a :Trip or :Route which has a
start-time at the first station and connections between the stations as
:Stop

(:Train {trainNo})<-[:IN_TRAIN]-(:Wagon {wagonNo})<-[:IN_WAGON]-(:Seat
{seatNo})-[:RESERVED_FROM]->(:Stop)

then you should be able to find all :Seats which have no :RESERVED_FROM
relationship between the stations that you look at

or probably just subtract those with a RESERVED_FROM relationship from all
seats in your train.

REGARDING YOUR MODEL:

Did you look into allShortestPaths for your path search? An unlimited path
search explodes the numbers of paths looked at
and your WITH statement in between you inhibit the planner to pull in your
conditions into the path matching.

match p=(d:Station {name:
'Berlin-stop-01'})-[r1:train]->()-[r:train*]->(a:Station
{name: 'Berlin-stop-07'})
WHERE r1.reserved = false AND all(r2 in r WHERE r2.reseved = false and
r2.seat = r1.seat and r2.trainnumber = r1.trainnumber)

perhaps it even makes sense to split up the match.

On Tue, Sep 16, 2014 at 10:01 PM, Sebastian Hennebrueder <
sebastian.hennebrue...@googlemail.com> wrote:

> Hi all.
>
> My data presents seats in trains, which can be booked. I am struggling to
> get a search for a bookable seat reasonable fast.
>
> Data sample:
>
> create (source:Station {name: 'Berlin-stop-01'}), (target:Station {name:
> 'Berlin-stop-02'}), (source)-[:train {trainnumber: "abc", seat: "1",
> reserved: false}]->(target)
>
> I am using the following data scenario:
>
> 50 stops, 50 seats, 10 different train numbers
>
> For every seat and train number there is a relation between two stations.
>
> The query I use is:
>
> match p=(d:Station {name: 'Berlin-stop-01'})-[r:train*]->(a:Station {name:
> 'Berlin-stop-07'})
> with head(relationships(p)) as r1,p where r1.reserved = false and all(r2
> in relationships(p) where r2.seat=r1. seat and r2.trainnumber =
> r1. trainnumber)
> return r1 as `r` limit 1
>
> With longer distances between the stops, the database becomes
> unresponsive. I tried to use start to fix the destination and arrival but
> did not get any major improvements.
>
> I would appreciate any help.
>
> Best Regards
>
> Sebastian
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to neo4j+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to