Clean and upgrade openCypher and stress tests ()

* Add initial behave test improvements
* Make HTML human-readable
* Remove tutorial tests
* Migrate to neo4j-driver==4.1.1
This commit is contained in:
Marko Budiselić 2020-11-24 13:09:14 +01:00 committed by GitHub
parent 4afcf1b655
commit 573b6cb045
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
223 changed files with 123 additions and 500620 deletions
.github/workflows
init
tests
benchmark/query
gql_behave
.gitignoreREADME.mdcontinuous_integrationenvironment.pyrequirements.txtrun.py
steps
tests
config.yaml
memgraph_V1
openCypher_M09
stackoverflow_answers
unstable/features
qa

View File

@ -260,16 +260,18 @@ jobs:
name: "Macro benchmark summary"
path: macro_benchmark_summary.txt
- name: Run quality assurance tests
- name: Run GQL Behave tests
run: |
cd tests/qa
cd tests/gql_behave
./continuous_integration
- name: Save quality assurance status
uses: actions/upload-artifact@v2
with:
name: "Quality assurance status"
path: tests/qa/quality_assurance_status.txt
name: "GQL Behave Status"
path: |
tests/gql_behave/gql_behave_status.csv
tests/gql_behave/gql_behave_status.html
- name: Run stress test (plain)
run: |

View File

@ -268,16 +268,18 @@ jobs:
--num-database-workers 9 --num-clients-workers 30 \
--no-strict
- name: Run quality assurance tests
- name: Run GQL Behave tests
run: |
cd tests/qa
cd tests/gql_behave
./continuous_integration
- name: Save quality assurance status
uses: actions/upload-artifact@v2
with:
name: "Quality assurance status"
path: tests/qa/quality_assurance_status.txt
name: "GQL Behave Status"
path: |
tests/gql_behave/gql_behave_status.csv
tests/gql_behave/gql_behave_status.html
- name: Run stress test (plain)
run: |

View File

@ -267,16 +267,18 @@ jobs:
--num-database-workers 9 --num-clients-workers 30 \
--no-strict
- name: Run quality assurance tests
- name: Run GQL Behave tests
run: |
cd tests/qa
cd tests/gql_behave
./continuous_integration
- name: Save quality assurance status
uses: actions/upload-artifact@v2
with:
name: "Quality assurance status"
path: tests/qa/quality_assurance_status.txt
name: "GQL Behave Status"
path: |
tests/gql_behave/gql_behave_status.csv
tests/gql_behave/gql_behave_status.html
- name: Run stress test (plain)
run: |

4
init
View File

@ -86,8 +86,8 @@ cd libs
./setup.sh
cd ..
# setup qa dependencies
setup_virtualenv tests/qa
# setup gql_behave dependencies
setup_virtualenv tests/gql_behave
# setup stress dependencies
setup_virtualenv tests/stress

View File

@ -3,7 +3,6 @@
#include <benchmark/benchmark.h>
//////////////////////////////////////////////////////
// THIS INCLUDE SHOULD ALWAYS COME BEFORE THE
// OTHER INCLUDES

4
tests/gql_behave/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
ve3/
*.pyc
gql_behave_status.csv
gql_behave_status.html

View File

@ -1,23 +1,29 @@
# Memgraph quality assurance
# Memgraph GQL Behave Tests
Python script used to run quality assurance tests against Memgraph.
To run the script execute:
Python script used to run graph query language behavior tests against Memgraph.
To run the script please execute:
```
source ve3/bin/activate
./qa.py --help
./qa.py memgraph_V1
./run.py --help
./run.py memgraph_V1
```
The script requires one positional parameter that specifies which test suite
should be executed. All available test suites can be found in the `tests/`
directory.
## openCypher TCK tests
## Graph Sizes
IMPORTANT: Please prepare small graphs, up to 1000 nodes+edges because this
engine is not optimized to run on a huge graphs. Furthermore, semantics should
always be tested on a small scale.
## openCypher TCK Tests
The script uses Behave to run Cucumber tests.
Some gotchas exist when adding openCypher TCK tests to our QA engine:
Some gotchas exist when adding openCypher TCK tests to the engine:
- In some tests example injection did not work. Behave stores the first row in
Cucumber tables as headings and the example injection failed to work. To
@ -34,10 +40,9 @@ Some gotchas exist when adding openCypher TCK tests to our QA engine:
`Comparability.feature` tests are failing because integers are compared to
strings what is not allowed in openCypher.
## QA engine issues:
## The Engine Issues
Comparing tables with ordering doesn't always work, example:
```
ORDER BY x DESC
| x | y | | x | y |
@ -47,11 +52,9 @@ ORDER BY x DESC
```
Side effect aren't tracked or verified, example:
```
| +properties | 1 |
| -properties | 1 |
```
This is because Memgraph currently doesn't give out the list of side effects
that happend on query execution.
that happend during query execution.

View File

@ -42,14 +42,14 @@ def wait_for_server(port, delay=0.01):
time.sleep(delay)
def generate_measurements(suite, result_path):
def generate_result_csv(suite, result_path):
if not os.path.exists(result_path):
return ""
with open(result_path) as f:
result = json.load(f)
ret = ""
for i in ["total", "passed"]:
ret += "{}.{} {}\n".format(suite, i, result[i])
ret += "{},{},{}\n".format(suite, i, result[i])
return ret
@ -61,17 +61,18 @@ def generate_status(suite, result_path, required):
total = result["total"]
passed = result["passed"]
ratio = passed / total
msg = "{} / {} //({:.2%})//".format(passed, total, ratio)
msg = "{} / {} ({:.2%})".format(passed, total, ratio)
if required:
if passed == total:
msg += " {icon check color=green}"
msg += " &#x1F44D;" # +1 emoji
else:
msg += " {icon times color=red}"
msg += " &#x26D4;" # no entry emoji
return (msg, passed, total)
def generate_remarkup(data):
ret = "==== Quality assurance status: ====\n\n"
def generate_result_html(data):
ret = "<!DOCTYPE html>\n"
ret += "<h1>Memgraph GQL Behave Tests Status</h1>\n"
ret += "<table>\n"
for row in data:
ret += " <tr>\n"
@ -147,8 +148,8 @@ def main():
memgraph.stop()
# Results storage
measurements = ""
status_data = [["Suite", "Scenarios"]]
result_csv = "suite,status,quantity\n"
status_data = [["Suite", "Status"]]
mandatory_fails = []
# Run suites
@ -160,7 +161,7 @@ def main():
suite["stats_file"] = os.path.join(output_dir.name,
suite["name"] + ".json")
cmd = [venv_python, "-u",
os.path.join(SCRIPT_DIR, "qa.py"),
os.path.join(SCRIPT_DIR, "run.py"),
"--stats-file", suite["stats_file"],
suite["test_suite"]]
@ -173,33 +174,32 @@ def main():
suite["must_pass"])
status_data.append([suite["name"], suite_status])
measurements += generate_measurements(suite["name"],
suite["stats_file"])
result_csv += generate_result_csv(suite["name"],
suite["stats_file"])
if suite["must_pass"] and suite_passed != suite_total:
mandatory_fails.append(suite["name"])
break
# Create status message
qa_status_message = generate_remarkup(status_data)
result_html = generate_result_html(status_data)
# Create the report file
qa_status_path = os.path.join(SCRIPT_DIR, "quality_assurance_status.txt")
with open(qa_status_path, "w") as f:
f.write(qa_status_message)
result_html_path = os.path.join(SCRIPT_DIR, "gql_behave_status.html")
with open(result_html_path, "w") as f:
f.write(result_html)
# Create the measurements file
measurements_path = os.path.join(SCRIPT_DIR, ".apollo_measurements")
with open(measurements_path, "w") as f:
f.write(measurements)
result_csv_path = os.path.join(SCRIPT_DIR, "gql_behave_status.csv")
with open(result_csv_path, "w") as f:
f.write(result_csv)
print("Status is generated in %s" % qa_status_path)
print("Measurements are generated in %s" % measurements_path)
print(f'CSV status is generated in {result_csv_path}')
print(f'HTML status is generated in {result_html_path}')
# Check if tests failed
if mandatory_fails != []:
sys.exit("Some tests that must pass have failed -- %s"
% str(mandatory_fails))
sys.exit(f'Some tests that must pass have failed: {mandatory_fails}')
if __name__ == "__main__":

View File

@ -4,7 +4,7 @@ import json
import logging
import sys
from steps.test_parameters import TestParameters
from neo4j.v1 import GraphDatabase, basic_auth
from neo4j import GraphDatabase, basic_auth
# Helper class and functions

View File

@ -0,0 +1,6 @@
behave==1.2.6
neo4j-driver==4.1.1
parse==1.18.0
parse-type==0.5.2
PyYAML==5.3.1
six==1.15.0

View File

@ -3,7 +3,7 @@
import database
import parser
from behave import given, then, step, when
from neo4j.v1.types import Node, Path, Relationship
from neo4j.graph import Node, Path, Relationship
@given('parameters are')
@ -34,7 +34,7 @@ def executing_query_step(context):
context.text, context, context.test_parameters.get_parameters())
def parse_props(prop_json):
def parse_props(props_key_value):
"""
Function used to parse properties from map of properties to string.
@ -43,21 +43,21 @@ def parse_props(prop_json):
@return:
Map of properties in string format.
"""
if not prop_json:
if not props_key_value:
return ""
properties = "{"
for prop in prop_json:
if prop_json[prop] is None:
properties += prop + ": null, "
elif isinstance(prop_json[prop], str):
properties += prop + ": " + "'" + prop_json[prop] + "', "
elif isinstance(prop_json[prop], bool):
if prop_json[prop]:
properties += prop + ": true, "
for key, value in props_key_value:
if value is None:
properties += key + ": null, "
elif isinstance(value, str):
properties += key + ": " + "'" + value + "', "
elif isinstance(value, bool):
if value:
properties += key + ": true, "
else:
properties += prop + ": false, "
properties += key + ": false, "
else:
properties += prop + ": " + str(prop_json[prop]) + ", "
properties += key + ": " + str(value) + ", "
properties = properties[:-2]
properties += "}"
return properties
@ -69,9 +69,8 @@ def to_string(element):
the string is same as format of a result given in cucumber test.
@param element:
Can be None, string, bool, number, list, dict or any of
neo4j.v1.types Node, Path, Relationship. Element which
will be parsed.
Can be None, string, bool, number, list, dict or any of neo4j.graph
Node, Path, Relationship. Element which will be parsed.
@return:
String of parsed element.
"""
@ -85,10 +84,10 @@ def to_string(element):
if element.labels:
sol += ':' + ': '.join(element.labels)
if element.properties:
if element.keys():
if element.labels:
sol += ' '
sol += parse_props(element.properties)
sol += parse_props(element.items())
sol += ")"
return sol
@ -98,9 +97,9 @@ def to_string(element):
sol = "[:"
if element.type:
sol += element.type
if element.properties:
if element.keys():
sol += ' '
sol += parse_props(element.properties)
sol += parse_props(element.items())
sol += "]"
return sol
@ -111,7 +110,7 @@ def to_string(element):
nodes = []
for rel in element.relationships:
edges.append([rel.start, to_string(rel)])
edges.append([rel.start_node.id, to_string(rel)])
for node in element.nodes:
nodes.append([node.id, to_string(node)])

View File

@ -0,0 +1,15 @@
- name: memgraph_V1
test_suite: memgraph_V1
must_pass: true
- name: openCypher_M09
test_suite: openCypher_M09
must_pass: false
- name: stackoverflow_answers
test_suite: stackoverflow_answers
must_pass: true
- name: unstable
test_suite: unstable
must_pass: false

7
tests/qa/.gitignore vendored
View File

@ -1,7 +0,0 @@
*.swo
*.swn
*.swp
*~
*.pyc
ve3/
quality_assurance_status.txt

View File

@ -1,6 +0,0 @@
behave==1.2.5
neo4j-driver==1.2.0
parse==1.8.0
parse-type==0.3.4
PyYAML==3.12
six==1.10.0

View File

@ -1,154 +0,0 @@
Feature: European Backpacking Index Example
Scenario: List the top 10 cheapest hotels in the dataset
Given graph "backpacking"
When executing query:
"""
MATCH (n:City)
RETURN n.name, n.cheapest_hostel, n.cost_per_night_USD, n.hostel_url
ORDER BY n.cost_per_night_USD LIMIT 10;
"""
Then the result should be:
| n.name | n.cheapest_hostel | n.cost_per_night_USD | n.hostel_url |
| 'Kiev' | 'ZigZag Hostel' | 5.7 | 'https://www.priceoftravel.com/AKievHostel' |
| 'Belgrade' | 'Hostel Inn Downtown' | 6.1628 | 'https://www.priceoftravel.com/ABelgradeHostel' |
| 'Saint Petersburg' | 'Plosaty Hostel' | 7.14 | 'https://www.priceoftravel.com/AStPetersburgHostel' |
| 'Santorini' | 'Youth Hostel Anna' | 7.44 | 'https://www.priceoftravel.com/ASantoriniHostel' |
| 'Istanbul' | 'Chambers of the Boheme' | 7.9075 | 'https://www.priceoftravel.com/AIstanbulHostel' |
| 'Riga' | 'Central Hostel Riga' | 8.06 | 'https://www.priceoftravel.com/ARigaHostel' |
| 'Krakow' | 'Pillows Party Hostel' | 8.236 | 'https://www.priceoftravel.com/AKrakowHostel' |
| 'Budapest' | 'Sziget City Hostel' | 8.936 | 'https://www.priceoftravel.com/ABudapestHostel' |
| 'Zagreb' | 'Hostel Temza' | 9.18 | 'https://www.priceoftravel.com/AZagrebHostel' |
| 'Bucharest' | 'Little Bucharest Bar & Hostel' | 9.315 | 'https://www.priceoftravel.com/ABucharestHostel' |
Scenario: List the cheapest hotels in Croatia sorted by total price
Given graph "backpacking"
When executing query:
"""
MATCH (c:City)-[:Inside]->(:Country {name: "Croatia"})
RETURN c.name, c.cheapest_hostel, c.total_USD
ORDER BY c.total_USD;
"""
Then the result should be:
| c.name | c.cheapest_hostel | c.total_USD |
| 'Zagreb' | 'Hostel Temza' | 38.08 |
| 'Split' | 'CroParadise Green Hostel' | 45.9799 |
| 'Dubrovnik' | 'Hostel City Central Old Town' | 80.036 |
Scenario: Sort the countries by number of cheap hotels
Given graph "backpacking"
When executing query:
"""
MATCH (n:Country)<-[:Inside]-(m:City)
RETURN n.name AS CountryName, COUNT(m) AS HostelCount
ORDER BY HostelCount DESC, CountryName LIMIT 10;
"""
Then the result should be:
| CountryName | HostelCount |
| 'Italy' | 5 |
| 'Spain' | 4 |
| 'Croatia' | 3 |
| 'Germany' | 3 |
| 'Austria' | 2 |
| 'Belgium' | 2 |
| 'Czech Republic' | 2 |
| 'France' | 2 |
| 'Greece' | 2 |
| 'Norway' | 2 |
Scenario: Shortest path from Spain to Russia (BFS)
Given graph "backpacking"
When executing query:
"""
MATCH p = (n:Country {name: "Spain"})
-[r:Borders * bfs]-
(m:Country {name: "Russia"})
UNWIND (nodes(p)) AS rows
RETURN rows.name;
"""
Then the result should be:
| rows.name |
| 'Spain' |
| 'France' |
| 'Germany' |
| 'Poland' |
| 'Russia' |
Scenario: Shortest path from Bratislava to Madrid with Euro as local currency
Given graph "backpacking"
When executing query:
"""
MATCH p = (:City {name: "Bratislava"})
-[:CloseTo * bfs (e, v | v.local_currency = "Euro")]-
(:City {name: "Madrid"})
UNWIND (nodes(p)) AS rows
RETURN rows.name;
"""
Then the result should be:
| rows.name |
| 'Bratislava' |
| 'Salzburg' |
| 'Milan' |
| 'Nice' |
| 'Madrid' |
Scenario: Cheapest trip from Brussels to Athens with no EU border crossings
Given graph "backpacking"
When executing query:
"""
MATCH p = (:City {name: "Brussels"})
-[:CloseTo * wShortest(e, v | v.cost_per_night_USD) total_cost (e, v | e.eu_border=FALSE)]-
(:City {name: "Athens"})
WITH extract(city in nodes(p) | city.name) AS trip, total_cost
RETURN trip, total_cost;
"""
Then the result should be:
| trip | total_cost |
| ['Brussels', 'Berlin', 'Salzburg', 'Budapest', 'Bucharest', 'Sofia', 'Athens'] | 97.5275 |
Scenario: Party trip from Madrid to Vienna, sightseeing to Belgrade
Given graph "backpacking"
When executing query:
"""
MATCH p = (:City {name: "Madrid"})
-[:CloseTo * wShortest(e, v | v.cost_per_night_USD + v.drinks_USD) cost1]-
(:City {name: "Vienna"})
-[:CloseTo * wShortest(e, v | v.cost_per_night_USD + v.attractions_USD) cost2]-
(:City {name: "Belgrade"})
WITH extract(city in nodes(p) | city.name) AS trip, cost1, cost2
RETURN trip, cost1 + cost2 AS total_cost;
"""
Then the result should be:
| trip | total_cost |
| ['Madrid', 'Nice', 'Naples', 'Vienna', 'Budapest', 'Belgrade'] | 143.918 |
Scenario: Top 10 cheapest routes from Paris to Zagreb sorted by total price and city count
Given graph "backpacking"
When executing query:
"""
MATCH path = (n:City {name: "Paris"})-[:CloseTo *3..5]-(m:City {name: "Zagreb"})
WITH nodes(path) AS trip
WITH extract(city in trip | [city, trip]) AS lst
UNWIND lst AS rows
WITH rows[0] AS city, extract(city in rows[1] | city.name) AS trip
RETURN trip,
toInteger(sum(city.total_USD)) AS trip_cost_USD,
count(trip) AS city_count
ORDER BY trip_cost_USD, city_count DESC LIMIT 10;
"""
Then the result should be:
| trip | trip_cost_USD | city_count |
| ['Paris', 'Naples', 'Ljubljana', 'Zagreb'] | 240 | 4 |
| ['Paris', 'Florence', 'Ljubljana', 'Zagreb'] | 255 | 4 |
| ['Paris', 'Rome', 'Ljubljana', 'Zagreb'] | 263 | 4 |
| ['Paris', 'Milan', 'Ljubljana', 'Zagreb'] | 266 | 4 |
| ['Paris', 'Naples', 'Ljubljana', 'Budapest', 'Zagreb'] | 275 | 5 |
| ['Paris', 'Hamburg', 'Krakow', 'Kiev', 'Budapest', 'Zagreb'] | 290 | 6 |
| ['Paris', 'Florence', 'Ljubljana', 'Budapest', 'Zagreb'] | 291 | 5 |
| ['Paris', 'Berlin', 'Krakow', 'Kiev', 'Budapest', 'Zagreb'] | 293 | 6 |
| ['Paris', 'Rome', 'Ljubljana', 'Budapest', 'Zagreb'] | 298 | 5 |
| ['Paris', 'Naples', 'Salzburg', 'Budapest', 'Zagreb'] | 298 | 5 |

View File

@ -1,463 +0,0 @@
CREATE (:City {id: 0, cheapest_hostel: "Flying Pig Downtown", hostel_url: "https://www.priceoftravel.com/AAmsterdamHostel", name: "Amsterdam", country: "Netherlands", local_currency: "Euro", local_currency_code: "EUR", rank: 52, total_USD: 106.764, attractions_USD: 19.84, cost_per_night_USD: 45.756, drinks_USD: 14.88, meals_USD: 19.344, transportation_USD: 6.944 });
CREATE (:City {id: 1, cheapest_hostel: "Zorbas Hostel", hostel_url: "https://www.priceoftravel.com/AAthensHostel", name: "Athens", country: "Greece", local_currency: "Euro", local_currency_code: "EUR", rank: 23, total_USD: 58.9, attractions_USD: 9.92, cost_per_night_USD: 12.4, drinks_USD: 9.3, meals_USD: 23.808, transportation_USD: 3.472 });
CREATE (:City {id: 2, cheapest_hostel: "Amistat Beach Hostel Barcelona", hostel_url: "https://www.priceoftravel.com/ABarcelonaHostel", name: "Barcelona", country: "Spain", local_currency: "Euro", local_currency_code: "EUR", rank: 38, total_USD: 80.104, attractions_USD: 16.12, cost_per_night_USD: 23.684, drinks_USD: 11.16, meals_USD: 23.808, transportation_USD: 5.332 });
CREATE (:City {id: 3, cheapest_hostel: "Hostel Inn Downtown", hostel_url: "https://www.priceoftravel.com/ABelgradeHostel", name: "Belgrade", country: "Serbia", local_currency: "Euro", local_currency_code: "EUR", rank: 3, total_USD: 29.2268, attractions_USD: 3.72, cost_per_night_USD: 6.1628, drinks_USD: 5.58, meals_USD: 11.904, transportation_USD: 1.86 });
CREATE (:City {id: 4, cheapest_hostel: "HI Bergen Hostel Montana", hostel_url: "https://www.priceoftravel.com/ABergenHostel", name: "Bergen", country: "Norway", local_currency: "Norwegian Kroner", local_currency_code: "NOK", rank: 46, total_USD: 97.071, attractions_USD: 7.8, cost_per_night_USD: 26.611, drinks_USD: 23.4, meals_USD: 31.2, transportation_USD: 8.06 });
CREATE (:City {id: 5, cheapest_hostel: "Eastener House", hostel_url: "https://www.priceoftravel.com/ABerlinHostel", name: "Berlin", country: "Germany", local_currency: "Euro", local_currency_code: "EUR", rank: 31, total_USD: 73.408, attractions_USD: 14.88, cost_per_night_USD: 19.84, drinks_USD: 11.16, meals_USD: 20.832, transportation_USD: 6.696 });
CREATE (:City {id: 6, cheapest_hostel: "Hostel Brickyard", hostel_url: "https://www.priceoftravel.com/ABratislavaHostel", name: "Bratislava", country: "Slovakia", local_currency: "Euro", local_currency_code: "EUR", rank: 14, total_USD: 43.772, attractions_USD: 4.96, cost_per_night_USD: 14.756, drinks_USD: 7.44, meals_USD: 14.88, transportation_USD: 1.736 });
CREATE (:City {id: 7, cheapest_hostel: "St. Christophers Inn & Bauhaus Hostel", hostel_url: "https://www.priceoftravel.com/ABrugesHostel", name: "Bruges", country: "Belgium", local_currency: "Euro", local_currency_code: "EUR", rank: 37, total_USD: 79.918, attractions_USD: 7.44, cost_per_night_USD: 30.938, drinks_USD: 13.02, meals_USD: 25.296, transportation_USD: 3.224 });
CREATE (:City {id: 8, cheapest_hostel: "Brxxl 5 City Centre Hostel", hostel_url: "https://www.priceoftravel.com/ABrusselsHostel", name: "Brussels", country: "Belgium", local_currency: "Euro", local_currency_code: "EUR", rank: 43, total_USD: 89.032, attractions_USD: 12.4, cost_per_night_USD: 29.76, drinks_USD: 14.88, meals_USD: 26.784, transportation_USD: 5.208 });
CREATE (:City {id: 9, cheapest_hostel: "Little Bucharest Bar & Hostel", hostel_url: "https://www.priceoftravel.com/ABucharestHostel", name: "Bucharest", country: "Romania", local_currency: "Romanian Leu", local_currency_code: "RON", rank: 4, total_USD: 30.267, attractions_USD: 3.24, cost_per_night_USD: 9.315, drinks_USD: 4.05, meals_USD: 12.312, transportation_USD: 1.35 });
CREATE (:City {id: 10, cheapest_hostel: "Sziget City Hostel", hostel_url: "https://www.priceoftravel.com/ABudapestHostel", name: "Budapest", country: "Hungary", local_currency: "Hungary Forint", local_currency_code: "HUF", rank: 6, total_USD: 35.616, attractions_USD: 7.2, cost_per_night_USD: 8.936, drinks_USD: 4.2, meals_USD: 12.48, transportation_USD: 2.8 });
CREATE (:City {id: 11, cheapest_hostel: "Sleep in Heaven", hostel_url: "https://www.priceoftravel.com/ACopenhagenHostel", name: "Copenhagen", country: "Denmark", local_currency: "Danish Kroner", local_currency_code: "DKK", rank: 49, total_USD: 99.2069, attractions_USD: 13.6, cost_per_night_USD: 28.4869, drinks_USD: 20.4, meals_USD: 28.56, transportation_USD: 8.16 });
CREATE (:City {id: 12, cheapest_hostel: "Egali Hostel", hostel_url: "https://www.priceoftravel.com/ADublinHostel", name: "Dublin", country: "Ireland", local_currency: "Euro", local_currency_code: "EUR", rank: 36, total_USD: 77.128, attractions_USD: 12.4, cost_per_night_USD: 18.6, drinks_USD: 18.6, meals_USD: 23.808, transportation_USD: 3.72 });
CREATE (:City {id: 13, cheapest_hostel: "Hostel City Central Old Town", hostel_url: "https://www.priceoftravel.com/ADubrovnikHostel", name: "Dubrovnik", country: "Croatia", local_currency: "Croatian Kuna", local_currency_code: "HRK", rank: 35, total_USD: 80.036, attractions_USD: 17, cost_per_night_USD: 20.4, drinks_USD: 15.3, meals_USD: 23.256, transportation_USD: 4.08 });
CREATE (:City {id: 14, cheapest_hostel: "High Street Hostel", hostel_url: "https://www.priceoftravel.com/AEdinburghHostel", name: "Edinburgh", country: "Scotland", local_currency: "British Pound", local_currency_code: "GBP", rank: 34, total_USD: 77.958, attractions_USD: 21.3, cost_per_night_USD: 17.182, drinks_USD: 12.78, meals_USD: 22.152, transportation_USD: 4.544 });
CREATE (:City {id: 15, cheapest_hostel: "Hostel Santa Monaca", hostel_url: "https://www.priceoftravel.com/AFlorenceHostel", name: "Florence", country: "Italy", local_currency: "Euro", local_currency_code: "EUR", rank: 33, total_USD: 74.896, attractions_USD: 14.88, cost_per_night_USD: 23.56, drinks_USD: 11.16, meals_USD: 22.32, transportation_USD: 2.976 });
CREATE (:City {id: 16, cheapest_hostel: "Instant Sleep Backpacker Hostel", hostel_url: "https://www.priceoftravel.com/AHamburgHostel", name: "Hamburg", country: "Germany", local_currency: "Euro", local_currency_code: "EUR", rank: 28, total_USD: 71.1264, attractions_USD: 12.4, cost_per_night_USD: 21.5264, drinks_USD: 11.16, meals_USD: 22.32, transportation_USD: 3.72 });
CREATE (:City {id: 17, cheapest_hostel: "CheapSleep Helsinki", hostel_url: "https://www.priceoftravel.com/AHelsinkiHostel", name: "Helsinki", country: "Finland", local_currency: "Euro", local_currency_code: "EUR", rank: 48, total_USD: 94.0912, attractions_USD: 8.68, cost_per_night_USD: 28.6192, drinks_USD: 22.32, meals_USD: 28.272, transportation_USD: 6.2 });
CREATE (:City {id: 18, cheapest_hostel: "Amistat Island Hostel Ibiza", hostel_url: "https://www.priceoftravel.com/AIbizaHostel", name: "Ibiza", country: "Spain", local_currency: "Euro", local_currency_code: "EUR", rank: 29, total_USD: 72.664, attractions_USD: 12.4, cost_per_night_USD: 23.56, drinks_USD: 11.16, meals_USD: 22.32, transportation_USD: 3.224 });
CREATE (:City {id: 19, cheapest_hostel: "Happy Inn Lodge", hostel_url: "https://www.priceoftravel.com/AInterlakenHostel", name: "Interlaken", country: "Switzerland", local_currency: "Swiss Franc", local_currency_code: "CHF", rank: 47, total_USD: 92.988, attractions_USD: 10.5, cost_per_night_USD: 26.418, drinks_USD: 15.75, meals_USD: 40.32, transportation_USD: 0 });
CREATE (:City {id: 20, cheapest_hostel: "Chambers of the Boheme", hostel_url: "https://www.priceoftravel.com/AIstanbulHostel", name: "Istanbul", country: "Turkey", local_currency: "Turkish Iira", local_currency_code: "TRY", rank: 10, total_USD: 34.5075, attractions_USD: 7.5, cost_per_night_USD: 7.9075, drinks_USD: 7.5, meals_USD: 9.6, transportation_USD: 2 });
CREATE (:City {id: 21, cheapest_hostel: "ZigZag Hostel", hostel_url: "https://www.priceoftravel.com/AKievHostel", name: "Kiev", country: "Ukraine", local_currency: "Ukraine Hryvnia", local_currency_code: "UHR", rank: 1, total_USD: 26.486, attractions_USD: 0.57, cost_per_night_USD: 5.7, drinks_USD: 3.42, meals_USD: 16.416, transportation_USD: 0.38 });
CREATE (:City {id: 22, cheapest_hostel: "Pillows Party Hostel", hostel_url: "https://www.priceoftravel.com/AKrakowHostel", name: "Krakow", country: "Poland", local_currency: "Polish Zlotych", local_currency_code: "PLN", rank: 2, total_USD: 28.42, attractions_USD: 4.64, cost_per_night_USD: 8.236, drinks_USD: 6.96, meals_USD: 6.96, transportation_USD: 1.624 });
CREATE (:City {id: 23, cheapest_hostel: "Urban Garden Hostel", hostel_url: "https://www.priceoftravel.com/ALisbonHostel", name: "Lisbon", country: "Portugal", local_currency: "Euro", local_currency_code: "EUR", rank: 25, total_USD: 61.3304, attractions_USD: 9.92, cost_per_night_USD: 15.9464, drinks_USD: 11.16, meals_USD: 20.832, transportation_USD: 3.472 });
CREATE (:City {id: 24, cheapest_hostel: "Hostel 24", hostel_url: "https://www.priceoftravel.com/ALjubljanaHostel", name: "Ljubljana", country: "Slovenia", local_currency: "Euro", local_currency_code: "EUR", rank: 18, total_USD: 51.4476, attractions_USD: 6.2, cost_per_night_USD: 14.7436, drinks_USD: 7.44, meals_USD: 20.088, transportation_USD: 2.976 });
CREATE (:City {id: 25, cheapest_hostel: "St. Christophers Hammersmith", hostel_url: "https://www.priceoftravel.com/ALondonHostel", name: "London", country: "England", local_currency: "British Pound", local_currency_code: "GBP", rank: 51, total_USD: 104.654, attractions_USD: 21.3, cost_per_night_USD: 29.678, drinks_USD: 17.04, meals_USD: 29.82, transportation_USD: 6.816 });
CREATE (:City {id: 26, cheapest_hostel: "Luxembourg City Hostel", hostel_url: "https://www.priceoftravel.com/ALuxembourgHostel", name: "Luxembourg City", country: "Luxembourg", local_currency: "Euro", local_currency_code: "EUR", rank: 40, total_USD: 81.158, attractions_USD: 7.44, cost_per_night_USD: 31.186, drinks_USD: 13.02, meals_USD: 24.552, transportation_USD: 4.96 });
CREATE (:City {id: 27, cheapest_hostel: "Barbieri Sol Hostel", hostel_url: "https://www.priceoftravel.com/AMadridHostel", name: "Madrid", country: "Spain", local_currency: "Euro", local_currency_code: "EUR", rank: 27, total_USD: 65.968, attractions_USD: 12.4, cost_per_night_USD: 18.6, drinks_USD: 7.44, meals_USD: 23.808, transportation_USD: 3.72 });
CREATE (:City {id: 28, cheapest_hostel: "Queen Hostel", hostel_url: "https://www.priceoftravel.com/AMilanHostel", name: "Milan", country: "Italy", local_currency: "Euro", local_currency_code: "EUR", rank: 44, total_USD: 85.436, attractions_USD: 12.4, cost_per_night_USD: 32.736, drinks_USD: 13.02, meals_USD: 22.32, transportation_USD: 4.96 });
CREATE (:City {id: 29, cheapest_hostel: "Vagabond Hostel", hostel_url: "https://www.priceoftravel.com/AMoscowHostel", name: "Moscow", country: "Russia", local_currency: "Russian Ruble", local_currency_code: "RUB", rank: 26, total_USD: 60.622, attractions_USD: 6.8, cost_per_night_USD: 12.75, drinks_USD: 15.3, meals_USD: 24.072, transportation_USD: 1.7 });
CREATE (:City {id: 30, cheapest_hostel: "Wombats City Hostel Munich", hostel_url: "https://www.priceoftravel.com/AMunichHostel", name: "Munich", country: "Germany", local_currency: "Euro", local_currency_code: "EUR", rank: 39, total_USD: 80.538, attractions_USD: 11.16, cost_per_night_USD: 27.466, drinks_USD: 11.16, meals_USD: 23.808, transportation_USD: 6.944 });
CREATE (:City {id: 31, cheapest_hostel: "Fabric Hostel & Club", hostel_url: "https://www.priceoftravel.com/ANaplesHostel", name: "Naples", country: "Italy", local_currency: "Euro", local_currency_code: "EUR", rank: 24, total_USD: 59.768, attractions_USD: 11.16, cost_per_night_USD: 18.6, drinks_USD: 7.44, meals_USD: 19.344, transportation_USD: 3.224 });
CREATE (:City {id: 32, cheapest_hostel: "Antares Hostel", hostel_url: "https://www.priceoftravel.com/ANiceHostel", name: "Nice", country: "France", local_currency: "Euro", local_currency_code: "EUR", rank: 30, total_USD: 73.284, attractions_USD: 9.92, cost_per_night_USD: 24.676, drinks_USD: 11.16, meals_USD: 23.808, transportation_USD: 3.72 });
CREATE (:City {id: 33, cheapest_hostel: "Saga Poshtel Oslo Central", hostel_url: "https://www.priceoftravel.com/AOsloHostel", name: "Oslo", country: "Norway", local_currency: "Norwegian Kroner", local_currency_code: "NOK", rank: 53, total_USD: 117.91, attractions_USD: 9.1, cost_per_night_USD: 51.87, drinks_USD: 19.5, meals_USD: 29.64, transportation_USD: 7.8 });
CREATE (:City {id: 34, cheapest_hostel: "Le Montclair by Hiphophostels", hostel_url: "https://www.priceoftravel.com/AParisHostel", name: "Paris", country: "France", local_currency: "Euro", local_currency_code: "EUR", rank: 45, total_USD: 91.0408, attractions_USD: 14.88, cost_per_night_USD: 31.5208, drinks_USD: 14.88, meals_USD: 25.296, transportation_USD: 4.464 });
CREATE (:City {id: 35, cheapest_hostel: "Czech Inn", hostel_url: "https://www.priceoftravel.com/APragueHostel", name: "Prague", country: "Czech Republic", local_currency: "Czech Krona", local_currency_code: "CZK", rank: 19, total_USD: 53.41, attractions_USD: 14.7, cost_per_night_USD: 12.985, drinks_USD: 5.145, meals_USD: 18.228, transportation_USD: 2.352 });
CREATE (:City {id: 36, cheapest_hostel: "Reykjavik Hostel Village", hostel_url: "https://www.priceoftravel.com/AReykjavikHostel", name: "Reykjavik", country: "Iceland", local_currency: "Iceland Kronur", local_currency_code: "ISK", rank: 54, total_USD: 113.86, attractions_USD: 15, cost_per_night_USD: 32.66, drinks_USD: 21, meals_USD: 37.2, transportation_USD: 8 });
CREATE (:City {id: 37, cheapest_hostel: "Central Hostel Riga", hostel_url: "https://www.priceoftravel.com/ARigaHostel", name: "Riga", country: "Latvia", local_currency: "Euro", local_currency_code: "EUR", rank: 9, total_USD: 36.952, attractions_USD: 3.72, cost_per_night_USD: 8.06, drinks_USD: 7.44, meals_USD: 14.88, transportation_USD: 2.852 });
CREATE (:City {id: 38, cheapest_hostel: "The Yellow", hostel_url: "https://www.priceoftravel.com/ARomeHostel", name: "Rome", country: "Italy", local_currency: "Euro", local_currency_code: "EUR", rank: 41, total_USD: 82.77, attractions_USD: 14.88, cost_per_night_USD: 29.202, drinks_USD: 11.16, meals_USD: 23.808, transportation_USD: 3.72 });
CREATE (:City {id: 39, cheapest_hostel: "Plosaty Hostel", hostel_url: "https://www.priceoftravel.com/AStPetersburgHostel", name: "Saint Petersburg", country: "Russia", local_currency: "Russian Ruble", local_currency_code: "RUB", rank: 17, total_USD: 46.682, attractions_USD: 6.8, cost_per_night_USD: 7.14, drinks_USD: 10.2, meals_USD: 21.012, transportation_USD: 1.53 });
CREATE (:City {id: 40, cheapest_hostel: "YoHo international Youth Hostel", hostel_url: "https://www.priceoftravel.com/ASalzburgHostel", name: "Salzburg", country: "Austria", local_currency: "Euro", local_currency_code: "EUR", rank: 32, total_USD: 74.152, attractions_USD: 12.4, cost_per_night_USD: 17.36, drinks_USD: 11.16, meals_USD: 26.784, transportation_USD: 6.448 });
CREATE (:City {id: 41, cheapest_hostel: "Youth Hostel Anna", hostel_url: "https://www.priceoftravel.com/ASantoriniHostel", name: "Santorini", country: "Greece", local_currency: "Euro", local_currency_code: "EUR", rank: 16, total_USD: 47.492, attractions_USD: 3.72, cost_per_night_USD: 7.44, drinks_USD: 13.02, meals_USD: 19.344, transportation_USD: 3.968 });
CREATE (:City {id: 42, cheapest_hostel: "Travellers Home Hostel", hostel_url: "https://www.priceoftravel.com/ASarajevoHostel", name: "Sarajevo", country: "Bosnia and Herzegovina", local_currency: "Euro", local_currency_code: "EUR", rank: 7, total_USD: 35.836, attractions_USD: 4.96, cost_per_night_USD: 9.858, drinks_USD: 4.65, meals_USD: 11.904, transportation_USD: 4.464 });
CREATE (:City {id: 43, cheapest_hostel: "Hostel Mostel", hostel_url: "https://www.priceoftravel.com/ASofiaHostel", name: "Sofia", country: "Bulgaria", local_currency: "Bulgarian Leva", local_currency_code: "BGN", rank: 5, total_USD: 33.4215, attractions_USD: 3.78, cost_per_night_USD: 12.3165, drinks_USD: 4.725, meals_USD: 10.584, transportation_USD: 2.016 });
CREATE (:City {id: 44, cheapest_hostel: "CroParadise Green Hostel", hostel_url: "https://www.priceoftravel.com/ASplitHostel", name: "Split", country: "Croatia", local_currency: "Croatian Kuna", local_currency_code: "HRK", rank: 15, total_USD: 45.9799, attractions_USD: 6.8, cost_per_night_USD: 11.8439, drinks_USD: 7.14, meals_USD: 17.136, transportation_USD: 3.06 });
CREATE (:City {id: 45, cheapest_hostel: "City Backpackers Hostel", hostel_url: "https://www.priceoftravel.com/AStockholmHostel", name: "Stockholm", country: "Sweden", local_currency: "Swedish Kronor", local_currency_code: "SEK", rank: 50, total_USD: 95.16, attractions_USD: 18, cost_per_night_USD: 24.6, drinks_USD: 18, meals_USD: 25.92, transportation_USD: 8.64 });
CREATE (:City {id: 46, cheapest_hostel: "Old Town Alur Hostel", hostel_url: "https://www.priceoftravel.com/ATallinnHostel", name: "Tallinn", country: "Estonia", local_currency: "Euro", local_currency_code: "EUR", rank: 20, total_USD: 52.576, attractions_USD: 7.44, cost_per_night_USD: 13.64, drinks_USD: 11.16, meals_USD: 17.856, transportation_USD: 2.48 });
CREATE (:City {id: 47, cheapest_hostel: "Los Amigos Backpackers Hostel", hostel_url: "https://www.priceoftravel.com/ATenerifeHostel", name: "Tenerife", country: "Spain", local_currency: "Euro", local_currency_code: "EUR", rank: 21, total_USD: 55.18, attractions_USD: 6.2, cost_per_night_USD: 18.476, drinks_USD: 9.3, meals_USD: 17.856, transportation_USD: 3.348 });
CREATE (:City {id: 48, cheapest_hostel: "Grannys Inn Hostel", hostel_url: "https://www.priceoftravel.com/AVallettaHostel", name: "Valletta", country: "Malta", local_currency: "Euro", local_currency_code: "EUR", rank: 22, total_USD: 53.196, attractions_USD: 7.44, cost_per_night_USD: 13.392, drinks_USD: 9.3, meals_USD: 19.344, transportation_USD: 3.72 });
CREATE (:City {id: 49, cheapest_hostel: "Generator Venice", hostel_url: "https://www.priceoftravel.com/AVeniceHostel", name: "Venice", country: "Italy", local_currency: "Euro", local_currency_code: "EUR", rank: 55, total_USD: 122.016, attractions_USD: 14.88, cost_per_night_USD: 50.84, drinks_USD: 14.88, meals_USD: 32.736, transportation_USD: 8.68 });
CREATE (:City {id: 50, cheapest_hostel: "Wombats City Hostel & at The Naschmarkt", hostel_url: "https://www.priceoftravel.com/AViennaHostel", name: "Vienna", country: "Austria", local_currency: "Euro", local_currency_code: "EUR", rank: 42, total_USD: 83.638, attractions_USD: 17.36, cost_per_night_USD: 22.506, drinks_USD: 13.02, meals_USD: 25.296, transportation_USD: 5.456 });
CREATE (:City {id: 51, cheapest_hostel: "Downtown Forest Hostel & Camping", hostel_url: "https://www.priceoftravel.com/AVilniusHostel", name: "Vilnius", country: "Lithuania", local_currency: "Euro", local_currency_code: "EUR", rank: 13, total_USD: 39.928, attractions_USD: 3.72, cost_per_night_USD: 9.92, drinks_USD: 7.44, meals_USD: 16.368, transportation_USD: 2.48 });
CREATE (:City {id: 52, cheapest_hostel: "Tatamka Hostel", hostel_url: "https://www.priceoftravel.com/AWarsawHostel", name: "Warsaw", country: "Poland", local_currency: "Polish Zlotych", local_currency_code: "PLN", rank: 11, total_USD: 38.6367, attractions_USD: 7.83, cost_per_night_USD: 10.3907, drinks_USD: 6.96, meals_USD: 11.484, transportation_USD: 1.972 });
CREATE (:City {id: 53, cheapest_hostel: "Hostel Temza", hostel_url: "https://www.priceoftravel.com/AZagrebHostel", name: "Zagreb", country: "Croatia", local_currency: "Croatian Kuna", local_currency_code: "HRK", rank: 8, total_USD: 38.08, attractions_USD: 5.1, cost_per_night_USD: 9.18, drinks_USD: 6.12, meals_USD: 14.28, transportation_USD: 3.4 });
CREATE (:City {id: 54, cheapest_hostel: "City Backpacker Hostel Biber", hostel_url: "https://www.priceoftravel.com/AZurichHostel", name: "Zurich", country: "Switzerland", local_currency: "Swiss Franc", local_currency_code: "CHF", rank: 56, total_USD: 123.123, attractions_USD: 15.75, cost_per_night_USD: 40.803, drinks_USD: 22.05, meals_USD: 39.06, transportation_USD: 5.46 });
CREATE (:City {id: 55, cheapest_hostel: "Hostel Merlin", hostel_url: "https://www.priceoftravel.com/AceskyKrumlovHostel", name: "Český Krumlov", country: "Czech Republic", local_currency: "Czech Krona", local_currency_code: "CZK", rank: 12, total_USD: 40.376, attractions_USD: 4.9, cost_per_night_USD: 14.602, drinks_USD: 4.41, meals_USD: 14.112, transportation_USD: 2.352 });
CREATE (:Country {id: 0, name: "Austria" });
CREATE (:Country {id: 1, name: "Belgium" });
CREATE (:Country {id: 2, name: "Bosnia and Herzegovina" });
CREATE (:Country {id: 3, name: "Bulgaria" });
CREATE (:Country {id: 4, name: "Croatia" });
CREATE (:Country {id: 5, name: "Czech Republic" });
CREATE (:Country {id: 6, name: "Denmark" });
CREATE (:Country {id: 7, name: "England" });
CREATE (:Country {id: 8, name: "Estonia" });
CREATE (:Country {id: 9, name: "Finland" });
CREATE (:Country {id: 10, name: "France" });
CREATE (:Country {id: 11, name: "Germany" });
CREATE (:Country {id: 12, name: "Greece" });
CREATE (:Country {id: 13, name: "Hungary" });
CREATE (:Country {id: 14, name: "Iceland" });
CREATE (:Country {id: 15, name: "Ireland" });
CREATE (:Country {id: 16, name: "Italy" });
CREATE (:Country {id: 17, name: "Latvia" });
CREATE (:Country {id: 18, name: "Lithuania" });
CREATE (:Country {id: 19, name: "Luxembourg" });
CREATE (:Country {id: 20, name: "Malta" });
CREATE (:Country {id: 21, name: "Netherlands" });
CREATE (:Country {id: 22, name: "Norway" });
CREATE (:Country {id: 23, name: "Poland" });
CREATE (:Country {id: 24, name: "Portugal" });
CREATE (:Country {id: 25, name: "Romania" });
CREATE (:Country {id: 26, name: "Russia" });
CREATE (:Country {id: 27, name: "Scotland" });
CREATE (:Country {id: 28, name: "Serbia" });
CREATE (:Country {id: 29, name: "Slovakia" });
CREATE (:Country {id: 30, name: "Slovenia" });
CREATE (:Country {id: 31, name: "Spain" });
CREATE (:Country {id: 32, name: "Sweden" });
CREATE (:Country {id: 33, name: "Switzerland" });
CREATE (:Country {id: 34, name: "Turkey" });
CREATE (:Country {id: 35, name: "Ukraine" });
MATCH (country1:Country {id: 11}) MATCH (country2:Country {id: 19}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 1}) MATCH (country2:Country {id: 10}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 1}) MATCH (country2:Country {id: 19}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 23}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 29}) MATCH (country2:Country {id: 35}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 11}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 7}) MATCH (country2:Country {id: 15}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 3}) MATCH (country2:Country {id: 25}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 24}) MATCH (country2:Country {id: 31}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 5}) MATCH (country2:Country {id: 11}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 13}) MATCH (country2:Country {id: 35}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 2}) MATCH (country2:Country {id: 4}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 10}) MATCH (country2:Country {id: 31}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 22}) MATCH (country2:Country {id: 32}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 5}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 11}) MATCH (country2:Country {id: 23}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 33}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 4}) MATCH (country2:Country {id: 30}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 10}) MATCH (country2:Country {id: 33}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 13}) MATCH (country2:Country {id: 30}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 10}) MATCH (country2:Country {id: 16}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 10}) MATCH (country2:Country {id: 11}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 12}) MATCH (country2:Country {id: 34}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 7}) MATCH (country2:Country {id: 31}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 22}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 6}) MATCH (country2:Country {id: 11}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 25}) MATCH (country2:Country {id: 35}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 8}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 18}) MATCH (country2:Country {id: 23}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 26}) MATCH (country2:Country {id: 35}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 9}) MATCH (country2:Country {id: 32}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 16}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 9}) MATCH (country2:Country {id: 22}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 3}) MATCH (country2:Country {id: 12}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 16}) MATCH (country2:Country {id: 30}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 7}) MATCH (country2:Country {id: 27}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 13}) MATCH (country2:Country {id: 29}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 17}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 4}) MATCH (country2:Country {id: 28}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 29}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 11}) MATCH (country2:Country {id: 21}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 16}) MATCH (country2:Country {id: 33}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 5}) MATCH (country2:Country {id: 23}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 2}) MATCH (country2:Country {id: 28}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 5}) MATCH (country2:Country {id: 29}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 1}) MATCH (country2:Country {id: 11}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 25}) MATCH (country2:Country {id: 28}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 3}) MATCH (country2:Country {id: 28}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 13}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 9}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 8}) MATCH (country2:Country {id: 17}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 13}) MATCH (country2:Country {id: 25}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 15}) MATCH (country2:Country {id: 27}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 3}) MATCH (country2:Country {id: 34}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 4}) MATCH (country2:Country {id: 13}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 23}) MATCH (country2:Country {id: 29}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 1}) MATCH (country2:Country {id: 21}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 18}) MATCH (country2:Country {id: 26}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 0}) MATCH (country2:Country {id: 30}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 23}) MATCH (country2:Country {id: 35}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 13}) MATCH (country2:Country {id: 28}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 17}) MATCH (country2:Country {id: 18}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (country1:Country {id: 11}) MATCH (country2:Country {id: 33}) CREATE (country1)-[:Borders {eu_border: True }]->(country2);
MATCH (country1:Country {id: 10}) MATCH (country2:Country {id: 19}) CREATE (country1)-[:Borders {eu_border: False }]->(country2);
MATCH (city:City {id: 21}) MATCH (country:Country {id: 35}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 22}) MATCH (country:Country {id: 23}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 3}) MATCH (country:Country {id: 28}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 9}) MATCH (country:Country {id: 25}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 43}) MATCH (country:Country {id: 3}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 10}) MATCH (country:Country {id: 13}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 42}) MATCH (country:Country {id: 2}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 53}) MATCH (country:Country {id: 4}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 37}) MATCH (country:Country {id: 17}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 20}) MATCH (country:Country {id: 34}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 52}) MATCH (country:Country {id: 23}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 55}) MATCH (country:Country {id: 5}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 51}) MATCH (country:Country {id: 18}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 6}) MATCH (country:Country {id: 29}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 44}) MATCH (country:Country {id: 4}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 41}) MATCH (country:Country {id: 12}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 39}) MATCH (country:Country {id: 26}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 24}) MATCH (country:Country {id: 30}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 35}) MATCH (country:Country {id: 5}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 46}) MATCH (country:Country {id: 8}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 47}) MATCH (country:Country {id: 31}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 48}) MATCH (country:Country {id: 20}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 1}) MATCH (country:Country {id: 12}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 31}) MATCH (country:Country {id: 16}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 23}) MATCH (country:Country {id: 24}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 29}) MATCH (country:Country {id: 26}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 27}) MATCH (country:Country {id: 31}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 16}) MATCH (country:Country {id: 11}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 18}) MATCH (country:Country {id: 31}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 32}) MATCH (country:Country {id: 10}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 5}) MATCH (country:Country {id: 11}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 40}) MATCH (country:Country {id: 0}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 15}) MATCH (country:Country {id: 16}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 14}) MATCH (country:Country {id: 27}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 13}) MATCH (country:Country {id: 4}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 12}) MATCH (country:Country {id: 15}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 7}) MATCH (country:Country {id: 1}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 2}) MATCH (country:Country {id: 31}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 30}) MATCH (country:Country {id: 11}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 26}) MATCH (country:Country {id: 19}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 38}) MATCH (country:Country {id: 16}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 50}) MATCH (country:Country {id: 0}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 8}) MATCH (country:Country {id: 1}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 28}) MATCH (country:Country {id: 16}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 34}) MATCH (country:Country {id: 10}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 4}) MATCH (country:Country {id: 22}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 19}) MATCH (country:Country {id: 33}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 17}) MATCH (country:Country {id: 9}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 11}) MATCH (country:Country {id: 6}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 45}) MATCH (country:Country {id: 32}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 25}) MATCH (country:Country {id: 7}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 0}) MATCH (country:Country {id: 21}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 33}) MATCH (country:Country {id: 22}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 36}) MATCH (country:Country {id: 14}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 49}) MATCH (country:Country {id: 16}) CREATE (city)-[:Inside]->(country);
MATCH (city:City {id: 54}) MATCH (country:Country {id: 33}) CREATE (city)-[:Inside]->(country);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 35}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 22}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 9}) MATCH (city2:City {id: 43}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 26}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 39}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 45}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 42}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 17}) MATCH (city2:City {id: 45}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 26}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 27}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 44}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 22}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 25}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 38}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 26}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 23}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 19}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 28}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 21}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 37}) MATCH (city2:City {id: 51}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 37}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 23}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 8}) MATCH (city2:City {id: 26}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 0}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 29}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 23}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 8}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 24}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 18}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 49}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 9}) MATCH (city2:City {id: 21}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 0}) MATCH (city2:City {id: 7}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 35}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 27}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 46}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 23}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 20}) MATCH (city2:City {id: 43}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 33}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 33}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 9}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 10}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 35}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 40}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 39}) MATCH (city2:City {id: 46}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 38}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 25}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 8}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 38}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 34}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 42}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 35}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 21}) MATCH (city2:City {id: 22}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 0}) MATCH (city2:City {id: 8}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 35}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 52}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 42}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 14}) MATCH (city2:City {id: 25}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 49}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 21}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 1}) MATCH (city2:City {id: 41}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 50}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 13}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 11}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 8}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 40}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 43}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 28}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 19}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 22}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 0}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 17}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 34}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 35}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 34}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 37}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 12}) MATCH (city2:City {id: 25}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 8}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 24}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 19}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 0}) MATCH (city2:City {id: 5}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 35}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 3}) MATCH (city2:City {id: 13}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 38}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 44}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 27}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 20}) MATCH (city2:City {id: 41}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 40}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 28}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 27}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 28}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 51}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 39}) MATCH (city2:City {id: 51}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 25}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 18}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 21}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 26}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 51}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 7}) MATCH (city2:City {id: 26}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 35}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 30}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 33}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 12}) MATCH (city2:City {id: 14}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 21}) MATCH (city2:City {id: 29}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 29}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 1}) MATCH (city2:City {id: 43}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 17}) MATCH (city2:City {id: 29}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 33}) MATCH (city2:City {id: 45}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 50}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 40}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 10}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 11}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 38}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 35}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 34}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 8}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 1}) MATCH (city2:City {id: 20}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 11}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 41}) MATCH (city2:City {id: 43}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 22}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 42}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 17}) MATCH (city2:City {id: 33}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 10}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 8}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 50}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 30}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 34}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 1}) MATCH (city2:City {id: 41}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 24}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 9}) MATCH (city2:City {id: 10}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 7}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 27}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 44}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 16}) MATCH (city2:City {id: 52}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 31}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 40}) MATCH (city2:City {id: 55}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 26}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 33}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 13}) MATCH (city2:City {id: 53}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 2}) MATCH (city2:City {id: 47}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 19}) MATCH (city2:City {id: 54}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 4}) MATCH (city2:City {id: 17}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 28}) MATCH (city2:City {id: 49}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 24}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 37}) MATCH (city2:City {id: 46}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 21}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 5}) MATCH (city2:City {id: 16}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 31}) MATCH (city2:City {id: 32}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 15}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 39}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 18}) MATCH (city2:City {id: 25}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 29}) MATCH (city2:City {id: 51}) CREATE (city1)-[:CloseTo {eu_border: True }]->(city2);
MATCH (city1:City {id: 6}) MATCH (city2:City {id: 40}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);
MATCH (city1:City {id: 32}) MATCH (city2:City {id: 38}) CREATE (city1)-[:CloseTo {eu_border: False }]->(city2);

View File

@ -1,7 +0,0 @@
- name: memgraph_V1
test_suite: memgraph_V1
must_pass: true
- name: openCypher_M09
test_suite: openCypher_M09
must_pass: false

Some files were not shown because too many files have changed in this diff Show More