From 0674c56b0c72833a05d0a5f644e1efc334eac63b Mon Sep 17 00:00:00 2001 From: Simran Brucherseifer Date: Thu, 30 Nov 2017 01:00:40 +0100 Subject: [PATCH] Add (slightly modified) GoT dataset from AQL tutorial --- GameOfThrones/Characters.json | 45 +++++++++++++++++++++++++++++++++++ GameOfThrones/ChildOf.json | 16 +++++++++++++ GameOfThrones/Locations.json | 10 ++++++++ GameOfThrones/README.md | 11 +++++++++ GameOfThrones/Traits.json | 20 ++++++++++++++++ GameOfThrones/import.js | 29 ++++++++++++++++++++++ README.md | 11 ++++++++- 7 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 GameOfThrones/Characters.json create mode 100644 GameOfThrones/ChildOf.json create mode 100644 GameOfThrones/Locations.json create mode 100644 GameOfThrones/README.md create mode 100644 GameOfThrones/Traits.json create mode 100644 GameOfThrones/import.js diff --git a/GameOfThrones/Characters.json b/GameOfThrones/Characters.json new file mode 100644 index 0000000..f30a98d --- /dev/null +++ b/GameOfThrones/Characters.json @@ -0,0 +1,45 @@ +[ + { "_key": "NedStark", "name": "Ned", "surname": "Stark", "alive": true, "age": 41, "traits": ["A","H","C","N","P"] }, + { "_key": "RobertBaratheon", "name": "Robert", "surname": "Baratheon", "alive": false, "traits": ["A","H","C"] }, + { "_key": "JaimeLannister", "name": "Jaime", "surname": "Lannister", "alive": true, "age": 36, "traits": ["A","F","B"] }, + { "_key": "CatelynStark", "name": "Catelyn", "surname": "Stark", "alive": false, "age": 40, "traits": ["D","H","C"] }, + { "_key": "CerseiLannister", "name": "Cersei", "surname": "Lannister", "alive": true, "age": 36, "traits": ["H","E","F"] }, + { "_key": "DaenerysTargaryen", "name": "Daenerys", "surname": "Targaryen", "alive": true, "age": 16, "traits": ["D","H","C"] }, + { "_key": "JorahMormont", "name": "Jorah", "surname": "Mormont", "alive": false, "traits": ["A","B","C","F"] }, + { "_key": "PetyrBaelish", "name": "Petyr", "surname": "Baelish", "alive": false, "traits": ["E","G","F"] }, + { "_key": "ViserysTargaryen", "name": "Viserys", "surname": "Targaryen", "alive": false, "traits": ["O","L","N"] }, + { "_key": "JonSnow", "name": "Jon", "surname": "Snow", "alive": true, "age": 16, "traits": ["A","B","C","F"] }, + { "_key": "SansaStark", "name": "Sansa", "surname": "Stark", "alive": true, "age": 13, "traits": ["D","I","J"] }, + { "_key": "AryaStark", "name": "Arya", "surname": "Stark", "alive": true, "age": 11, "traits": ["C","K","L"] }, + { "_key": "RobbStark", "name": "Robb", "surname": "Stark", "alive": false, "traits": ["A","B","C","K"] }, + { "_key": "TheonGreyjoy", "name": "Theon", "surname": "Greyjoy", "alive": true, "age": 16, "traits": ["E","R","K"] }, + { "_key": "BranStark", "name": "Bran", "surname": "Stark", "alive": true, "age": 10, "traits": ["L","J"] }, + { "_key": "JoffreyBaratheon", "name": "Joffrey", "surname": "Baratheon", "alive": false, "age": 19, "traits": ["I","L","O"] }, + { "_key": "SandorClegane", "name": "Sandor", "surname": "Clegane", "alive": true, "traits": ["A","P","K","F"] }, + { "_key": "TyrionLannister", "name": "Tyrion", "surname": "Lannister", "alive": true, "age": 32, "traits": ["F","K","M","N"] }, + { "_key": "KhalDrogo", "name": "Khal", "surname": "Drogo", "alive": false, "traits": ["A","C","O","P"] }, + { "_key": "TywinLannister", "name": "Tywin", "surname": "Lannister", "alive": false, "traits": ["O","M","H","F"] }, + { "_key": "DavosSeaworth", "name": "Davos", "surname": "Seaworth", "alive": true, "age": 49, "traits": ["C","K","P","F"] }, + { "_key": "SamwellTarly", "name": "Samwell", "surname": "Tarly", "alive": true, "age": 17, "traits": ["C","L","I"] }, + { "_key": "StannisBaratheon", "name": "Stannis", "surname": "Baratheon", "alive": false, "traits": ["H","O","P","M"] }, + { "_key": "Melisandre", "name": "Melisandre", "alive": true, "traits": ["G","E","H"] }, + { "_key": "MargaeryTyrell", "name": "Margaery", "surname": "Tyrell", "alive": false, "traits": ["M","D","B"] }, + { "_key": "JeorMormont", "name": "Jeor", "surname": "Mormont", "alive": false, "traits": ["C","H","M","P"] }, + { "_key": "Bronn", "name": "Bronn", "alive": true, "traits": ["K","E","C"] }, + { "_key": "Varys", "name": "Varys", "alive": true, "traits": ["M","F","N","E"] }, + { "_key": "Shae", "name": "Shae", "alive": false, "traits": ["M","D","G"] }, + { "_key": "TalisaMaegyr", "name": "Talisa", "surname": "Maegyr", "alive": false, "traits": ["D","C","B"] }, + { "_key": "Gendry", "name": "Gendry", "alive": false, "traits": ["K","C","A"] }, + { "_key": "Ygritte", "name": "Ygritte", "alive": false, "traits": ["A","P","K"] }, + { "_key": "TormundGiantsbane", "name": "Tormund", "surname": "Giantsbane", "alive": true, "traits": ["C","P","A","I"] }, + { "_key": "Gilly", "name": "Gilly", "alive": true, "traits": ["L","J"] }, + { "_key": "BrienneTarth", "name": "Brienne", "surname": "Tarth", "alive": true, "age": 32, "traits": ["P","C","A","K"] }, + { "_key": "RamsayBolton", "name": "Ramsay", "surname": "Bolton", "alive": true, "traits": ["E","O","G","A"] }, + { "_key": "EllariaSand", "name": "Ellaria", "surname": "Sand", "alive": true, "traits": ["P","O","A","E"] }, + { "_key": "DaarioNaharis", "name": "Daario", "surname": "Naharis", "alive": true, "traits": ["K","P","A"] }, + { "_key": "Missandei", "name": "Missandei", "alive": true, "traits": ["D","L","C","M"] }, + { "_key": "TommenBaratheon", "name": "Tommen", "surname": "Baratheon", "alive": true, "traits": ["I","L","B"] }, + { "_key": "JaqenHghar", "name": "Jaqen", "surname": "H'ghar", "alive": true, "traits": ["H","F","K"] }, + { "_key": "RooseBolton", "name": "Roose", "surname": "Bolton", "alive": true, "traits": ["H","E","F","A"] }, + { "_key": "TheHighSparrow", "name": "The High Sparrow", "alive": true, "traits": ["H","M","F","O"] } +] diff --git a/GameOfThrones/ChildOf.json b/GameOfThrones/ChildOf.json new file mode 100644 index 0000000..d6041d9 --- /dev/null +++ b/GameOfThrones/ChildOf.json @@ -0,0 +1,16 @@ +[ + {"_to": "Characters/NedStark", "_from": "Characters/RobbStark" }, + {"_to": "Characters/NedStark", "_from": "Characters/SansaStark" }, + {"_to": "Characters/NedStark", "_from": "Characters/AryaStark" }, + {"_to": "Characters/NedStark", "_from": "Characters/BranStark" }, + {"_to": "Characters/CatelynStark", "_from": "Characters/RobbStark" }, + {"_to": "Characters/CatelynStark", "_from": "Characters/SansaStark" }, + {"_to": "Characters/CatelynStark", "_from": "Characters/AryaStark" }, + {"_to": "Characters/CatelynStark", "_from": "Characters/BranStark" }, + {"_to": "Characters/NedStark", "_from": "Characters/JonSnow" }, + {"_to": "Characters/TywinLannister", "_from": "Characters/JaimeLannister" }, + {"_to": "Characters/TywinLannister", "_from": "Characters/CerseiLannister" }, + {"_to": "Characters/TywinLannister", "_from": "Characters/TyrionLannister" }, + {"_to": "Characters/CerseiLannister", "_from": "Characters/JoffreyBaratheon" }, + {"_to": "Characters/JaimeLannister", "_from": "Characters/JoffreyBaratheon" } +] diff --git a/GameOfThrones/Locations.json b/GameOfThrones/Locations.json new file mode 100644 index 0000000..640065f --- /dev/null +++ b/GameOfThrones/Locations.json @@ -0,0 +1,10 @@ +[ + { "name": "Dragonstone", "coordinate": [ 55.167801, -6.815096 ] }, + { "name": "King's Landing", "coordinate": [ 42.639752, 18.110189 ] }, + { "name": "The Red Keep", "coordinate": [ 35.896447, 14.446442 ] }, + { "name": "Yunkai", "coordinate": [ 31.046642, -7.129532 ] }, + { "name": "Astapor", "coordinate": [ 31.50974, -9.774249 ] }, + { "name": "Winterfell", "coordinate": [ 54.368321, -5.581312 ] }, + { "name": "Vaes Dothrak", "coordinate": [ 54.16776, -6.096125 ] }, + { "name": "Beyond the wall", "coordinate": [ 64.265473, -21.094093 ] } +] diff --git a/GameOfThrones/README.md b/GameOfThrones/README.md new file mode 100644 index 0000000..2620769 --- /dev/null +++ b/GameOfThrones/README.md @@ -0,0 +1,11 @@ +Game of Thrones dataset +======================= + +This is a small dataset of characters from the novel and fantasy drama television +series Game of Thrones (as of season 1). It includes character traits in two +languages, some family relations, and a small set of filming locations. + +See the [AQL tutorial](https://docs.arangodb.com/latest/AQL/Tutorial/) for queries. + +To create the necessary collections with indexes, import the JSON data and create +a named graph for visualization purposes, run the `import.js` script with arangosh. diff --git a/GameOfThrones/Traits.json b/GameOfThrones/Traits.json new file mode 100644 index 0000000..3a74256 --- /dev/null +++ b/GameOfThrones/Traits.json @@ -0,0 +1,20 @@ +[ + { "_key": "A", "en": "strong", "de": "stark" }, + { "_key": "B", "en": "polite", "de": "freundlich" }, + { "_key": "C", "en": "loyal", "de": "loyal" }, + { "_key": "D", "en": "beautiful", "de": "schön" }, + { "_key": "E", "en": "sneaky", "de": "hinterlistig" }, + { "_key": "F", "en": "experienced", "de": "erfahren" }, + { "_key": "G", "en": "corrupt", "de": "korrupt" }, + { "_key": "H", "en": "powerful", "de": "einflussreich" }, + { "_key": "I", "en": "naive", "de": "naiv" }, + { "_key": "J", "en": "unmarried", "de": "unverheiratet" }, + { "_key": "K", "en": "skillful", "de": "geschickt" }, + { "_key": "L", "en": "young", "de": "jung" }, + { "_key": "M", "en": "smart", "de": "klug" }, + { "_key": "N", "en": "rational", "de": "rational" }, + { "_key": "O", "en": "ruthless", "de": "skrupellos" }, + { "_key": "P", "en": "brave", "de": "mutig" }, + { "_key": "Q", "en": "mighty", "de": "mächtig" }, + { "_key": "R", "en": "weak", "de": "schwach" } +] diff --git a/GameOfThrones/import.js b/GameOfThrones/import.js new file mode 100644 index 0000000..2ec17d5 --- /dev/null +++ b/GameOfThrones/import.js @@ -0,0 +1,29 @@ +// Create and switch to a fresh database +const database = "GameOfThrones" +try { + db._dropDatabase(database); +} catch(e) {} +db._createDatabase(database); +db._useDatabase(database); + +// Create vertex and edge collections +let chars = db._create("Characters"); +let traits = db._create("Traits"); +let childof = db._createEdgeCollection("ChildOf"); +let locs = db._create("Locations"); + +// Import documents to collections +const internal = require("internal") +chars.save(internal.load(__dirname + "/Characters.json")); +traits.save(internal.load(__dirname + "/Traits.json")); +childof.save(internal.load(__dirname + "/ChildOf.json")); +locs.save(internal.load(__dirname + "/Locations.json")); + +// Add geospatial index for coordinate attribute of Locations +locs.ensureIndex({ type: "geo", fields: ["coordinate"] }); + +// Create named graph for visualization purposes (optional) +const graph_module = require("@arangodb/general-graph"); +let graph = graph_module._create("GameOfThrones"); +let rel = graph_module._relation("ChildOf", ["Characters"], ["Characters"]); +graph._extendEdgeDefinitions(rel); diff --git a/README.md b/README.md index e8202d1..f677e80 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ ArangoDB Example graph data =========================== + This repository contains [datasets organized in graphs to be used with the ArangoDB Graph database](https://github.com/arangodb/arangodb). -[Read more about ArangoDB and graphs here.](https://docs.arangodb.com/latest/Manual/Graphs) +More about ArangoDB and graphs: [Graph documentation](https://docs.arangodb.com/latest/Manual/Graphs) + Fake user data ============== @@ -220,6 +222,7 @@ This dataset has been used for the [screencast of the graph visualisation tool]( Debian Dependency Graph ======================== + The [debian linux distribution](http://debian.org) consists of packages, which relate to each others by dependencies, which demand or recommend other packages to be installed. Also conflicts are a possible relation, which prohibits two packages to be installed at once. The script used to [gather this graph data is available alongside with pyarango](https://github.com/tariqdaouda/pyArango/blob/master/examples/debiangraph.py). @@ -238,3 +241,9 @@ unix> arangorestore --input-directory DebianDependencyGraph/ \ Using the [ArangoDB graph viewer](https://github.com/arangodb/arangodb), we can browse random starting points in the graph: ![graph screenshot](DebianDependencyGraph/debian_dependency_graph.png) + +Game of Thrones +=============== + +Small, multi-purpose dataset including a small graph of parents and children (`Characters --ChildOf--> Characters`). +See [README](GameOfThrones/README.md) for details.