1
0
Fork 0
arangodb/js/common/modules/@arangodb/graph-examples/example-graph.js

455 lines
28 KiB
JavaScript

/* jshint maxlen:160 */
'use strict';
////////////////////////////////////////////////////////////////////////////////
/// @brief Graph Data for Example
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2014 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Michael Hackstein
/// @author Copyright 2011-2014, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
var Graph = require("@arangodb/general-graph");
var db = require("internal").db;
var arangodb = require("@arangodb");
var ArangoError = arangodb.ArangoError;
// we create a graph with 'knows' pointing from 'persons' to 'persons'
var createTraversalExample = function() {
var g = Graph._create("knows_graph",
[Graph._relation("knows", "persons", "persons")]
);
var a = g.persons.save({name: "Alice", _key: "alice"})._id;
var b = g.persons.save({name: "Bob", _key: "bob"})._id;
var c = g.persons.save({name: "Charlie", _key: "charlie"})._id;
var d = g.persons.save({name: "Dave", _key: "dave"})._id;
var e = g.persons.save({name: "Eve", _key: "eve"})._id;
g.knows.save(a, b, {});
g.knows.save(b, c, {});
g.knows.save(b, d, {});
g.knows.save(e, a, {});
g.knows.save(e, b, {});
return g;
};
// we create a graph with 'relation' pointing from 'female' to 'male' and 'male
var createSocialGraph = function() {
var edgeDefinition = [];
edgeDefinition.push(Graph._relation("relation", ["female", "male"], ["female", "male"]));
var g = Graph._create("social", edgeDefinition);
var a = g.female.save({name: "Alice", _key: "alice"});
var b = g.male.save({name: "Bob", _key: "bob"});
var c = g.male.save({name: "Charly", _key: "charly"});
var d = g.female.save({name: "Diana", _key: "diana"});
g.relation.save(a._id, b._id, {type: "married", _key: "aliceAndBob"});
g.relation.save(a._id, c._id, {type: "friend", _key: "aliceAndCharly"});
g.relation.save(c._id, d._id, {type: "married", _key: "charlyAndDiana"});
g.relation.save(b._id, d._id, {type: "friend", _key: "bobAndDiana"});
return g;
};
var createRoutePlannerGraph = function() {
var edgeDefinition = [];
edgeDefinition.push(Graph._relation(
"germanHighway", ["germanCity"], ["germanCity"])
);
edgeDefinition.push(
Graph._relation("frenchHighway", ["frenchCity"], ["frenchCity"])
);
edgeDefinition.push(Graph._relation(
"internationalHighway", ["frenchCity", "germanCity"], ["frenchCity", "germanCity"])
);
var g = Graph._create("routeplanner", edgeDefinition);
var berlin = g.germanCity.save({_key: "Berlin", population : 3000000, isCapital : true, loc: [52.5167, 13.3833]});
var cologne = g.germanCity.save({_key: "Cologne", population : 1000000, isCapital : false, loc: [50.9364, 6.9528]});
var hamburg = g.germanCity.save({_key: "Hamburg", population : 1000000, isCapital : false, loc: [53.5653, 10.0014]});
var lyon = g.frenchCity.save({_key: "Lyon", population : 80000, isCapital : false, loc: [45.7600, 4.8400]});
var paris = g.frenchCity.save({_key: "Paris", population : 4000000, isCapital : true, loc: [48.8567, 2.3508]});
g.germanCity.ensureGeoIndex("loc");
g.frenchCity.ensureGeoIndex("loc");
g.germanHighway.save(berlin._id, cologne._id, {distance: 850});
g.germanHighway.save(berlin._id, hamburg._id, {distance: 400});
g.germanHighway.save(hamburg._id, cologne._id, {distance: 500});
g.frenchHighway.save(paris._id, lyon._id, {distance: 550});
g.internationalHighway.save(berlin._id, lyon._id, {distance: 1100});
g.internationalHighway.save(berlin._id, paris._id, {distance: 1200});
g.internationalHighway.save(hamburg._id, paris._id, {distance: 900});
g.internationalHighway.save(hamburg._id, lyon._id, {distance: 1300});
g.internationalHighway.save(cologne._id, lyon._id, {distance: 700});
g.internationalHighway.save(cologne._id, paris._id, {distance: 550});
return g;
};
var saveWorldCountryGraphData = function() {
// This example writes the graph data without using the general graph interface.
// it expects to find the collections to be already created.
// It can be called either via createWorldCountryGraph() that will create a managed graph
// or via dropWorldCountryUnManaged that will simply generate a set of vertex and edge collections.
// instead of using
// var world = worldCountryGraph.worldVertices.save({ _key: "world", name: "World", type: "root" });
// var africa = worldCountryGraph.worldVertices.save({ _key: "continent-africa", name: "Africa", type: "continent" });
// worldCountryGraph.worldEdges.save(world._id, africa._id, { type: "is-in" });
//
// we will directly put the documnets into their respective collections
// and have to ensure graph consistency by ourselves.
// vertices: root node
var db = require("internal").db;
db.worldVertices.save({ _key: "world", name: "World", type: "root" });
// vertices: continents
db.worldVertices.save({ _key: "continent-africa", name: "Africa", type: "continent" });
db.worldVertices.save({ _key: "continent-asia", name: "Asia", type: "continent" });
db.worldVertices.save({ _key: "continent-australia", name: "Australia", type: "continent" });
db.worldVertices.save({ _key: "continent-europe", name: "Europe", type: "continent" });
db.worldVertices.save({ _key: "continent-north-america", name: "North America", type: "continent" });
db.worldVertices.save({ _key: "continent-south-america", name: "South America", type: "continent" });
// vertices: countries
db.worldVertices.save({ _key: "country-afghanistan", name: "Afghanistan", type: "country", code: "AFG" });
db.worldVertices.save({ _key: "country-albania", name: "Albania", type: "country", code: "ALB" });
db.worldVertices.save({ _key: "country-algeria", name: "Algeria", type: "country", code: "DZA" });
db.worldVertices.save({ _key: "country-andorra", name: "Andorra", type: "country", code: "AND" });
db.worldVertices.save({ _key: "country-angola", name: "Angola", type: "country", code: "AGO" });
db.worldVertices.save({ _key: "country-antigua-and-barbuda", name: "Antigua and Barbuda", type: "country", code: "ATG" });
db.worldVertices.save({ _key: "country-argentina", name: "Argentina", type: "country", code: "ARG" });
db.worldVertices.save({ _key: "country-australia", name: "Australia", type: "country", code: "AUS" });
db.worldVertices.save({ _key: "country-austria", name: "Austria", type: "country", code: "AUT" });
db.worldVertices.save({ _key: "country-bahamas", name: "Bahamas", type: "country", code: "BHS" });
db.worldVertices.save({ _key: "country-bahrain", name: "Bahrain", type: "country", code: "BHR" });
db.worldVertices.save({ _key: "country-bangladesh", name: "Bangladesh", type: "country", code: "BGD" });
db.worldVertices.save({ _key: "country-barbados", name: "Barbados", type: "country", code: "BRB" });
db.worldVertices.save({ _key: "country-belgium", name: "Belgium", type: "country", code: "BEL" });
db.worldVertices.save({ _key: "country-bhutan", name: "Bhutan", type: "country", code: "BTN" });
db.worldVertices.save({ _key: "country-bolivia", name: "Bolivia", type: "country", code: "BOL" });
db.worldVertices.save({ _key: "country-bosnia-and-herzegovina", name: "Bosnia and Herzegovina", type: "country", code: "BIH" });
db.worldVertices.save({ _key: "country-botswana", name: "Botswana", type: "country", code: "BWA" });
db.worldVertices.save({ _key: "country-brazil", name: "Brazil", type: "country", code: "BRA" });
db.worldVertices.save({ _key: "country-brunei", name: "Brunei", type: "country", code: "BRN" });
db.worldVertices.save({ _key: "country-bulgaria", name: "Bulgaria", type: "country", code: "BGR" });
db.worldVertices.save({ _key: "country-burkina-faso", name: "Burkina Faso", type: "country", code: "BFA" });
db.worldVertices.save({ _key: "country-burundi", name: "Burundi", type: "country", code: "BDI" });
db.worldVertices.save({ _key: "country-cambodia", name: "Cambodia", type: "country", code: "KHM" });
db.worldVertices.save({ _key: "country-cameroon", name: "Cameroon", type: "country", code: "CMR" });
db.worldVertices.save({ _key: "country-canada", name: "Canada", type: "country", code: "CAN" });
db.worldVertices.save({ _key: "country-chad", name: "Chad", type: "country", code: "TCD" });
db.worldVertices.save({ _key: "country-chile", name: "Chile", type: "country", code: "CHL" });
db.worldVertices.save({ _key: "country-colombia", name: "Colombia", type: "country", code: "COL" });
db.worldVertices.save({ _key: "country-cote-d-ivoire", name: "Cote d'Ivoire", type: "country", code: "CIV" });
db.worldVertices.save({ _key: "country-croatia", name: "Croatia", type: "country", code: "HRV" });
db.worldVertices.save({ _key: "country-czech-republic", name: "Czech Republic", type: "country", code: "CZE" });
db.worldVertices.save({ _key: "country-denmark", name: "Denmark", type: "country", code: "DNK" });
db.worldVertices.save({ _key: "country-ecuador", name: "Ecuador", type: "country", code: "ECU" });
db.worldVertices.save({ _key: "country-egypt", name: "Egypt", type: "country", code: "EGY" });
db.worldVertices.save({ _key: "country-eritrea", name: "Eritrea", type: "country", code: "ERI" });
db.worldVertices.save({ _key: "country-finland", name: "Finland", type: "country", code: "FIN" });
db.worldVertices.save({ _key: "country-france", name: "France", type: "country", code: "FRA" });
db.worldVertices.save({ _key: "country-germany", name: "Germany", type: "country", code: "DEU" });
db.worldVertices.save({ _key: "country-people-s-republic-of-china", name: "People's Republic of China", type: "country", code: "CHN" });
// vertices: capitals
db.worldVertices.save({ _key: "capital-algiers", name: "Algiers", type: "capital" });
db.worldVertices.save({ _key: "capital-andorra-la-vella", name: "Andorra la Vella", type: "capital" });
db.worldVertices.save({ _key: "capital-asmara", name: "Asmara", type: "capital" });
db.worldVertices.save({ _key: "capital-bandar-seri-begawan", name: "Bandar Seri Begawan", type: "capital" });
db.worldVertices.save({ _key: "capital-beijing", name: "Beijing", type: "capital" });
db.worldVertices.save({ _key: "capital-berlin", name: "Berlin", type: "capital" });
db.worldVertices.save({ _key: "capital-bogota", name: "Bogota", type: "capital" });
db.worldVertices.save({ _key: "capital-brasilia", name: "Brasilia", type: "capital" });
db.worldVertices.save({ _key: "capital-bridgetown", name: "Bridgetown", type: "capital" });
db.worldVertices.save({ _key: "capital-brussels", name: "Brussels", type: "capital" });
db.worldVertices.save({ _key: "capital-buenos-aires", name: "Buenos Aires", type: "capital" });
db.worldVertices.save({ _key: "capital-bujumbura", name: "Bujumbura", type: "capital" });
db.worldVertices.save({ _key: "capital-cairo", name: "Cairo", type: "capital" });
db.worldVertices.save({ _key: "capital-canberra", name: "Canberra", type: "capital" });
db.worldVertices.save({ _key: "capital-copenhagen", name: "Copenhagen", type: "capital" });
db.worldVertices.save({ _key: "capital-dhaka", name: "Dhaka", type: "capital" });
db.worldVertices.save({ _key: "capital-gaborone", name: "Gaborone", type: "capital" });
db.worldVertices.save({ _key: "capital-helsinki", name: "Helsinki", type: "capital" });
db.worldVertices.save({ _key: "capital-kabul", name: "Kabul", type: "capital" });
db.worldVertices.save({ _key: "capital-la-paz", name: "La Paz", type: "capital" });
db.worldVertices.save({ _key: "capital-luanda", name: "Luanda", type: "capital" });
db.worldVertices.save({ _key: "capital-manama", name: "Manama", type: "capital" });
db.worldVertices.save({ _key: "capital-nassau", name: "Nassau", type: "capital" });
db.worldVertices.save({ _key: "capital-n-djamena", name: "N'Djamena", type: "capital" });
db.worldVertices.save({ _key: "capital-ottawa", name: "Ottawa", type: "capital" });
db.worldVertices.save({ _key: "capital-ouagadougou", name: "Ouagadougou", type: "capital" });
db.worldVertices.save({ _key: "capital-paris", name: "Paris", type: "capital" });
db.worldVertices.save({ _key: "capital-phnom-penh", name: "Phnom Penh", type: "capital" });
db.worldVertices.save({ _key: "capital-prague", name: "Prague", type: "capital" });
db.worldVertices.save({ _key: "capital-quito", name: "Quito", type: "capital" });
db.worldVertices.save({ _key: "capital-saint-john-s", name: "Saint John's", type: "capital" });
db.worldVertices.save({ _key: "capital-santiago", name: "Santiago", type: "capital" });
db.worldVertices.save({ _key: "capital-sarajevo", name: "Sarajevo", type: "capital" });
db.worldVertices.save({ _key: "capital-sofia", name: "Sofia", type: "capital" });
db.worldVertices.save({ _key: "capital-thimphu", name: "Thimphu", type: "capital" });
db.worldVertices.save({ _key: "capital-tirana", name: "Tirana", type: "capital" });
db.worldVertices.save({ _key: "capital-vienna", name: "Vienna", type: "capital" });
db.worldVertices.save({ _key: "capital-yamoussoukro", name: "Yamoussoukro", type: "capital" });
db.worldVertices.save({ _key: "capital-yaounde", name: "Yaounde", type: "capital" });
db.worldVertices.save({ _key: "capital-zagreb", name: "Zagreb", type: "capital" });
// edges: continent -> world
db.worldEdges.save("worldVertices/continent-africa", "worldVertices/world", { type: "is-in" });
db.worldEdges.save("worldVertices/continent-asia", "worldVertices/world", { type: "is-in" });
db.worldEdges.save("worldVertices/continent-australia", "worldVertices/world", { type: "is-in" });
db.worldEdges.save("worldVertices/continent-europe", "worldVertices/world", { type: "is-in" });
db.worldEdges.save("worldVertices/continent-north-america", "worldVertices/world", { type: "is-in" });
db.worldEdges.save("worldVertices/continent-south-america", "worldVertices/world", { type: "is-in" });
// edges: country -> continent
db.worldEdges.save("worldVertices/country-afghanistan", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-albania", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-algeria", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-andorra", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-angola", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-antigua-and-barbuda", "worldVertices/continent-north-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-argentina", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-australia", "worldVertices/continent-australia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-austria", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bahamas", "worldVertices/continent-north-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bahrain", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bangladesh", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-barbados", "worldVertices/continent-north-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-belgium", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bhutan", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bolivia", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bosnia-and-herzegovina", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-botswana", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-brazil", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-brunei", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-bulgaria", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-burkina-faso", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-burundi", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-cambodia", "worldVertices/continent-asia", { type: "is-in" });
db.worldEdges.save("worldVertices/country-cameroon", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-canada", "worldVertices/continent-north-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-chad", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-chile", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-colombia", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-cote-d-ivoire", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-croatia", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-czech-republic", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-denmark", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-ecuador", "worldVertices/continent-south-america", { type: "is-in" });
db.worldEdges.save("worldVertices/country-egypt", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-eritrea", "worldVertices/continent-africa", { type: "is-in" });
db.worldEdges.save("worldVertices/country-finland", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-france", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-germany", "worldVertices/continent-europe", { type: "is-in" });
db.worldEdges.save("worldVertices/country-people-s-republic-of-china", "worldVertices/continent-asia", { type: "is-in" });
// edges: capital -> country
db.worldEdges.save("worldVertices/capital-algiers", "worldVertices/country-algeria", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-andorra-la-vella", "worldVertices/country-andorra", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-asmara", "worldVertices/country-eritrea", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-bandar-seri-begawan", "worldVertices/country-brunei", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-beijing", "worldVertices/country-people-s-republic-of-china", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-berlin", "worldVertices/country-germany", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-bogota", "worldVertices/country-colombia", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-brasilia", "worldVertices/country-brazil", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-bridgetown", "worldVertices/country-barbados", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-brussels", "worldVertices/country-belgium", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-buenos-aires", "worldVertices/country-argentina", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-bujumbura", "worldVertices/country-burundi", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-cairo", "worldVertices/country-egypt", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-canberra", "worldVertices/country-australia", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-copenhagen", "worldVertices/country-denmark", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-dhaka", "worldVertices/country-bangladesh", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-gaborone", "worldVertices/country-botswana", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-helsinki", "worldVertices/country-finland", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-kabul", "worldVertices/country-afghanistan", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-la-paz", "worldVertices/country-bolivia", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-luanda", "worldVertices/country-angola", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-manama", "worldVertices/country-bahrain", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-nassau", "worldVertices/country-bahamas", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-n-djamena", "worldVertices/country-chad", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-ottawa", "worldVertices/country-canada", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-ouagadougou", "worldVertices/country-burkina-faso", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-paris", "worldVertices/country-france", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-phnom-penh", "worldVertices/country-cambodia", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-prague", "worldVertices/country-czech-republic", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-quito", "worldVertices/country-ecuador", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-saint-john-s", "worldVertices/country-antigua-and-barbuda", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-santiago", "worldVertices/country-chile", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-sarajevo", "worldVertices/country-bosnia-and-herzegovina", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-sofia", "worldVertices/country-bulgaria", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-thimphu", "worldVertices/country-bhutan", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-tirana", "worldVertices/country-albania", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-vienna", "worldVertices/country-austria", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-yamoussoukro", "worldVertices/country-cote-d-ivoire", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-yaounde", "worldVertices/country-cameroon", { type: "is-in" });
db.worldEdges.save("worldVertices/capital-zagreb", "worldVertices/country-croatia", { type: "is-in" });
};
var createWorldCountryGraph = function() {
// Here we use the graph module to create the collections for the world example:
/* jshint ignore:start */
var worldCountryGraph = Graph._create("worldCountry",
[Graph._relation("worldEdges", ["worldVertices"], ["worldVertices"])]
);
/* jshint ignore:end */
// and load the data of the graph into the collections created by the graph module:
saveWorldCountryGraphData();
};
var createWorldCountryGraphUnManaged = function() {
// if we don't manage the graph, we need to drop the vertex/edge collections manually.
var db = require("internal").db;
db._create("worldVertices");
db._createEdgeCollection("worldEdges");
saveWorldCountryGraphData();
};
var dropWorldCountryUnManaged = function() {
// here we just use flat vertex/edge collections
var db = require("internal").db;
db._drop("worldVertices");
db._drop("worldEdges");
};
var createTraversalGraph = function() {
var graph_module = require("@arangodb/general-graph");
var graph = graph_module._create("traversalGraph", [
graph_module._relation("edges", "circles", ["circles"])]);
// Add circle circles
graph.circles.save({"_key": "A", "label": '1'});
graph.circles.save({"_key": "B", "label": '2'});
graph.circles.save({"_key": "C", "label": '3'});
graph.circles.save({"_key": "D", "label": '4'});
graph.circles.save({"_key": "E", "label": '5'});
graph.circles.save({"_key": "F", "label": '6'});
graph.circles.save({"_key": "G", "label": '7'});
graph.circles.save({"_key": "H", "label": '8'});
graph.circles.save({"_key": "I", "label": '9'});
graph.circles.save({"_key": "J", "label": '10'});
graph.circles.save({"_key": "K", "label": '11'});
// Add relevant edges - left branch:
graph.edges.save("circles/A", "circles/B", {theFalse: false, theTruth: true, "label": 'left_bar'});
graph.edges.save("circles/B", "circles/C", {theFalse: false, theTruth: true, "label": 'left_blarg'});
graph.edges.save("circles/C", "circles/D", {theFalse: false, theTruth: true, "label": 'left_blorg'});
graph.edges.save("circles/B", "circles/E", {theFalse: false, theTruth: true, "label": 'left_blub'});
graph.edges.save("circles/E", "circles/F", {theFalse: false, theTruth: true, "label": 'left_schubi'});
// Add relevant edges - right branch:
graph.edges.save("circles/A", "circles/G", {theFalse: false, theTruth: true, "label": 'right_foo'});
graph.edges.save("circles/G", "circles/H", {theFalse: false, theTruth: true, "label": 'right_blob'});
graph.edges.save("circles/H", "circles/I", {theFalse: false, theTruth: true, "label": 'right_blub'});
graph.edges.save("circles/G", "circles/J", {theFalse: false, theTruth: true, "label": 'right_zip'});
graph.edges.save("circles/J", "circles/K", {theFalse: false, theTruth: true, "label": 'right_zup'});
};
var knownGraphs = {
"knows_graph" : {create: createTraversalExample, dependencies: [
"knows", "persons"
]},
"routeplanner" : {create: createRoutePlannerGraph, dependencies: [
"frenchHighway", "frenchCity", "germanCity", "germanHighway", "internationalHighway"
]},
"social" : {create: createSocialGraph, dependencies: [
"relation", "female", "male"
]},
"worldCountry" : {create: createWorldCountryGraph, dependencies: [
"worldVertices", "worldEdges"
]},
"worldCountryUnManaged" : {create: createWorldCountryGraphUnManaged, dependencies: [
"worldVertices", "worldEdges"
]},
"traversalGraph" : {create: createTraversalGraph, dependencies: [
"edges", "circles"
]}
};
var unManagedGraphs = {
"worldCountryUnManaged" : dropWorldCountryUnManaged
};
var dropGraph = function (name, prefixed) {
if (! knownGraphs.hasOwnProperty(name)) {
// trying to drop an unknown graph - better not do it
return false;
}
if (unManagedGraphs.hasOwnProperty(name)) {
unManagedGraphs[name]();
}
else {
if (prefixed) {
name = "UnitTest" + name;
}
if (Graph._exists(name)) {
return Graph._drop(name, true);
}
}
};
var loadGraph = function (name, prefixed) {
if (! knownGraphs.hasOwnProperty(name)) {
// trying to drop an unknown graph - better not do it
return false;
}
else {
var collections = [];
db._collections().forEach(function(c) {
collections.push(c.name());
});
var dependencies = [];
knownGraphs[name].dependencies.forEach(function(val) {
collections.forEach(function (c) {
if (val === c) {
dependencies.push(val);
}
});
});
if (dependencies.length > 0) {
var err = new ArangoError();
err.errorNum = arangodb.ERROR_ARANGO_DUPLICATE_NAME;
if (dependencies.loadGraph > 1) {
err.errorMessage = "the collections: " + JSON.stringify(dependencies) + " already exist. Please clean up and try again.";
}
else {
err.errorMessage = "the collection: " + JSON.stringify(dependencies) + " already exists. Please clean up and try again.";
}
throw err;
}
}
dropGraph(name);
return knownGraphs[name].create(prefixed);
};
exports.loadGraph = loadGraph;
exports.dropGraph = dropGraph;