-
Notifications
You must be signed in to change notification settings - Fork 0
Define a Neo4J Database Schema
- Steps for efficient data creation
- 1. General
- 2. Locations
- 3. Videos
- 4. Overlays
- 5. Relationships
- 6. Relationship Weighting
Use Command 1.1
Use command 2.4 or 2.5
Use command 3.4 or 3.5
Use command 4.4 or 4.5
Use command 2.2 (for all Location-IDs) Use command 3.2 (for all Video-IDs) Use command 4.2 (for all Overlay-IDs)
Use command 5.2.1 for only one direction Use command 5.2.2 for both directions
Use command 5.3.1
Use command 5.4.1
Use command 5.1.1 for (for all Relationships between Locations) Use command 5.1.2 for (for all Relationships between a Location and a Video) Use command 5.1.3 for (for all Relationships between a Locations and an Overlay)
Use command 6.1.3
MATCH n RETURN n
MATCH n RETURN ID(n) AS ID, n.name AS name
MATCH (l:Location) RETURN l
MATCH (l:Location) RETURN ID(l) AS lID, l.name AS Name, l.description AS Description, l.tags AS Tags, l.lat AS Latitude, l.lon AS Longitude
MATCH (l:Location) WHERE ID(l)=0 RETURN l
- For empty tags please use
tags:[]
instead - Description can be empty, please use
description :""
instead
CREATE (l:Location {name:"NAME", description:"DESCRIPTION", tags: ["TAG1", "TAG2"], lat:51.96944882545107, lon:7.595720887184142 }) RETURN l
If you want to add more locations with a single command and not one location by one, please use these command instead:
CREATE (l1:Location {name:"NAME", description:"DESCRIPTION", tags: ["TAG1", "TAG2"], lat:51.96944882545107, lon:7.595720887184142 })
CREATE (l2:Location {name:"NAME", description:"DESCRIPTION", tags: [], lat:51.96944882545107, lon:7.595720887184142 })
...
MATCH (l:Location) WHERE ID(l)=0 SET l.name="NAME" RETURN l
MATCH (l:Location) WHERE ID(l)=0 DELETE l
MATCH (v:Video) RETURN v
MATCH (v:Video) RETURN ID(v) AS vID, v.name AS Name, v.description AS Description, v.date AS Date, v.url AS URL
MATCH (v:Video) WHERE ID(v)=2 RETURN v
- Date can be empty, please use
date :""
instead - Description can be empty, please use
description :""
instead - URL have to be the prefix
url:"/media/video/
+ YOUR FILENAME +"
but without any FILE-suffix e.g..mp4
CREATE (v:Video {name:"NAME", description:"DESCRIPTION", date: "", url:"/media/video/FILENAME"}) RETURN v
If you want to add more videos with a single command and not one video by one, please use these command instead:
CREATE (v1:Video {name: "Schlossplatz", url: "/media/video/task01", description: "Schlossplatz bei Tag", date: "", tags:[]})
CREATE (v2:Video {name: "Frauenstraße", url: "/media/video/task02", description: "Frauenstraße bei Tag", date: "", tags:[]})
...
MATCH (v:Video) WHERE ID(v)=2 SET v.name="NAME" RETURN v
MATCH (v:Video) WHERE ID(v)=2 DELETE v
MATCH (o:Overlay) RETURN o
- not done yet -
MATCH (o:Overlay) WHERE ID(o)=3 RETURN o
- not done yet -
- not done yet -
MATCH (o:Overlay) WHERE ID(v)=3 SET o.name="NAME" RETURN o
MATCH (o:Overlay) WHERE ID(o)=3 DELETE o
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) RETURN l1.name AS From, ID(r) AS rID, l2.name AS To
MATCH (l:Location)<-[r:wasRecordedAt]-(v:Video) RETURN ID(r) AS rID, l.name AS Location, v.name AS Related Video
MATCH (l:Location)<-[r:locatedAt]-(o:Overlay) RETURN ID(r) AS rID, l.name AS Location, o.name AS Related Overlays
MATCH (l1:Location), (l2:Location) WHERE ID(l1)=0 AND ID(l2)=1 CREATE UNIQUE (l1)-[:relatedTo]->(l2) RETURN l1.name AS From, ID(r) AS rID, l2.name AS To
MATCH (l1:Location), (l2:Location) WHERE ID(l1)=0 AND ID(l2)=1 CREATE (l1)-[r:relatedTo]-(l2) RETURN l1.name AS From, ID(r) AS rID, l2.name AS To
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) WHERE ID(l1)=0 RETURN l1.name AS From, ID(r) AS rID, l2.name AS To
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) WHERE ID(l1)=0 AND ID(l2)=1 DELETE r
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) WHERE ID(r)=100 DELETE r
MATCH (l:Location), (v:Video) WHERE ID(l)=0 AND ID(v)=2 CREATE UNIQUE (v)-[r:wasRecordedAt]->(l) RETURN ID(r) AS rID, l.name AS Location, v.name AS Video
MATCH (l:Location)<-[r:wasRecordedAt]-(v:Video) WHERE ID(l)=0 RETURN ID(r) AS rID, l.name AS Location, v.name AS Related Video
MATCH (l:Location)<-[r:wasRecordedAt]-(v:Video) WHERE ID(l)=0 AND ID(v)=2 DELETE r
MATCH (l:Location)<-[r:wasRecordedAt]-(v:Video) WHERE ID(r)=100 DELETE r
MATCH (l:Location), (o:Overlay) WHERE ID(l)=0 AND ID(o)=3 CREATE UNIQUE (o)-[r:locatedAt]->(l) RETURN ID(r) AS rID, l.name AS Location, o.name AS Overlay
MATCH (l:Location)<-[r:locatedAt]-(o:Overlay) WHERE ID(l)=0 RETURN ID(r) AS rID, l.name AS Location, v.name AS Related Overlay
MATCH (l:Location)<-[r:locatedAt]-(o:Overlay) WHERE ID(l)=0 AND ID(o)=3 DELETE r
MATCH (l:Location)<-[r:locatedAt]-(o:Overlay) WHERE ID(r)=100 DELETE r
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) RETURN r
MATCH (l1:Location)-[r:relatedTo]->(l2:Location) WHERE ID(l1)=0 AND ID(l2)=1 SET r.intents=["INTENT1", "INTENT2"] RETURN r
MATCH (l1:Location)-[r:relatedTo]-(l2:Location) WHERE ID(r)=100 SET r.intents=["INTENT1", "INTENT2"] RETURN r
IPED Development 2015 Sitcom Lab, Institute for Geoinformatics, University of Muenster
Contributors Nicholas Schiestel, Morin Ostkamp, Tobias Brüggentisch