From 3443b15bda45de7ac72d593edef18bd76005b5c6 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Thu, 25 Jun 2020 11:05:02 +0200 Subject: [PATCH] Migrate to Gradle --- .editorconfig | 9 + .gitignore | 12 + adoc/browser.adoc | 5 - adoc/restaurant_recommendation.adoc | 122 ----- build.gradle | 74 +++ docs/adoc-guides.adoc | 0 docs/html-guides.adoc | 140 ------ docs/index.adoc | 0 docs/remote.html | 143 ------ {adoc => examples}/query-template.adoc | 0 {adoc => examples}/template-table.adoc | 0 gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58702 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 ++++++++ gradlew.bat | 100 ++++ guide-extension/.gitignore | 11 - guide-extension/guides_in_neo_demo.jpg | Bin 147162 -> 0 bytes guide-extension/pom.xml | 143 ------ guide-extension/readme.adoc | 60 --- .../java/extension/web/StaticWebResource.java | 96 ---- .../extension/web/StaticWebResourceTest.java | 49 -- html/browser.html | 432 ------------------ html/restaurant_recommendation.html | 193 -------- html/restaurant_recommendation.txt.html | 163 ------- http-server.py | 23 - http.rb | 16 - http.sh | 3 - readme.adoc | 38 +- restaurant-recommendation/docs/01.adoc | 49 ++ restaurant-recommendation/docs/02.adoc | 30 ++ restaurant-recommendation/docs/index.adoc | 27 ++ .../images}/sushi_restaurants_nyc.png | Bin .../images}/sushi_restaurants_nyc.svg | 0 run.sh | 36 -- settings.gradle | 5 + templates/block_admonition.html.erb | 6 +- templates/block_audio.html.erb | 0 templates/block_colist.html.erb | 0 templates/block_dlist.html.erb | 0 templates/block_example.html.erb | 0 templates/block_floating_title.html.erb | 0 templates/block_image.html.erb | 0 templates/block_listing.html.erb | 0 templates/block_literal.html.erb | 0 templates/block_math.html.erb | 0 templates/block_olist.html.erb | 0 templates/block_open.html.erb | 0 templates/block_page_break.html.erb | 0 templates/block_paragraph.html.erb | 0 templates/block_pass.html.erb | 0 templates/block_preamble.html.erb | 0 templates/block_quote.html.erb | 0 templates/block_ruler.html.erb | 0 templates/block_sidebar.html.erb | 0 templates/block_table.html.erb | 0 templates/block_toc.html.erb | 0 templates/block_ulist.html.erb | 0 templates/block_verse.html.erb | 0 templates/block_video.html.erb | 0 templates/document.html.erb | 0 templates/embedded.html.erb | 0 templates/inline_anchor.html.erb | 0 templates/inline_break.html.erb | 0 templates/inline_button.html.erb | 0 templates/inline_callout.html.erb | 0 templates/inline_footnote.html.erb | 0 templates/inline_image.html.erb | 0 templates/inline_indexterm.html.erb | 0 templates/inline_kbd.html.erb | 0 templates/inline_menu.html.erb | 0 templates/inline_quoted.html.erb | 0 templates/section.html.erb | 3 +- 72 files changed, 518 insertions(+), 1658 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitignore delete mode 100644 adoc/browser.adoc delete mode 100644 adoc/restaurant_recommendation.adoc create mode 100644 build.gradle delete mode 100644 docs/adoc-guides.adoc delete mode 100644 docs/html-guides.adoc delete mode 100644 docs/index.adoc delete mode 100644 docs/remote.html rename {adoc => examples}/query-template.adoc (100%) rename {adoc => examples}/template-table.adoc (100%) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat delete mode 100644 guide-extension/.gitignore delete mode 100644 guide-extension/guides_in_neo_demo.jpg delete mode 100644 guide-extension/pom.xml delete mode 100644 guide-extension/readme.adoc delete mode 100644 guide-extension/src/main/java/extension/web/StaticWebResource.java delete mode 100644 guide-extension/src/test/java/extension/web/StaticWebResourceTest.java delete mode 100644 html/browser.html delete mode 100644 html/restaurant_recommendation.html delete mode 100644 html/restaurant_recommendation.txt.html delete mode 100755 http-server.py delete mode 100644 http.rb delete mode 100644 http.sh create mode 100644 restaurant-recommendation/docs/01.adoc create mode 100644 restaurant-recommendation/docs/02.adoc create mode 100644 restaurant-recommendation/docs/index.adoc rename {img => restaurant-recommendation/images}/sushi_restaurants_nyc.png (100%) rename {img => restaurant-recommendation/images}/sushi_restaurants_nyc.svg (100%) delete mode 100755 run.sh create mode 100644 settings.gradle mode change 100644 => 100755 templates/block_admonition.html.erb mode change 100644 => 100755 templates/block_audio.html.erb mode change 100644 => 100755 templates/block_colist.html.erb mode change 100644 => 100755 templates/block_dlist.html.erb mode change 100644 => 100755 templates/block_example.html.erb mode change 100644 => 100755 templates/block_floating_title.html.erb mode change 100644 => 100755 templates/block_image.html.erb mode change 100644 => 100755 templates/block_listing.html.erb mode change 100644 => 100755 templates/block_literal.html.erb mode change 100644 => 100755 templates/block_math.html.erb mode change 100644 => 100755 templates/block_olist.html.erb mode change 100644 => 100755 templates/block_open.html.erb mode change 100644 => 100755 templates/block_page_break.html.erb mode change 100644 => 100755 templates/block_paragraph.html.erb mode change 100644 => 100755 templates/block_pass.html.erb mode change 100644 => 100755 templates/block_preamble.html.erb mode change 100644 => 100755 templates/block_quote.html.erb mode change 100644 => 100755 templates/block_ruler.html.erb mode change 100644 => 100755 templates/block_sidebar.html.erb mode change 100644 => 100755 templates/block_table.html.erb mode change 100644 => 100755 templates/block_toc.html.erb mode change 100644 => 100755 templates/block_ulist.html.erb mode change 100644 => 100755 templates/block_verse.html.erb mode change 100644 => 100755 templates/block_video.html.erb mode change 100644 => 100755 templates/document.html.erb mode change 100644 => 100755 templates/embedded.html.erb mode change 100644 => 100755 templates/inline_anchor.html.erb mode change 100644 => 100755 templates/inline_break.html.erb mode change 100644 => 100755 templates/inline_button.html.erb mode change 100644 => 100755 templates/inline_callout.html.erb mode change 100644 => 100755 templates/inline_footnote.html.erb mode change 100644 => 100755 templates/inline_image.html.erb mode change 100644 => 100755 templates/inline_indexterm.html.erb mode change 100644 => 100755 templates/inline_kbd.html.erb mode change 100644 => 100755 templates/inline_menu.html.erb mode change 100644 => 100755 templates/inline_quoted.html.erb mode change 100644 => 100755 templates/section.html.erb diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7b1cff6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +# EditorConfig is awesome: https://EditorConfig.org +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9eacff7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build/ + +/node_modules/ + +.DS_Store + +/.idea/ +*.iml diff --git a/adoc/browser.adoc b/adoc/browser.adoc deleted file mode 100644 index 2cb52bf..0000000 --- a/adoc/browser.adoc +++ /dev/null @@ -1,5 +0,0 @@ -:experimental: - -== Get Started - -include::../../developer-resources/get-started/guide-neo4j-browser/guide-neo4j-browser.adoc[tags=guide] \ No newline at end of file diff --git a/adoc/restaurant_recommendation.adoc b/adoc/restaurant_recommendation.adoc deleted file mode 100644 index 48e9a33..0000000 --- a/adoc/restaurant_recommendation.adoc +++ /dev/null @@ -1,122 +0,0 @@ -== Restaurant Recommendations -:author: Neo Technology -:twitter: neo4j -:tags: Recommendation, Graph Based Search -:neo4j-version: 3.0 - -=== Introduction - -image::https://guides.neo4j.com/sushi_restaurants_nyc.svg[height=300,float=right] - -We want to demonstrate how easy it is to model a domain as a graph and answer questions in almost natural language. - -Graph Based Search and Discovery is prominent a use-case for graph databases like http://neo4j.com[Neo4j]. - -Here we use a Domain of restaurants which serve cuisines and are located in a City. - -The domain diagram was created with the http://www.apcjones.com/arrows/#[Arrows tool] - -//// - -//// - -=== Setup: Creating Friends, Restaurants in Cities and their Cusines - -//setup -[source,cypher] ----- -CREATE (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]->(emil:Person {name:"Emil"}), - (philip)-[:IS_FRIEND_OF]->(michael:Person {name:"Michael"}), - (philip)-[:IS_FRIEND_OF]->(andreas:Person {name:"Andreas"}) -CREATE (sushi:Cuisine {name:"Sushi"}), (nyc:City {name:"New York"}), - (iSushi:Restaurant {name:"iSushi"})-[:SERVES]->(sushi),(iSushi)-[:LOCATED_IN]->(nyc), - (michael)-[:LIKES]->(iSushi), - (andreas)-[:LIKES]->(iSushi), - (zam:Restaurant {name:"Zushi Zam"})-[:SERVES]->(sushi),(zam)-[:LOCATED_IN]->(nyc), - (andreas)-[:LIKES]->(zam) ----- - -//graph - -=== Philips Friends - -[source,cypher] ----- -MATCH (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]-(person) -RETURn person.name ----- - -//table - -=== Restaurants in NYC and their cusines - -[source,cypher] ----- -MATCH (nyc:City {name:"New York"})<-[:LOCATED_IN]-(restaurant)-[:SERVES]->(cusine) -RETURN nyc, restaurant, cusine ----- - -//table - -//graph_result - -=== Graph Search Recommendation - -image::https://guides.neo4j.com/sushi_restaurants_nyc.png[height=300,float=right] - -We want to answer the following question - -"" -Find Sushi Restaurants in New York that my friends like. -"" - -To satisfy this question, we have to know who's asking: _Philip_ and he's asking for 4 connected facts - -* _People_ that are friends of _Philip_ -* _Restaurants_ located in _New York_ -* _Restaurants_ that server _Sushi_ -* _Restaurants_ that his _Friends_ like - -[source,cypher] ----- -MATCH (philip:Person {name:"Philip"}), - (philip)-[:IS_FRIEND_OF]-(friend), - (restaurant:Restaurant)-[:LOCATED_IN]->(:City {name:"New York"}), - (restaurant)-[:SERVES]->(:Cuisine {name:"Sushi"}), - (friend)-[:LIKES]->(restaurant) -RETURN restaurant.name, collect(friend.name) AS likers, count(*) AS occurence -ORDER BY occurence DESC ----- - -//table \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ccab100 --- /dev/null +++ b/build.gradle @@ -0,0 +1,74 @@ +import org.asciidoctor.gradle.jvm.AsciidoctorTask +import org.kordamp.gradle.livereload.LiveReloadTask + +plugins { + id 'org.asciidoctor.jvm.gems' version '3.1.0' apply false + id 'org.asciidoctor.jvm.convert' version '3.1.0' apply false + id 'org.kordamp.gradle.livereload' version '0.2.1' apply false +} + +subprojects { + + apply plugin: 'org.asciidoctor.jvm.gems' + + dependencies { + asciidoctorGems 'rubygems:rouge:3.18.0' + } + + repositories { + mavenCentral() + jcenter() + ruby { + gems() + } + } + + asciidoctorj { + gemPaths "${rootProject.buildDir}/.asciidoctorGems" + attributes 'allow-uri-read': '', + 'source-highlighter': 'rouge', + 'rouge-style': 'neo.forest', + 'presenter': 'Neo Technology', + 'twitter': 'neo4j', + 'email': 'info@neotechnology.com', + 'currentyear': '2020', + 'experimental': '' + } + + asciidoctorGemsPrepare.with { + outputDir = "${rootProject.buildDir}/.asciidoctorGems" + } + + task convert(type: AsciidoctorTask) { + dependsOn asciidoctorGemsPrepare + + inputs.dir "${rootProject.projectDir}/templates" + + asciidoctorj { + options template_dirs: ["${rootProject.projectDir}/templates"] + attributes 'imagesdir': "http://localhost:35729/browser-guide/images", + 'allow-uri-read': '', + 'guides': "http://localhost:35729/browser-guide", + 'icons': 'font', + 'leveloffset': '+1', + 'env-guide': '', + 'guide': '', + 'sectanchors': '' + } + + resources { + from("${projectDir}/images") { + include '**' + into 'images' + } + } + + baseDir file("${projectDir}/docs") + sourceDir file("${projectDir}/docs") + outputDir file("${projectDir}/build/browser-guide") + } + + task httpServer(type: LiveReloadTask) { + docRoot "${projectDir}/build" + } +} diff --git a/docs/adoc-guides.adoc b/docs/adoc-guides.adoc deleted file mode 100644 index e69de29..0000000 diff --git a/docs/html-guides.adoc b/docs/html-guides.adoc deleted file mode 100644 index c117a5c..0000000 --- a/docs/html-guides.adoc +++ /dev/null @@ -1,140 +0,0 @@ -= Creating remote browser guides in HTML -== Setting up a remote server -The remote server serving these guides must be open to handle requests from all origins. This is done by setting it's `Access-Control-Allow-Origin` header to allow `*`. Read more here: http://enable-cors.org/server.html - -== Configure Neo4j -Enterprise edition of Neo4j can have configurated whitelist of allowed hostnames to fetch guides from. Community edition have a static whitelist. -The whitelist is in _neo4j-server.properties_. Set to `*` to allow from all hosts. - -== Create a guide -Howto create a guide. - -=== Basic HTML structure -A browser guide is a partial HTML document that sould be encapsulated in `
` tags. - -A guide usually have multiple slides/pages by using a carousel: - -[source,html] ----- - - Slide 1 - Slide 2 - ----- - -The Bootstrap CSS classes can be used, see http://getbootstrap.com/css/ for info on what's available. - -A slide is usually split into two columns with title and lead to the left and content to the right. -To get this structure, use this code: - -[source,html] ----- -
-

Title

-

Informative text

-
-
- content... -
----- - -All HTML is allowed so make sure the guides structure is valid and complete so other parts of the browser don't break. -All ` - - -
-

REMOTE Cypher

-

Neo4j's graph query language

-
-
-

Neo4j's Cypher language is purpose built for working with graph data.

-
    -
  • uses patterns to describe graph data
  • -
  • familiar SQL-like clauses
  • -
  • declarative, describing what to find, not how to find it
  • -
  • declarative, describing what to find, not how to find it 2
  • -
  • declarative, describing what to find, not how to find it 2
  • -
-
-
- -
-

CREATE

-

Create a node

-
-
-

Let's use Cypher to generate a small social graph.

-
-
CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
-
-
    -
  • CREATE clause to create data
  • -
  • () parenthesis to indicate a node
  • -
  • ee:Person a variable 'ee' and label 'Person' for the new node
  • -
  • {} brackets to add properties to the node
  • -
-
-
- -
-

MATCH

-

Finding nodes

-
-
-

Now find the node representing Emil:

-
-
MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
-
-
    -
  • MATCH clause to specify a pattern of nodes and relationships
  • -
  • (ee:Person) a single node pattern with label 'Person' which will assign matches to the variable 'ee'
  • -
  • WHERE clause to constrain the results
  • -
  • ee.name = "Emil" compares name property to the value "Emil"
  • -
  • RETURN clause used to request particular results
  • -
-
-
- -
-

CREATE more

-

Nodes and relationships

-
-
-

CREATEclauses can create many nodes and relationships at once.

-
-
MATCH (ee:Person) WHERE ee.name = "Emil"
-CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
-(ir:Person { name: "Ian", from: "England", title: "author" }),
-(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
-(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
-(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
-(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
-(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
-(rvb)-[:KNOWS]->(ally)
-
-
-
- -
-

Pattern matching

-

Describe what to find in the graph

-
-
-

For instance, a pattern can be used to find Emil's friends:

-
-
MATCH (ee:Person)-[:KNOWS]-(friends)
-WHERE ee.name = "Emil" RETURN ee, friends
-
-
    -
  • MATCHclause to describe the pattern from known Nodes to found Nodes
  • -
  • (ee)starts the pattern with a Person (qualified by WHERE)
  • -
  • -[:KNOWS]-matches "KNOWS" relationships (in either direction)
  • -
  • (friends)will be bound to Emil's friends
  • -
-
-
- -
-

Recommend

-

Using patterns

-
-
-

- Pattern matching can be used to make recommendations. Johan is learning to surf, so he may want to find - a new friend who already does: -

-
-
MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
-WHERE js.name = "Johan" AND surfer.hobby = "surfing"
-RETURN DISTINCT surfer
-
-
    -
  • ()empty parenthesis to ignore these nodes
  • -
  • DISTINCTbecause more than one path will match the pattern
  • -
  • surferwill contain Allison, a friend of a friend who surfs
  • -
-
-
- -
-

Next steps

-

- Start your application using Cypher to create and query graph data. Use the REST API - to monitor the database. In special cases, consider a plugin. -

-
-
-

Keep getting started

- -
-
-

Jump into code

- -
-
-
- \ No newline at end of file diff --git a/adoc/query-template.adoc b/examples/query-template.adoc similarity index 100% rename from adoc/query-template.adoc rename to examples/query-template.adoc diff --git a/adoc/template-table.adoc b/examples/template-table.adoc similarity index 100% rename from adoc/template-table.adoc rename to examples/template-table.adoc diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b GIT binary patch literal 58702 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

@up^y4&I8N>~wvL%f(S2W%NN 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 D613UA literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..9492014 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..2fe81a7 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9618d8d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/guide-extension/.gitignore b/guide-extension/.gitignore deleted file mode 100644 index 775e11c..0000000 --- a/guide-extension/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -neo4j-home -.idea -.DS_Store -*.ipr -*.iws -*.iml -*.zip -target -*.log -tmp - diff --git a/guide-extension/guides_in_neo_demo.jpg b/guide-extension/guides_in_neo_demo.jpg deleted file mode 100644 index 2e6a0e3668a1811e554196300c5383201a3c5c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147162 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

xLBGsOj4bTAr*$vAiU- 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
x(5iCCQ&*nZ-N zU0uPE(a84jTGfLEREAM9kZ0(Dof|f|HCqO07kLJ%e&w28obG;u*GP0-dfgbUL{SEs zQrm^Ek#mY1*7@dRm8a^FszA>z)LODWOgv*wbM-pY0LdV$QCSXofl?bd0CH?Rey*|x z7Z$3@8_YZ0%;TnrOBekHmGVz~?cm<)tQ4N2;7h(7DIhL?{)O^PoSp#l683H$X9NQ6 z-PtWCk=f18c*PRa5MPyk{+Xa}18ZT~#Xd zgc`!*dlLKn@*jQ~e0Si#&GusM_|-4Ffu%xBGSR_%VJKyeyOFH+9?nN3CCDBmPn6sp z@u+P(5+k)do>Fyq6ZyJ64f>@6VEqgF9Oq0GO)p6$~4PS7mo{lz|0Gi4G`YYmp48TPY%R1R5_C#?cp@fb&MC= zMFahuJ{MXify5sa3nHS!L7A+M1H4W)S}Z3g;F1qWwhvx2ugkVh4}?!#&ryBDlq<^A z$6xwLRVS$T98EjGT5{k8oE*&K4h2+iGQ&E9)f~>ZwR{YVY45^9t!EgfPo=oTl)85_ zAzQ&#rEn{h>{G*|P$ zZzTZ-eNs8PY9zRS{4*F6oFL6oRPY~9ZAN_6CQQA^! zgsw1emFfPFAi;grVur?6qhYSc#@8{;Z)FR zvoDG>-GlE4F;}Y!Fa1gYf29TguLaSjPm?D|%>a4^kA!qjdlce1LXO)#k+ZfA%FSmbmS8xvwv8acA(T$Gofv4bdP29PN!eLw%mIgv$BF*$JD1` zp^$0GjzV6vV5kr)%i5fvkE)Gwt4)c1Q{I>6JhL?(OK+5%@vSJGS6>+<7v-nklWivq z$G6&Um&~nkPrsiQB)#Ua6G!J(Ku>xXH|@DtWhnCd8oS)JIq`~S_s7=**2%Qa3goK) z+TmE!uuApTIeT3a)?(x?Z(!@?NToiXkP|m7kz;x4XO+}XM%|^m3jw;i`n36{*3z*> z`Ur`_MRkg0QbG+!DXGvMXm6C_GUnDCzR5CvCisRqC(g;rBxns@rI_sv>yS=?SKF|-i-VuH1;f&3IYvf%7+y&Ah5IJ?vkI{=!Dc!!nr$*Z3SV5m^=$wyS1N< z@jtmVfkzB}`0$Fy=?ja6tz!Bgbm*+AZK-o=d^bv5E4}hS##<^gT9!{Iu3Ic5Vb@-p z`@YDs=d;GP^fpgg!{1vKa*@l4u#duQa{E4fpUv3~%e(w`!u*jiX5@_;yR*rSgsnue zT~`^)<}emory$Vh$}rDH;8A)HU$%z`%SvnEv@pJ* z8lckgp;80;gX?Pm-Th~Vqpwr8*RscJo}C88m)v!_!ZMI%`;rtvZuKO%;sqRJN0s*w zw6=3o#!G`f^3JJ;w6p`Bfv=Of6`#DA7o2o^&2Ap)=*)ymV`};sdreU zccfOsR_3VEd98STJA8LH_f`pXM48{rzv9Jn83*3d5yq z%wO`Vi$o``f%OO@pDd`u;ni3~1GadTbU63gljA#psW0_&G-YBF76JE!TBi9edHQQ@ zU@5|QGnbw1xU$P0av?2qejoc|Ya0 z=_uH<6vmZNpZ8pUbEm;7CZ?LalyIwk`Uh-Ay}XXmjq0Zt`RL@`=`-W00}fI%s8zU13`4pX+Kswr|9 zSXju98R$^C7=2Jywskh_p>A!hDUa6_kAlbvFR~TMd$=tCKYOG9Qu|4$W znCxZ){jS9uF6ynxUl3S^*^+RU?y14ukA8u&5N|EotK^!up*#8`4W|9jLe_OYz_8)n z%cJ3m>>Y+_vF1Qp5PIhl$bup%Ht_<^LQcV@#i2!-#=wTh&9v>POy3aPvDJ~(;nXf8 z=d+T^k{D2B;73udi?oAqciey)c21)CTOjkTdAo)bOhA}d#{1jdmev~YKi4w3RnWO9 zefSAZi9EoWC(qNNFHuMGc6#K~^6s#$)>=C{AY4_C(i-Lr-8mbOExidm-plFm?q}~V z`E@QhO?(RYrF&g(Wadr8qE_9=^dqg8IQdU~Xi=McRLQXeO&`{)Uqu^X$GSN8SBB!7 zZ}_cU8yl?(ygmG8EU%t<_vH(ScVC#1I-n7ZI&Q`@8+O}jrN!*O+=$eW_30YTM&(#p zX_xLfLU0jmxIX3hgf@Cr)7NbOlR23bwflE-ePx zBWVp@N8{q1f>ZUw^P)O!2VYjKH&PXWFH{NC+d%>--&&NvvcK}uB7-wq_|k>sniLc+ zx8}o%fi9c2`Kmyo0z;n+yt0=ry(Slz%r=66JTZZFoI-q5JCy8v z>6<{6OfnjWvk9d4v13CtpvLsCIZK8v#d2}zPPtoN*Y;aFS*5q|6I;#n2>@yUiJAtU zqVWa7U|x1hXy~M&_;yWb;E`#`xgz+7cYO+mxAe~SejaVH+LFXgp(TL!2G+#-OWT3+ z2@vm8((v4Y&-T`09#L-5OOEN*`OqnKmX`v4{_|O67}4s}oZv{C|ALmSW^bDozFph; z{29FWRuxh%YO3r@7rdQ%=TT`>_rg+i>ctZ~9hfOAyjr&~^SXl!;km_kTU(nUjj&r? zmye72<8fRg(H9!(G}ND)USxaGy4cG7QGU+(#BF^)R@+Xp)zMvwK3N~vZrU-&7P{plfB#1e*F}6nHXatg z!p))4X*Oc;*2Q{70wS{o3TVMZYb&o(xd=ZxnQxgQB<+drIV8*ayU$8h?~-!%Wb!g) zOkn`ckU*`0Lm{iZ{76%kA4rk!-Yka1H>o!Dbu^;<)YIRX(Ut-@F7fP zWUX0eXX;j?@egBS^||K(`sDzFfA{3A&U};mBY#_LIX_9bLcRLyP&A^kF@{ix6=DN8 z<74`$MjxI{hJ<@I@cy6ZQS$W8}P1_pB>sR4=06-LJs{eKQa#H^h)LbnffzE^H zI{JEn?&pu6*;1`g@^7Ms8lO=#KM*HU!RBwsVFw!#FY|?lw>41(Bxx(JJS&CHKG?Yo zxn76cN8NoO7T8#nFm*hNkC2*%8)9=LN5O`8$?_)6!-25hAQWBguEf#R=&CI`Xlcf` z2X59Bl!b`%iql)sr)i5J*y?j|m9G>~9L)F_np603|^SZ>)rf|$g4X*&aSv0RnTbZIk zl*evyn2^(7JIrrT&yAFgDEH5p>G+7`P4iay8?euY>`ADx(U>IkbnQI}R4dMVjAqWcTKtMyHof!hYJ`pz3?1s5qvo9LIujj96pp(uQ@?{rD66ajWj7gtflQtw3Uy7ex-===6(C3>SnD}XylNOB}Q{*61B-Qe%55n8amV}m-&C2>Wv z$?Z<&!|K5^ON*j&Z4)G`zX9%n^pzk2>!8u5;ZTULX1#aFxGn@8Z1jC=$eS2;A(=b$ z8;+)9m$U9G-+flIVT`Mfs0Gp0zL3i{jlK^DwCb@#H8PpHh0x4TMJfBJpMr*En6oN z%gK1|-D1YlFzpJ4DXP~rWbtU0wM$5}zV@pKp%X2K8h2@IZbh{WpX~;UgQHl#D%0Bf z2ejS2pY{CiIkHj*Fbr+RVR#?U8{}wiil_tU$o(C870Is+oEM<|ZyL@bUq8QLqB=b6 zR>fa5Z5AoKkT%VM%Z^*jBKSUSv(D2hjHB|;ksVDYc97dXcYPef7MqTAQbhB-T;zBz3<>S+&nGzgT>Yc0fwRGTlNxAmTK>9H7>^eH=}Jt4 zS{fKACv}EfbwzSm?D;kfD2*MMfph)etaAY{4S<4O(UBk8fhhGui<}n(GtumZ>qM>6* zL*0mvPs3~w(!Ig#)LgjYyEF z_67mk>A*OlO;4U!NJUl6gu31&o*YjP^NEDl9jCgD6u8Qkb!HQ<6O)Z3lAlWrGqy!_Bj~!N@J`Uch|IU zyz}S}RC|WtjlsDwq^GHKt#RA_LU+c=J$ltF-f5cM)C9t1{Lgrb;oDHtYlOLypbBp_ zwi$;R{rfwz?`xZ{**uT@Qk$OnNWoZyX}mk@NDcmQoMKo>HU)s*75;Bm-557Qw`>aN zotrs{yW4&b6M5=V@31*qkv9O=-o}6-DX#G9IHBOmXyE*2W4swJy3Wj~?;*{ZGZl|0 zxSD51KU4xp0pv9t)b}wKH?Xx6S3e88K?IH8-RKIoQp?T+lzAO#bmPl&nyuy+pEA*} zPTqIYIY&dReyRA5lMV$yeqR4@kG$m!Jm+6G}!u}v(VY2Cha5qF?YTb&;Nf`q=uX_6GK)^n@`NVHU~P}Un{C=SCo35(*X z8>8?d@1c;9_!KG9Ruy~1>j3)K<@K6N&={$AUwf~Wp9%3FTJcO(nIK9gHwZ>~i>6m? zZ%fLbbGUZjBX?Qcm3mS<;dI|k-2#BmYPNuwl9=zoFt>>!y|pE4;yS6S_Qv}uT=?k~ z)fVbNfstFX33m3DkuAVkh0ns)c$`rt-E^0hXNNs*Ci z6w?Q0?+aXKOgK-&{qDG4>ATQgz3{UW6HOHapzA||fCgzbFAi(I)tbAn839Z1t*Y|C zWUP#7(#**A~9Im%RR!JVBlYp(%7JO_N%1Z-am8d%;;FY{@UYz z$TiI?eygUH;X6$fcj6%};As}KFhoz$ss-GcC|5^<3QrU}^i_mv?3fj-uMVzVOt}x< z2s^R!qDyIjiBPQI;olkzpRjKy-zM(hP>&B}5nb5@=f)`f#e!!JhY#o0eH(PVW$J9r zT}f_%SxfAj8LD1W)^30{gNA?wm7fXt2)UkG7-!<6t*?LoeDC6~hg!rDt+oHSb6rvT z*G2HH|6qR|=Rb?H^#56{^_AfO@KvCj_zlWbAUGcTH~$6==fbuzxat_lLf&uCu7?mK zV2Gy%IlL_!Iq}s4uzQFBAj+|knRkJ-j@qWkM>o&1q);r5+jhkm4$S11;p^?ya%;OKuM_Wk$h zw7wdt3-D3%e}nE1ktKF0%EE~|QQ~9`ysYTW#KA?M{Pxl_DvY(eCbedYf!JQ7Tbrk8 zGhlm*IBp8N@Z!&epra&6k_npUgXu$}ot{cnk=x6M(Yz_{w@SPvLvAR}RTM$Q7@Nft z#0tvCv)lrYk`2F3Y=m^plf@uCJIpW=331vIZtg_FEjQ)C?7=;%EA)!|CS9>#S+-v- zHiTm+>N#DGfRFrrM2Eg4X$SC;-`uH#ZXS7NwQd63i@nChFTcQp`D@m!*sNf^=F<$L zx9T(0=3F8k!VX&h>LAmSFa#q++8p1+)+Uwx9l7As7PjACdAubo)#nS7i)vO9bCKYz zde1%CQP$pFV-UwknN(}}MWdl|&Z88-yuh7kMGhQ^Y5>WvH@JWS38}{ayY{<1Nt{KA-74RI*G`O7my0^n}YW zEQNY7_<;|Htv1sBr%%=D2jMuW&A5l`tZ(r#9tPh_pR8+4Y#=)1|9(r@H-2&QxtJaqSlj{xNN*PGH_2| z<^@luk2DwmRn3-w)KTbL;S8EtXm|$y1o*39w~^$^#*ppt-|)>!gvQ7Luy zh#~(tp9G66yuXWzEZhIYR-H|HLkFO?Q#WX^27c!4R zHibe+AyY_FWZmak5~4nA#(xD~;CW*oSYatW6Z6D!nbfDXigZ8eF;Fxc;?sF5Bs9md zsg7J z3|9VP<@?8OQE%%H(=@XquY!wbuTs)&#IA3;T%MrMb!-+UtT=KaI!+$f{05yqS2%-l z+QZbL2YlN_;Oe zaJ9Ju6nJJwl0%9=Mj81&Y*q5p3@(?cEt*cgx({4Rl-zI7->(Jch^ix-RN^BTP^_|@ zBerWR>L>-p`02Ycs*gefe+X6r#|_*Uv=p!%Gak88*)Ks*QJ;PwJR|ewJ!inkdCw!m ze3X!9-%8+){v(P8`xSE;#pwvoME#JPmd2oiPaBR%AY8@#(;70Z{%%9DwIp;shUO&V zd67Z1Vl&TAeSt}3@f&Nl_^0l}?SVXr9wmw}j`8&*WLb5RSRV*M6W%n8d8tdBqIRj4yOo7)YGiQqt2G& zuEMS|M<#3W=FqD1c@sC4%$lzzch^=})MvJq^X!raebmz(p9m) zABuJ}eVttXWtfUVd{X%hTKWR!2C9J%5c_XzkE-8x!SjK-ogz>y+B`T?TrFhfzd;=z zS5DD3W)gzmJT130tB7KE|8_Na7rT_IX5|dD;4t*eb8K)}Q?8Nyfrz@jSZ76ih%|M*j0lQY<@ZOnRQYL+nP1e ztI}(>i*RmS3IwZ)N^o^$PI8zv4pE3<15cIF!mI0cG+nd7uLA6|nEo5m_WxYS&DeiD zdGh~9179qq6M9|``U_>v|JVNJ-&MvP|Bu}b=^SF@!FFMZGD)nG>x^}frIz`ARdL>G zYMHX5^vSUX)0qTh)$E&;I|?4^Qd4V%h&6|2z5jJQZ;KjH4d!yw zDksi<{SmuT6#8ZW*oe;j-_a&HC(so z06E>9;R?ZpP;7pKUYlPBvO1&llHH=?WX@ZA0oMbPXw=<{K4=YEMx_^l=V0A`@F zJ5Tha#%NszNUOIIyXZ7Bkagigtll1h5Q5ZxgQVAHIEGUa)(kJOIAaK{RGHtPujOwL z3+ujAt8aka1O`8Jd?wtJ%JK%#=0|F}gj>{TU0l-nqV|s;`mcsne&5_gRkBPVUOg62 zx9yPYeuH!ia)E}43d}D@Lkf_SN`mZPS}P=Ly!;Ky+TTi8GXTb&&Y&>=k3(GjS67h_ z3}Uk2`9qNv{(m(_;eWV_kw(cfevaYPYXVrrUz|FN-X|}7|J4W)|9BBMfFS@Esebm) zJOiuc&piKG&wuufKl{eto-%*-=l}2V{O39NC*JrUgld1{jem|#|Lhxo_Kp8r&MAsr zP&;xfAkIH4Pw~emG1@DeJG;A|Q=KpmHlHeMPS4L>c*48)5k&iS&%RycrpB!ilg>t< L_gw+ - 4.0.0 - org.neo4j - neo4j-guide-extension - jar - 3.2.3 - Neo4j-Web - Neo4j Web Extension - - UTF-8 - 1.7.6 - 3.2.3 - 1.19 - - - - - java.net - http://download.java.net/maven/2 - - - - - junit - junit - 4.12 - test - - - org.codehaus.jackson - jackson-jaxrs - 1.9.13 - - - org.neo4j - neo4j - ${neo4j.version} - - - org.neo4j - neo4j-io - ${neo4j.version} - test - test-jar - - - org.neo4j - neo4j-kernel - ${neo4j.version} - test - test-jar - - - org.apache.httpcomponents - httpclient - 4.4 - test - - - org.neo4j.test - neo4j-harness - ${neo4j.version} - test - - - org.neo4j - server-api - ${neo4j.version} - - - org.neo4j.app - neo4j-server - ${neo4j.version} - test - test-jar - - - org.neo4j.app - neo4j-server - ${neo4j.version} - provided - - - org.neo4j - neo4j - - - org.mortbay.jetty - jetty - - - com.sun.jersey - jersey-server - - - de.huxhorn.lilith - de.huxhorn.lilith.3rdparty.rrd4j - - - com.sun.jersey.contribs - jersey-multipart - - - org.apache.felix - org.apache.felix.main - - - org.apache.felix - org.apache.felix.fileinstall - - - - - org.mortbay.jetty - jetty - 6.1.25 - test - - - com.sun.jersey - jersey-server - ${jersey.version} - - - com.sun.jersey - jersey-client - ${jersey.version} - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.1 - - 1.7 - 1.7 - - - - - diff --git a/guide-extension/readme.adoc b/guide-extension/readme.adoc deleted file mode 100644 index d8101cd..0000000 --- a/guide-extension/readme.adoc +++ /dev/null @@ -1,60 +0,0 @@ -== Neo4j Server Extension for Serving Browser Guides - -This is an a simple extension for http://neo4j.com/download[Neo4j Server] that can serve html content from a pre-configured directory. - -This can be used for small, self-containted demos or Neo4j Browser Guides. - -=== The Demo: Neo4j-Guides - -As my demo I provide a setup that exposes HTML files for a Neo4j-Guide from a configured directory. - -The `StaticWebResource` provides the web-files of the visualization from the `resources/webapp` directory. - -*Note that you have to disable auth for this demo as I haven't added means for it to retrieve a username/password.* - -You can use the demo by cloning and building (`mvn clean install`) this repository. -And then copy the resulting jar in the server's plugin directory. -And edit `neo4j-server.properties` to register the package name with an endpoint. - -.For Neo4j 2.3 -[source] ----- -cp target/neo4j-guide-extension-2.3.2.jar $NEO4J_HOME/plugins/ -echo 'org.neo4j.server.thirdparty_jaxrs_classes=extension.web=/guides' >> $NEO4J_HOME/conf/neo4j-server.properties -echo 'org.neo4j.server.guide.directory=data/guides' >> $NEO4J_HOME/conf/neo4j-server.properties -$NEO4J_HOME/bin/neo4j restart - -:play http://localhost:7474/guides/test.html ----- - -.For Neo4j 3.x -[source] ----- -cp target/neo4j-guide-extension-2.3.2.jar $NEO4J_HOME/plugins/ -echo 'dbms.unmanaged_extension_classes=extension.web=/guides' >> $NEO4J_HOME/conf/neo4j-server.conf -echo 'org.neo4j.server.guide.directory=data/guides' >> $NEO4J_HOME/conf/neo4j-server.conf -$NEO4J_HOME/bin/neo4j restart - -:play http://localhost:7474/guides/test.html ----- - -.This shows the restaurant-recommendation-graphgist running inside the Neo4j-Browser -image::guides_in_neo_demo.jpg[] - -You can also download https://dl.dropboxusercontent.com/u/14493611/neo4j-guide-extension-2.3.2.jar[the 2.3.2 JAR from here]. - -=== How does it work? - -It is actually quite simple. -This is the core idea of exposing static web resources under the mountpoint. - -[source,java] ----- -@GET -@Path("{file:(?i).+\\.(png|jpg|jpeg|svg|gif|html?|js|css|txt|grass)}") -public Response file(@PathParam("file") String file) throws IOException { - InputStream fileStream = findFileStream(file); - if (fileStream == null) return Response.status(Response.Status.NOT_FOUND).build(); - else return Response.ok(fileStream, mediaType(file)).build(); -} ----- diff --git a/guide-extension/src/main/java/extension/web/StaticWebResource.java b/guide-extension/src/main/java/extension/web/StaticWebResource.java deleted file mode 100644 index 88563be..0000000 --- a/guide-extension/src/main/java/extension/web/StaticWebResource.java +++ /dev/null @@ -1,96 +0,0 @@ -package extension.web; - -import org.neo4j.kernel.configuration.Config; -import org.neo4j.server.web.WebServer; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; - -@Path("/") -public class StaticWebResource { - - private File directory; - - public StaticWebResource(@Context Config configuration, @Context WebServer server) { - - String path = configuration.getRaw().get("org.neo4j.server.guide.directory"); - if (path == null) path = "guides"; - File file = new File(path); - this.directory = file.exists() ? file : null; - - } - - @Path("/") - @Produces("text/html") - @GET - public Response index() throws IOException { - return file("index.html"); // TODO html-file listing? - } - - static Map resources = new ConcurrentHashMap<>(); - - @GET - @Path("{file:(?i).+\\.(png|jpg|jpeg|svg|gif|html?|js|css|txt|grass)}") - public Response file(@PathParam("file") String file) throws IOException { - InputStream fileStream = findFileStream(file); - if (fileStream == null) return Response.status(Response.Status.NOT_FOUND).build(); - else return Response.ok(fileStream, mediaType(file)).build(); - } - - private InputStream findFileStream(String fileName) throws IOException { - File file = resources.computeIfAbsent(fileName, new Function() { - public File apply(String s) { - return findFile(s); - } - }); - return file == null ? null : new FileInputStream(file); - } - - private File findFile(@PathParam("file") String file) { - File f = new File(directory, file); - return f.exists() ? f : null; - } - - public String mediaType(String file) { - int dot = file.lastIndexOf("."); - if (dot == -1) return MediaType.TEXT_PLAIN; - String ext = file.substring(dot + 1).toLowerCase(); - switch (ext) { - case "png": - return "image/png"; - case "gif": - return "image/gif"; - case "json": - return MediaType.APPLICATION_JSON; - case "js": - return "text/javascript"; - case "css": - return "text/css"; - case "svg": - return MediaType.APPLICATION_SVG_XML; - case "html": - return MediaType.TEXT_HTML; - case "txt": - return MediaType.TEXT_PLAIN; - case "jpg": - case "jpeg": - return "image/jpg"; - default: - return MediaType.TEXT_PLAIN; - } - } -} diff --git a/guide-extension/src/test/java/extension/web/StaticWebResourceTest.java b/guide-extension/src/test/java/extension/web/StaticWebResourceTest.java deleted file mode 100644 index eabd61c..0000000 --- a/guide-extension/src/test/java/extension/web/StaticWebResourceTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package extension.web; - -import org.junit.Rule; -import org.junit.*; -import org.neo4j.harness.junit.Neo4jRule; -//import org.neo4j.test.Mute; -import org.neo4j.test.server.HTTP; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; - -import static java.util.Arrays.asList; -import static java.util.Collections.singletonMap; -import static org.junit.Assert.*; - -public class StaticWebResourceTest { - - private final static String CONTENT = "

Hello World

"; - - @Rule - public Neo4jRule server = new Neo4jRule() - .withConfig("org.neo4j.server.guide.directory","neo4j-home/guides") - .withExtension("/guides", StaticWebResource.class.getPackage().getName()); - - - @Before public void setUp() throws IOException { - // todo create / copy file to the server directory neo4j-home/guides - File guides = new File("neo4j-home","guides"); - guides.mkdirs(); - Writer w = new FileWriter(new File(guides,"test.html")); - w.write(CONTENT); - w.close(); - } - @Test - public void testConfig() throws Exception { - String baseUri = server.httpURI().resolve("/guides/").toString(); - HTTP.Response response = - HTTP.withBaseUri(baseUri).GET("test.html"); - - assertEquals(200, response.status()); - String content = response.rawContent(); - System.err.println(content); - assertEquals(CONTENT, content); - } - - -} diff --git a/html/browser.html b/html/browser.html deleted file mode 100644 index 120cbf5..0000000 --- a/html/browser.html +++ /dev/null @@ -1,432 +0,0 @@ - -
- - - - - - -
-

Get Started

-
-
-
-

Start by typing :play intro into the command-line and pressing Enter. -Please follow the guide to learn about our user interface.

-
-
-
-
- - - - -
-

Feedback & Questions

-
-
-
-

If you have feedback or questions on how to use the Neo4j Browser, there is a small messaging system in the configuration (cog) drawer. -You can provide your name and send us a message.

-
-
-
-
- - - - -
-

Useful Commands and Keyboard Shortcuts

-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ShortcutPurpose

:help

Help System

:help commands

Useful Commands

:clear

Clear Frames

:style [reset]

Styling Popup & Reset

:help keys

Keyboard Help

Ctrl+Enter or Cmd+Enter

Execute Statement

Ctrl+Up or Cmd+Up

Previous Statement

Shift+Enter

Enter Multiline Mode

/

Move Focus to Editor

ESC

Toggle Editor to Full Screen

-
-
-
- - - - -
- - - - - -
-

Styling Neo4j Browser Visualization

-
-
-
-

You can pan the visual view around and drag nodes to rearrange them.

-
-
-

The nodes already have a sensible captions, it auto-selects a property from the property list to be rendered as caption.

-
-
-

If you click on any node or relationship you see the properties of that element below the visualization, larger property sets might be folded in, there is a little triangle on the right to fold them out.

-
-
-

E.g. you click on one of the Movies then you can see it’s properties below the graph. -Same for actors or the ACTED_IN relationships.

-
-
-

If you click on any label or relationship above the graph visualization, you can then chose its styling in the area below the graph.

-
-
-

Colors, sizes and captions are selectable from there.

-
-
-

For instance click on the (Movies) label above the graph and change the color, size and captions of nodes labeled with Movie.

-
-
-
-style node -
-
-
-
-style relationship -
-
-
-
-
- - - - -
-

Running Queries

-
-
-
-

When you continue with the guide, you will see more queries. -You can get them into the editor by clicking on them. -To execute, hit the triangular play button.

-
-
-

Query results are rendered either as visual graph or tabular result. -You can switch between those with the icons on the left side of the result frame.

-
-
-

Remove all accumulated output frames with :clear, the cross removes a single frame and aborts a (long-)running statement.

-
-
-

You can click the query above the graph visualisation to pull it back into the editor.

-
-
-

Use the keyboard shortcuts listed above to work efficiently with the editor area.

-
-
-

Navigate input history with Ctrl+Up and Ctrl+Down, access all of it via :history. The history will be persisted across browser restarts.

-
-
-

You can switch between tabular, visual mode, query plan and x-ray mode for results with the icons on the left of each panel,

-
-
- - - - - -
-
Note
-
-Don’t worry if you don’t see any output, you might just be in visual mode but returned tabular/scalar data, just switch the mode to tabular -
-
-
-

Query time is reported in the tabular view, don’t rely on that exact timing though it includes the latency and (de-)serialization costs, not just the actual query execution time.

-
-
-

You can download the results as CSV from the tabular output panel (top right download icon), and as JSON (download icon above the panel). -The graph visualization can be exported as PNG and SVG.

-
-
-
-
- - - - -
-

Meta Graph

-
-
-
-

In the left side drawer on the three bubbles section (that resemble the Neo4j logo) you find the currently used node-labels and relationship types. -Clicking on any of those runs a quick query to show you a sample of the graph using those.

-
-
-
-
- - - - -
-

Queries and Favorites

-
-
-
-

If you start with an empty frame, display some nodes and relationships, use the Favorites (Star) drawer on the left, click on the Get Some Data entry, and run the query. -This executes the statement MATCH (n) RETURN n limit 100 which fetches some nodes.

-
-
-

The browser helpfully also fetches and displays relationships between those nodes, even if they were not part of your query result. -You can disable the latter behavior with the "Auto-Complete" switch in the bottom left corner. -Then only relationships returned by the actual query will be shown.

-
-
-

You can save your own queries as favorites by "starring" them. -Use a comment // comment above your query for a title. -Use folders to organize the favorites you can rearrange them by dragging and delete if they are no longer useful.

-
-
- - - - - -
-
Note
-
-Favorites are stored in your local browser storage, so they are only available per Browser and URL. -
-
- - - -
-

For more advanced styling you can bring up the style-viewer with :style, download the graph-style-sheet (GRASS), edit it offline and drag it back onto the drag-area of the viewer.

-
-
- - - - - -
-
Note
-
-You can reset to the default styles with :style reset. -Alternatively by clicking the "fire extinguisher" icon in the popup from :style. -
-
-
-

Within the GRASS file you can change colors, fonts, sizes, outlines and titles per node-label and relationship-type. -It is also possible to combine multiple properties into a caption with caption: '{name}, born in {born}';

-
-
-
-style sheet grass -
-
-
-
-
- - - - -
-

Configuration

-
-
-
-
    -
  • -

    since Neo4j 2.3 there is a config drawer on the left (with the cog), no need for the :config command anymore

    -
  • -
  • -

    you can retrieve the current configuration with :config

    -
  • -
  • -

    the individual settings are configured with:

    -
    -
      -
    • -

      :config maxNeighbours:100 - maxiumum number of neighbours for a node

      -
    • -
    • -

      :config maxRows:100 - maximum number of rows for the tabular result

      -
    • -
    -
    -
  • -
-
-
-
-
- - - - -
-

Executing REST requests

-
-
-
-

You can also execute REST requests with the Neo4j Browser, the command-syntax is
-:COMMAND /a/path {"some":"data"}. -The available commands are :GET, :POST, :PUT and :DELETE.

-
-
-

A simple query would inspect the available endpoints of the database :GET /db/data/, the results are listed as formatted JSON. -Then you can for instance retrieve all labels in the database with :GET /db/data/labels.

-
-
-

To execute a Cypher statement you post to the transaction Cypher endpoint like this:

-
-
-
-
:POST /db/data/transaction/commit {"statements":[
-     {"statement":"MATCH (m:Movie)  WHERE m.title={title} RETURN m.title, m.released, labels(m)",
-      "parameters":{"title":"Cloud Atlas"}}]}
-
-
-
-
-
- -
\ No newline at end of file diff --git a/html/restaurant_recommendation.html b/html/restaurant_recommendation.html deleted file mode 100644 index 2807d39..0000000 --- a/html/restaurant_recommendation.html +++ /dev/null @@ -1,193 +0,0 @@ - - -
- - - - - -

Restaurant Recommendations

- - - - -
- - - - - -
-

Setup: Creating Friends, Restaurants in Cities and their Cusines

-
-
-
-
-
CREATE (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]->(emil:Person {name:"Emil"}),
-       (philip)-[:IS_FRIEND_OF]->(michael:Person {name:"Michael"}),
-       (philip)-[:IS_FRIEND_OF]->(andreas:Person {name:"Andreas"})
-CREATE (sushi:Cuisine {name:"Sushi"}), (nyc:City {name:"New York"}),
-       (iSushi:Restaurant {name:"iSushi"})-[:SERVES]->(sushi),(iSushi)-[:LOCATED_IN]->(nyc),
-       (michael)-[:LIKES]->(iSushi),
-       (andreas)-[:LIKES]->(iSushi),
-       (zam:Restaurant {name:"Zushi Zam"})-[:SERVES]->(sushi),(zam)-[:LOCATED_IN]->(nyc),
-       (andreas)-[:LIKES]->(zam)
-
-
-
-
-
- - - - -
-

Philips Friends

-
-
-
-
-
MATCH (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]-(person)
-RETURn person.name
-
-
-
-
-
- - - - -
-

Restaurants in NYC and their cusines

-
-
-
-
-
MATCH (nyc:City {name:"New York"})<-[:LOCATED_IN]-(restaurant)-[:SERVES]->(cusine)
-RETURN nyc, restaurant, cusine
-
-
-
-
-
- - - - -
-

Graph Search Recommendation

-
-
-
-
-sushi restaurants nyc -
-
-
-

We want to answer the following question

-
-
-
-
-

Find Sushi Restaurants in New York that my friends like.

-
-
-
-
-

To satisfy this question, we have to know who’s asking: Philip and he’s asking for 4 connected facts

-
-
-
    -
  • -People that are friends of Philip -
  • -
  • -Restaurants located in New York -
  • -
  • -Restaurants that server Sushi -
  • -
  • -Restaurants that his Friends like -
  • -
-
-
-
-
MATCH (philip:Person {name:"Philip"}),
-      (philip)-[:IS_FRIEND_OF]-(friend),
-      (restaurant:Restaurant)-[:LOCATED_IN]->(:City {name:"New York"}),
-      (restaurant)-[:SERVES]->(:Cuisine {name:"Sushi"}),
-      (friend)-[:LIKES]->(restaurant)
-RETURN restaurant.name, collect(friend.name) AS likers, count(*) AS occurence
-ORDER BY occurence DESC
-
-
-
-
-
- -
\ No newline at end of file diff --git a/html/restaurant_recommendation.txt.html b/html/restaurant_recommendation.txt.html deleted file mode 100644 index c3b600c..0000000 --- a/html/restaurant_recommendation.txt.html +++ /dev/null @@ -1,163 +0,0 @@ - -
- - - - - - -
-

Restaurant Recommendations

-
-
- - - -
-
-sushi restaurants nyc -
-
-
-

We want to demonstrate how easy it is to model a domain as a graph and answer questions in almost natural language.

-
-
-

Graph Based Search and Discovery is prominent a use-case for graph databases like Neo4j.

-
-
-

Here we use a Domain of restaurants which serve cuisines and are located in a City.

-
-
-

The domain diagram was created with the Arrows tool

-
- - - -
-
-
CREATE (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]->(emil:Person {name:"Emil"}),
-       (philip)-[:IS_FRIEND_OF]->(michael:Person {name:"Michael"}),
-       (philip)-[:IS_FRIEND_OF]->(andreas:Person {name:"Andreas"})
-create (sushi:Cuisine {name:"Sushi"}), (nyc:City {name:"New York"}),
-       (iSushi:Restaurant {name:"iSushi"})-[:SERVES]->(sushi),(iSushi)-[:LOCATED_IN]->(nyc),
-       (michael)-[:LIKES]->(iSushi),
-       (andreas)-[:LIKES]->(iSushi),
-       (zam:Restaurant {name:"Zushi Zam"})-[:SERVES]->(sushi),(zam)-[:LOCATED_IN]->(nyc),
-       (andreas)-[:LIKES]->(zam)
-
-
- - - -
-
-
MATCH (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]-(person)
-RETURn person.name
-
-
- - - -
-
-
MATCH (nyc:City {name:"New York"})<-[:LOCATED_IN]-(restaurant)-[:SERVES]->(cusine)
-RETURN nyc, restaurant, cusine
-
-
- - - -
-
-sushi restaurants nyc -
-
-
-

We want to answer the following question

-
-
-
-
-

Find Sushi Restaurants in New York that my friends like.

-
-
-
-
-

To satisfy this question, we have to know who’s asking: Philip and he’s asking for 4 connected facts

-
-
-
    -
  • -

    People that are friends of Philip

    -
  • -
  • -

    Restaurants located in New York

    -
  • -
  • -

    Restaurants that server Sushi

    -
  • -
  • -

    Restaurants that his Friends like

    -
  • -
-
-
-
-
MATCH (philip:Person {name:"Philip"}),
-      (philip)-[:IS_FRIEND_OF]-(friend),
-      (restaurant:Restaurant)-[:LOCATED_IN]->(:City {name:"New York"}),
-      (restaurant)-[:SERVES]->(:Cuisine {name:"Sushi"}),
-      (friend)-[:LIKES]->(restaurant)
-RETURN restaurant.name, collect(friend.name) as likers, count(*) as occurence
-ORDER BY occurence DESC
-
-
-
-
-
-
-
\ No newline at end of file diff --git a/http-server.py b/http-server.py deleted file mode 100755 index 8acc156..0000000 --- a/http-server.py +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/env python -import os -try: - from http.server import HTTPServer, SimpleHTTPRequestHandler -except ImportError: - from BaseHTTPServer import HTTPServer - from SimpleHTTPServer import SimpleHTTPRequestHandler - -class CORSRequestHandler(SimpleHTTPRequestHandler): - - def end_headers (self): - self.send_header('Access-Control-Allow-Origin', '*') - self.send_header('Access-Control-Allow-Methods', 'GET') - self.send_header('Access-Control-Allow-Headers', '*') - self.send_header('Access-Control-Allow-Headers', 'Pragma,Cache-Control,If-Modified-Since,Content-Type,X-Requested-With,X-stream,X-Ajax-Browser-Auth') - SimpleHTTPRequestHandler.end_headers(self) - - def do_OPTIONS(self): - self.send_response(200) - self.end_headers() - -if __name__ == '__main__': - HTTPServer(('0.0.0.0', 8001), CORSRequestHandler).serve_forever() diff --git a/http.rb b/http.rb deleted file mode 100644 index 1be0213..0000000 --- a/http.rb +++ /dev/null @@ -1,16 +0,0 @@ -require 'rubygems' -require 'sinatra' - -before do - response['Access-Control-Allow-Headers'] = '*, pragma, cache-control, x-stream, accept, If-Modified-Since, X-Ajax-Browser-Auth' - response['Access-Control-Allow-Methods'] = 'GET, OPTIONS' - response['Access-Control-Allow-Origin'] = request.env['HTTP_ORIGIN'] -end - -options '*' do - 200 -end - -get '/:file' do |file| - send_file File.join("html", file) -end \ No newline at end of file diff --git a/http.sh b/http.sh deleted file mode 100644 index 89ea357..0000000 --- a/http.sh +++ /dev/null @@ -1,3 +0,0 @@ -PORT=${1-8001} -gem install --no-ri --no-rdoc sinatra -ruby http.rb -p $PORT \ No newline at end of file diff --git a/readme.adoc b/readme.adoc index c9c89de..1f363be 100644 --- a/readme.adoc +++ b/readme.adoc @@ -1,38 +1,40 @@ == Converting Asciidoc Files to Neo4j Browser Guides -This program uses AsciiDoctor erb templates to generate an outline html and a slide for each level two header. +This program uses AsciiDoctor ERB templates to generate an outline HTML and a slide for each level two header. === Create HTML ----- -./run.sh path/to/a_guide.adoc [guide.html] +The following command will convert the AsciiDoc files in _guide/docs_ to HTML: --> html/a_guide.html ----- + $ ./gradlew convert + +The HTML files are available in the _build/browser-guide_ directory at the root of this repository. === Start Local Server -It is patched to allow CORS headers for the browser to serve the HTML directory. +In a new terminal, run the following command to start a local HTTP server: +[source,console] ---- -python http-server.py & +$ ./gradlew httpServer ---- -=== Configuration +=== View in Neo4j Browser -* before Neo4j 3.0 add `dbms.browser.remote_content_hostname_whitelist=*` to `conf/neo4j-server.properties` -* from Neo4j 3.0 add `browser.remote_content_hostname_whitelist=*` to `conf/neo4j.conf` +To view this guide in the Neo4j Browser, type the following command in the action bar: -and restart. -You can also add the specific `localhost:8001` address. - -For `neo4j-community` you have to use `sudo` and run the http script on port 80. -For example, use `BaseHTTPServer.HTTPServer(("0.0.0.0", 80),CORSRequestHandler).serve_forever()` in `http.py` +---- +:play http://localhost:35729/browser-guide/index.html +---- -To view the guides in the Neo4j Browser, run: +[TIP] +==== +You can use the `--continuous` flag to automatically convert the AsciiDoc files to HTML when the content is updated: +[source,console] ---- -:play http://localhost:8001/html/a_guide.html +$ ./gradlew convert --continuous ---- +==== -You can find more details on how to create guides and their format in link:docs/remote-guides.md[] and an example in link:docs/remote.html[] +You can find more details on how to create guides and their format at https://neo4j.com/developer/guide-create-neo4j-browser-guide/ diff --git a/restaurant-recommendation/docs/01.adoc b/restaurant-recommendation/docs/01.adoc new file mode 100644 index 0000000..8e25071 --- /dev/null +++ b/restaurant-recommendation/docs/01.adoc @@ -0,0 +1,49 @@ += Restaurant Recommendations + +== Restaurant Recommendations + +Welcome to the Neo4j Applied Graph Data Science for Web Applications Training Course! + +In this guide we're going to get familiar with the Yelp dataset. +Let's get started! + +== Graph Model + +This is the graph model that we'll be working with: + +image::sushi_restaurants_nyc.svg[height=300] + +== Setup: Creating Friends, Restaurants in Cities and their Cuisines + +[source,cypher] +---- +CREATE (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]->(emil:Person {name:"Emil"}), + (philip)-[:IS_FRIEND_OF]->(michael:Person {name:"Michael"}), + (philip)-[:IS_FRIEND_OF]->(andreas:Person {name:"Andreas"}) +CREATE (sushi:Cuisine {name:"Sushi"}), (nyc:City {name:"New York"}), + (iSushi:Restaurant {name:"iSushi"})-[:SERVES]->(sushi),(iSushi)-[:LOCATED_IN]->(nyc), + (michael)-[:LIKES]->(iSushi), + (andreas)-[:LIKES]->(iSushi), + (zam:Restaurant {name:"Zushi Zam"})-[:SERVES]->(sushi),(zam)-[:LOCATED_IN]->(nyc), + (andreas)-[:LIKES]->(zam) +---- + +== Philips Friends + +[source,cypher] +---- +MATCH (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]-(person) +RETURn person.name +---- + +== Restaurants in NYC and their cusines + +[source,cypher] +---- +MATCH (nyc:City {name:"New York"})<-[:LOCATED_IN]-(restaurant)-[:SERVES]->(cusine) +RETURN nyc, restaurant, cusine +---- + +ifdef::env-guide[] +pass:a[Continue to Exercise 2: Graph Search Recommendation] +endif::[] diff --git a/restaurant-recommendation/docs/02.adoc b/restaurant-recommendation/docs/02.adoc new file mode 100644 index 0000000..86f008e --- /dev/null +++ b/restaurant-recommendation/docs/02.adoc @@ -0,0 +1,30 @@ += Restaurant Recommendations + +== Graph Search Recommendation + +image::sushi_restaurants_nyc.png[height=300] + +We want to answer the following question + +"" Find Sushi Restaurants in New York that my friends like. +"" + +== Find Relations + +To satisfy this question, we have to know who's asking: _Philip_ and he's asking for 4 connected facts + +* _People_ that are friends of _Philip_ +* _Restaurants_ located in _New York_ +* _Restaurants_ that server _Sushi_ +* _Restaurants_ that his _Friends_ like + +[source,cypher] +---- +MATCH (philip:Person {name:"Philip"}), + (philip)-[:IS_FRIEND_OF]-(friend), + (restaurant:Restaurant)-[:LOCATED_IN]->(:City {name:"New York"}), + (restaurant)-[:SERVES]->(:Cuisine {name:"Sushi"}), + (friend)-[:LIKES]->(restaurant) +RETURN restaurant.name, collect(friend.name) AS likers, count(*) AS occurence +ORDER BY occurence DESC +---- diff --git a/restaurant-recommendation/docs/index.adoc b/restaurant-recommendation/docs/index.adoc new file mode 100644 index 0000000..dffc6b2 --- /dev/null +++ b/restaurant-recommendation/docs/index.adoc @@ -0,0 +1,27 @@ += Restaurant Recommendations +:imagesdir: ../images + +== Restaurant Recommendations + +We want to demonstrate how easy it is to model a domain as a graph and answer questions in almost natural language. +Graph Based Search and Discovery is prominent a use-case for graph databases like http://neo4j.com[Neo4j]. +Here we use a Domain of restaurants which serve cuisines and are located in a City. + +The domain diagram was created with the http://www.apcjones.com/arrows/#[Arrows tool]. + +Here are the exercises you perform for this course: + +. pass:a[Setup] +. pass:a[Graph Search Recommendation] + +== Further Resources + +* http://neo4j.com/graphgists[Graph Gist Examples] +* http://neo4j.com/docs/stable/cypher-refcard/[Cypher Reference Card] +* http://neo4j.com/docs/developer-manual/current/#cypher-query-lang[Neo4j Developer Manual] +* http://neo4j.com/developer/resources#_neo4j_cypher_resources[Cypher Resource Collection] +* http://graphdatabases.com[e-book: Graph Databases (free)] + +ifdef::env-guide[] +pass:a[Continue to Exercise 1: Setup] +endif::[] diff --git a/img/sushi_restaurants_nyc.png b/restaurant-recommendation/images/sushi_restaurants_nyc.png similarity index 100% rename from img/sushi_restaurants_nyc.png rename to restaurant-recommendation/images/sushi_restaurants_nyc.png diff --git a/img/sushi_restaurants_nyc.svg b/restaurant-recommendation/images/sushi_restaurants_nyc.svg similarity index 100% rename from img/sushi_restaurants_nyc.svg rename to restaurant-recommendation/images/sushi_restaurants_nyc.svg diff --git a/run.sh b/run.sh deleted file mode 100755 index 3fb3b2f..0000000 --- a/run.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -asciidoctor -v || gem install asciidoctor - -echo "Usage ./run.sh OR ./run.sh path/to/a_guide.adoc [guide.html] [+1 (header-offset)] [http://guide-host:port]" -# mkdir -p html -DIR=${0%%/run.sh} - -function render { - ADOC=${1-../exercise/lab_01.adoc} - shift - HTML=${ADOC%.*}.html - HTML=html/${HTML##*/} - HTML=${1-$HTML} - shift - OFFSET=${1-+1} - shift - BASE_URL=${1-http://guides.neo4j.com/intro} - shift - echo rendering $ADOC to $HTML -echo asciidoctor $ADOC -T $DIR/templates -a allow-uri-read -a experimental -a guides=$BASE_URL -a current=$BASE_URL -a img=$BASE_URL/img -a leveloffset=${OFFSET} -a env-guide= -a guide= -o ${HTML} "$@" - asciidoctor $ADOC -T $DIR/templates -a allow-uri-read -a guides=$BASE_URL -a icons=font -a current=$BASE_URL -a img=$BASE_URL/img -a leveloffset=${OFFSET} -a env-guide= -a guide= -o ${HTML} "$@" -} - -if [ $# == 0 ]; then - render ../exercise/lab_01.adoc - render ../exercise/lab_02.adoc - render ../exercise/lab_03.adoc - render ../04_create_data_interactive.adoc html/create.html - render ../05_cypher_deep_dive_starter.adoc html/starter.html - render ../05_cypher_deep_dive_expert.adoc html/expert.html - render ../05_cypher_deep_dive_advanced.adoc html/advanced.html -else - render "$@" -fi - -# s3cmd put -P --recursive html/* s3://guides.neo4j.com/intro/ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..7662e8e --- /dev/null +++ b/settings.gradle @@ -0,0 +1,5 @@ +rootProject.name = 'neo4j-guide' + +include 'restaurant-recommendation' +project(':restaurant-recommendation').projectDir = file('restaurant-recommendation') + diff --git a/templates/block_admonition.html.erb b/templates/block_admonition.html.erb old mode 100644 new mode 100755 index 4eb9fd9..215b430 --- a/templates/block_admonition.html.erb +++ b/templates/block_admonition.html.erb @@ -3,11 +3,11 @@ <% if @document.attr? :icons, 'font' %> -<% +<% elsif @document.attr? :icons %> -<%= @caption %><% +<%= attr 'textlabel' %><% else %> -
<%= @caption %>
<% +
<%= attr 'textlabel' %>
<% end %> <% diff --git a/templates/block_audio.html.erb b/templates/block_audio.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_colist.html.erb b/templates/block_colist.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_dlist.html.erb b/templates/block_dlist.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_example.html.erb b/templates/block_example.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_floating_title.html.erb b/templates/block_floating_title.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_image.html.erb b/templates/block_image.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_listing.html.erb b/templates/block_listing.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_literal.html.erb b/templates/block_literal.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_math.html.erb b/templates/block_math.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_olist.html.erb b/templates/block_olist.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_open.html.erb b/templates/block_open.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_page_break.html.erb b/templates/block_page_break.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_paragraph.html.erb b/templates/block_paragraph.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_pass.html.erb b/templates/block_pass.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_preamble.html.erb b/templates/block_preamble.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_quote.html.erb b/templates/block_quote.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_ruler.html.erb b/templates/block_ruler.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_sidebar.html.erb b/templates/block_sidebar.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_table.html.erb b/templates/block_table.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_toc.html.erb b/templates/block_toc.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_ulist.html.erb b/templates/block_ulist.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_verse.html.erb b/templates/block_verse.html.erb old mode 100644 new mode 100755 diff --git a/templates/block_video.html.erb b/templates/block_video.html.erb old mode 100644 new mode 100755 diff --git a/templates/document.html.erb b/templates/document.html.erb old mode 100644 new mode 100755 diff --git a/templates/embedded.html.erb b/templates/embedded.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_anchor.html.erb b/templates/inline_anchor.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_break.html.erb b/templates/inline_break.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_button.html.erb b/templates/inline_button.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_callout.html.erb b/templates/inline_callout.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_footnote.html.erb b/templates/inline_footnote.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_image.html.erb b/templates/inline_image.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_indexterm.html.erb b/templates/inline_indexterm.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_kbd.html.erb b/templates/inline_kbd.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_menu.html.erb b/templates/inline_menu.html.erb old mode 100644 new mode 100755 diff --git a/templates/inline_quoted.html.erb b/templates/inline_quoted.html.erb old mode 100644 new mode 100755 diff --git a/templates/section.html.erb b/templates/section.html.erb old mode 100644 new mode 100755 index 0503325..224ddab --- a/templates/section.html.erb +++ b/templates/section.html.erb @@ -1,5 +1,4 @@ <% slevel = @level.zero? && @special ? 1 : @level %> -<% puts("#{slevel} #{title}")%> <% if slevel == 2 %>
@@ -13,4 +12,4 @@ <% else %>

<%=title %>

<%= content %> -<% end %> \ No newline at end of file +<% end %>