diff --git a/preview-src/ads.adoc b/preview-src/ads.adoc deleted file mode 100644 index 160d1b84..00000000 --- a/preview-src/ads.adoc +++ /dev/null @@ -1,187 +0,0 @@ -= icon:graduation-cap[] Hardware and Software Requirements -Author Name -:idprefix: -:idseparator: - -:!example-caption: -:!table-caption: -:page-pagination: -:page-disabletracking: -// tag::theme[] -:page-theme: docs -// end::theme[] -// tag::search[] -:page-type: knowledgebase -:page-environment: macos -:page-programminglanguage: java -:page-neo4jversion: 3.5 -:page-product: NEOSEMANTICS -// end::search[] -// tag::meta[] -:description: This guide shows the different ways you can import data from a relational database to Neo4j. Completing this guide will give you the tools to choose how to import your relational data and transform it to the graph. -:keywords: one, two, three, four -// end::meta[] -// tag:discourse[] -// :page-comments: -// :page-topicid: 22863 -// end:discourse[] -:page-disabletracking: true -:page-newsletter: true -// tag::link[] -:page-ad-overline-link: {aura_signup} -:page-ad-overline: Neo4j Aura -:page-ad-title: Follow Along and Learn While Doing -:page-ad-description: Free forever, no credit card required. -:page-ad-link: {aura_signup} -:page-ad-underline-role: button -:page-ad-underline: Start on AuraDB -// :page-ad-image: https://s3.amazonaws.com/cdn.graphacademy.neo4j.com/tshirts/python-tshirt.jpg -// :page-ad-image: https://graphacademy.neo4j.com/courses/app-python/badge/ -// end::link[] - -.Goals -[abstract] -{description} - -.Prerequisites -[abstract] -You should be familiar with link:/developer/get-started/graph-database[graph database] concepts and the link:/developer/get-started/graph-database#property-graph[property graph model]. -It is also helpful to know the differences between link:/developer/graph-db-vs-rdbms/[relational and graph concepts] and their link:/developer/relational-to-graph-modeling/[data models]. - -[.procedures,%headers, cols="5,2,1"] -|=== -| Qualified Name | Type | Release - -| **apoc.agg.first** - -`apoc.agg.first(value)` - -returns first value - -| -+++ -Function -+++ -| -+++ -Full -+++ - -| link:#[apoc.import.csv icon:book[]] - -`apoc.import.csv(nodes, relationships, config)` - -imports nodes and relationships from the provided CSV files with given labels and types - -| -+++ -Procedure -+++ -| -+++ -Core -+++ - -|=== - -// tag::level[] -:level: Beginner -[role=expertise {level}] -{level} -// end::level[] - - - -[.discrete.ad] -== link:https://graphacademy.neo4j.com/[Learn with GraphAcademy^] - -image::https://graphacademy.neo4j.com/courses/app-python/badge/[float=left] - -[.discrete] -=== link:https://graphacademy.neo4j.com/courses/app-python/badge/[Building Neo4j Applications with Python^] - -In this course, we walk through the steps to integrate Neo4j into your Python projects. -We will follow the steps to create an instance of the Neo4j Python Driver, learn about sessions and transactions, and use that knowledge to build a REST API with Flask. - -link:https://graphacademy.neo4j.com/courses/app-python/badge/[Learn more^,role=button] -link:https://graphacademy.neo4j.com/courses/app-python/badge/[or a less aggressive text link^] - - -== Section with Ads - -[.discrete.ad.left] -== link:https://graphacademy.neo4j.com/[Floated Left^] - -// image::https://graphacademy.neo4j.com/courses/app-python/badge/[] - -[.discrete] -=== link:https://graphacademy.neo4j.com/courses/app-python/badge/[Building Neo4j Applications with Python^] - -In this course, we walk through the steps to integrate Neo4j into your Python projects. -We will follow the steps to create an instance of the Neo4j Python Driver, learn about sessions and transactions, and use that knowledge to build a REST API with Flask. - - -link:https://graphacademy.neo4j.com/courses/app-python/badge/[Learn more^,role=button] -link:https://graphacademy.neo4j.com/courses/app-python/badge/[or a less aggressive text link^] - -== Break out of Ad box - -Platonem complectitur mediocritatem ea eos. -Ei nonumy deseruisse ius. -Mel id omnes verear. -Vis no velit audiam, sonet <> eum ne. -*Prompta eripuit* nec ad. -Integer diam enim, dignissim eget eros et, ultricies mattis odio. -Vestibulum consectetur nec urna a luctus. -Quisque pharetra tristique arcu fringilla dapibus. -Curabitur ut massa aliquam, cursus enim et, accumsan lectus. - - -== Break out of box - -Platonem complectitur mediocritatem ea eos. -Ei nonumy deseruisse ius. -Mel id omnes verear. -Vis no velit audiam, sonet <> eum ne. -*Prompta eripuit* nec ad. -Integer diam enim, dignissim eget eros et, ultricies mattis odio. -Vestibulum consectetur nec urna a luctus. -Quisque pharetra tristique arcu fringilla dapibus. -Curabitur ut massa aliquam, cursus enim et, accumsan lectus. -Platonem complectitur mediocritatem ea eos. -Ei nonumy deseruisse ius. -Mel id omnes verear. -Vis no velit audiam, sonet <> eum ne. -*Prompta eripuit* nec ad. -Integer diam enim, dignissim eget eros et, ultricies mattis odio. -Vestibulum consectetur nec urna a luctus. -Quisque pharetra tristique arcu fringilla dapibus. -Curabitur ut massa aliquam, cursus enim et, accumsan lectus. - - -[.discrete.ad.right] -== link:https://graphacademy.neo4j.com/[Floated Right^] - -// image::https://graphacademy.neo4j.com/courses/app-python/badge/[] - -[.discrete] -=== link:https://graphacademy.neo4j.com/courses/app-python/badge/[Building Neo4j Applications with Python^] - -In this course, we walk through the steps to integrate Neo4j into your Python projects. -We will follow the steps to create an instance of the Neo4j Python Driver, learn about sessions and transactions, and use that knowledge to build a REST API with Flask. - - -link:https://graphacademy.neo4j.com/courses/app-python/badge/[Learn more^,role=button] -link:https://graphacademy.neo4j.com/courses/app-python/badge/[or a less aggressive text link^] - -== Break out again - -Platonem complectitur mediocritatem ea eos. -Ei nonumy deseruisse ius. -Mel id omnes verear. -Vis no velit audiam, sonet <> eum ne. -*Prompta eripuit* nec ad. -Integer diam enim, dignissim eget eros et, ultricies mattis odio. -Vestibulum consectetur nec urna a luctus. -Quisque pharetra tristique arcu fringilla dapibus. -Curabitur ut massa aliquam, cursus enim et, accumsan lectus. - diff --git a/preview-src/algorithms.adoc b/preview-src/algorithms.adoc deleted file mode 100644 index 73af931d..00000000 --- a/preview-src/algorithms.adoc +++ /dev/null @@ -1,22 +0,0 @@ -.Supported algorithm traits: -[.graph-variants, caption=] --- -[.supported] -<> - -[.not-supported] -<> - -[.allowed] -<> --- - -[discrete.glossary] -== Glossary - -[glossary] -[[directed]]Directed:: xref:introduction.adoc#introduction-algorithms-directed[Directed trait]. The algorithm is well-defined on a directed graph. - -[[undirected]]Undirected:: xref:introduction.adoc#introduction-algorithms-undirected[Undirected trait]. The algorithm is well-defined on an undirected graph. - -[[homogeneous]]Homogeneous:: xref:introduction.adoc#introduction-algorithms-homogeneous[Homogeneous trait]. The algorithm will treat all nodes and relationships in its input graph(s) similarly, as if they were all of the same type. If multiple types of nodes or relationships exist in the graph, this must be taken into account when analysing the results of the algorithm. diff --git a/preview-src/alpha.adoc b/preview-src/alpha.adoc deleted file mode 100644 index ca19c6ee..00000000 --- a/preview-src/alpha.adoc +++ /dev/null @@ -1,14 +0,0 @@ -= Alpha Content -:page-role: alpha - -[abstract] --- -Flags page as Alpha --- - -Alpha pages include the following: - -[.alpha-symbol] -[.tier-note] -This algorithm is in the alpha tier. -For more information on algorithm tiers, see <>. diff --git a/preview-src/applied-graph-algo-course-yelp.adoc b/preview-src/applied-graph-algo-course-yelp.adoc deleted file mode 100644 index 397f30dc..00000000 --- a/preview-src/applied-graph-algo-course-yelp.adoc +++ /dev/null @@ -1,34 +0,0 @@ -= Applied Graph Algo Course -:uri-yelp-dataset-agreement-pdf: https://s3-media3.fl.yelpcdn.com/assets/srv0/engineering_pages/bea5c1e92bf3/assets/vendor/yelp-dataset-agreement.pdf -:neo4j-version: 3.5 -:page-type: training-course-index -:page-pagination: next -:page-layout: training -:page-course-name: applied-algos -:page-theme: training - -We will start with an existing web application (a simple business reviews website written in React.js) populated with data from the Yelp public dataset in Neo4j. We then work to enhance the existing functionality of the application using graph algorithms. - -== Exercise - -Your exercise for this module is to get all the tools up and running and talking to each other. - -[#yelp-dataset-agreement] --- -Before creating a Yelp Neo4j Sandbox instance, you need to read and agree to the {uri-yelp-dataset-agreement-pdf}[Yelp Dataset License^]. --- - -. Create a https://sandbox.neo4j.com/?usecase=yelp[Yelp Neo4j Sandbox instance^,id=yelp-create-sandbox-link]. -*Note*: You must log in to the Neo4j Sandbox site. This may require you to register with Neo4j. -. In Yelp Sandbox you just created, click the *Open Neo4j Browser* button to open a Neo4j Browser for the Yelp database. You will be using this Neo4j Browser window throughout this course. -. In Neo4j Browser, complete the steps in the first Neo4j Browser Guide (:play applied_graph_algorithms), *Cypher Refresher*. -. Open the https://codesandbox.io/s/github/neo4j-contrib/training-v2/tree/master/Courses/AppliedGraphAlgorithms/react-app[React application in CodeSandbox^]. This is the initial version of our business reviews application. You will be using this Code Sandbox window throughout this course. -. In CodeSandbox: -.. Sign in to CodeSandbox with your github credentials. -.. Click Fork. -.. Edit the *.env* file by replacing the default environment variables with the credentials for your Yelp Neo4j Sandbox. The URL and credentials are available to you from your Yelp sandbox pane if you open the details of the pane by selecting arrow to the right of the *Open Neo4j Browser* button. -... Replace the value for REACT_APP_NEO4J_URI with the value of *Websocket Bolt URL* from the *Connection Details* tab of the Yelp Sandbox. -... Replace the value for REACT_APP_NEO4J_PASSWORD with the *Password* in the *Connection Details* tab of the Yelp Sandbox. -.. Save this file. -.. Click the refresh icon to connect the CodeSandbox Browser (on the right) to the database. -.. Confirm that you can now view data in the database by selecting a name in the drop down (initially selected with Dolores). Data should be retrieved for each user. diff --git a/preview-src/banner-note.adoc b/preview-src/banner-note.adoc deleted file mode 100644 index 3c4f9375..00000000 --- a/preview-src/banner-note.adoc +++ /dev/null @@ -1,20 +0,0 @@ -= Note banner -:page-theme: docs -:page-banner: note -:page-banner-text: Lorem ipsum dolor sit est. -:page-banner-link: https://neo4j.com/docs -:page-banner-link-text: Link text - - -[abstract] --- -Add page banner attributes to a page to display a message between the header and the toolbar. --- - -[source] ----- -:page-banner: note -:page-banner-text: Lorem ipsum dolor sit est. -:page-banner-link: https://neo4j.com/docs -:page-banner-link-text: Link text ----- \ No newline at end of file diff --git a/preview-src/banner-warning.adoc b/preview-src/banner-warning.adoc deleted file mode 100644 index dafd780e..00000000 --- a/preview-src/banner-warning.adoc +++ /dev/null @@ -1,20 +0,0 @@ -= Warning banner -:page-theme: docs -:page-banner: warning -:page-banner-text: Lorem ipsum dolor sit est. -:page-banner-link: https://neo4j.com/docs -:page-banner-link-text: Link text - - -[abstract] --- -Add page banner attributes to a page to display a message between the header and the toolbar --- - -[source] ----- -:page-banner: warning -:page-banner-text: Lorem ipsum dolor sit est. -:page-banner-link: https://neo4j.com/docs -:page-banner-link-text: Link text ----- \ No newline at end of file diff --git a/preview-src/beta.adoc b/preview-src/beta.adoc deleted file mode 100644 index f468c07b..00000000 --- a/preview-src/beta.adoc +++ /dev/null @@ -1,14 +0,0 @@ -= Beta Content -:page-role: beta - -[abstract] --- -Flags page as Beta --- - -Alpha pages include the following: - -[.beta-symbol] -[.tier-note] -This algorithm is in the beta tier. -For more information on algorithm tiers, see <>. diff --git a/preview-src/bibliography.adoc b/preview-src/bibliography.adoc deleted file mode 100644 index 8a2b9a88..00000000 --- a/preview-src/bibliography.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Use of `bibliography` - -Citations with xreftext: <>, <>. - -Citations without xreftext (ID only): <>. - -[bibliography] -== References - -* [[[Brandes2001, 1]]] Brandes, Ulrik. "A faster algorithm for betweenness centrality." _Journal of mathematical sociology_ 25, no. 2 (2001): 163-177. link:https://snap.stanford.edu/class/cs224w-readings/brandes01centrality.pdf[]. -* [[[Brandes2007, 2]]] Brandes, Ulrik, and Christian Pich. "Centrality estimation in large networks." _International Journal of Bifurcation and Chaos_ 17, no. 07 (2007): 2303-2318. link:https://www.uni-konstanz.de/mmsp/pubsys/publishedFiles/BrPi07.pdf[]. -* [[[Freeman1977]]] Freeman, Linton C. "A set of measures of centrality based on betweenness." _Sociometry_ (1977): 35-41. diff --git a/preview-src/challenge.adoc b/preview-src/challenge.adoc deleted file mode 100644 index c58052da..00000000 --- a/preview-src/challenge.adoc +++ /dev/null @@ -1,38 +0,0 @@ -= Challenge -Author Name -:idprefix: -:idseparator: - -:!example-caption: -:!table-caption: -:page-disabletracking: -// tag::theme[] -:page-theme: developer -// end::theme[] -// tag::search[] -:page-type: knowledgebase -:page-environment: macos -:page-programminglanguage: java -:page-neo4jversion: 3.5 -:page-product: NEOSEMANTICS -// end::search[] -// tag::meta[] -:description: This guide shows the different ways you can import data from a relational database to Neo4j. Completing this guide will give you the tools to choose how to import your relational data and transform it to the graph. -:keywords: one, two, three, four -// end::meta[] -// tag:discourse[] -// :page-comments: -// :page-topicid: 22863 -// end:discourse[] -:page-disabletracking: true -:page-includedriver: true - - -[.arrange] -== Arrange the Query - -So let's take our Movie graph for example, we would like to find a node with a `:Person` label and a name property with the value _Tom Hanks_. -Arrange the parts of the query below to form a query. -Once you are done, click **Run Query** to see whether you have got it right... - -[source,cypher] -MATCH (p:Person {name: "Tom Hanks"}) RETURN p LIMIT 10 diff --git a/preview-src/cheat-sheet.adoc b/preview-src/cheat-sheet.adoc deleted file mode 100644 index 0fc724a4..00000000 --- a/preview-src/cheat-sheet.adoc +++ /dev/null @@ -1,495 +0,0 @@ -= Cypher Cheat Sheet -:neo4j-docs-base-uri: https://neo4j.com/docs -:page-theme: cheat-sheet -:page-slug: cheat-sheet -// :page-show-labels: true -:page-no-toolbar: true - - -== How the cheat sheet works - -// this has no product, which means it matches all products -=== Example structure - -===== -[source, cypher, role=noheader] ------ -[.neo4j-ee] <1> -==== <2> -[source, cypher, role=noheader] <3> ----- -MATCH (n) -RETURN n AS node ----- - -[.description] <4> --- <5> -Description - -More description --- - -[.extra] <6> --- -Additional content, to be used sparingly because this is a cheat sheet or quick reference, not a full Cypher reference manual. --- -==== ------ - -[.description] --- -<1> Add a role for each cheat-sheet that the example applies to. Leave blank if it applies in all cases. -<2> Use an example block to contain the Cypher example and description. -<3> Add an optional block for a Cypher example, specifying `[source, cypher,`role=noheader`]. -<4> Add a required description block. -<5> If the description consists of more than one paragraph of text, use an open block. -<6> If you need to, you can add `extra` content, which is displayed below the example code and description. --- -===== - - -=== Playbook configuration - -===== -[source, cypher, role=noheader] ------ -asciidoc: - attributes: - page-cheatsheet-product: Neo4j <1> - page-cheatsheet-products: <2> - - name: 'Neo4j Enterprise Edition' <3> - label: 'Enterprise Edition' <4> - class: 'neo4j-ee' <5> - default: true <6> - - name: 'Neo4j Community Edition' - class: 'neo4j-ce' - - name: 'Deprecated' - class: 'deprecated' - label-only: true <7> ------ - -[.description] --- -<1> Add a product name to displayed before `Version` in the version selector. The default value is `Product`. -<2> Add a `page-cheatsheet-products` section to the playbook to define the different views that a user can choose from. In this example we've added two views: Neo4j Enterprise Edition and Neo4j Community Edition. -<3> Add a name for each view. This text is displayed in the dropdown that you use to select which Cheat Sheet you want to view. -<4> [Optional] Add label text. When an example is not applicable in all views, a label is displayed to indicate which views it applies to. If no `label` value is specified, the value of `name` is used. -<5> Specify a class for each view. This is used to add a role to the example block. For example, the class `neo4j-ee` is specified by `[.neo4j-ee]`. -<6> Specify a default view. This is the view that is displayed when the page is loaded. -<7> If you want to display a label for some entries without that label appearing in the dropdown, you can use the `label-only` attribute. In this example, entries that have the `[.deprecated]` role will have the `Deprecated` label displayed, but 'Deprecated' is not an option you can select from the dropdown. In this preview build, both `Configuration` and `Deprecated` have been added as `label-only` views. --- -===== - - -== Section title - - -=== Subsection title - - -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -Text describing the example. This example has no role, and therefore no labels. It is displayed in all views. -==== - -[.neo4j-ee] -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -This example only applies to Neo4j Enterprise Edition and is marked with the `[.neo4j-ee]` role. -==== - - -[.read] -== Read queries - - -=== Read queries subsection - - -[.neo4j-ce.neo4j-ee.aura-dbe.aura-dsp.aura-dbp.aura-dse] -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -This example only applies to Neo4j Enterprise Edition and is marked with the `[.neo4j-ee]` role. -==== - - -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -Text describing the example. This example has no role, and therefore no labels. It is displayed in all views. -==== - -[.neo4j-ee] -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -This example only applies to Neo4j Enterprise Edition and is marked with the `[.neo4j-ee]` role. -==== - - -== Write queries - - -=== Write queries subsection - - -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -Text describing the example. This example has no role, and therefore no labels. It is displayed in all views. -==== - - -[.neo4j-ee] -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -This example only applies to Neo4j Enterprise Edition and is marked with the `[.neo4j-ee]` role. -==== - - -=== link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/match/[Title with link^] - - -==== -[.description] -This entry has no example code. -==== - - -==== -[.description] --- -This entry has no example code. - -It contains: - -- more than one paragraph -- a list - -Therefore it is formatted as an open block --- -==== - - -[.neo4j-ee] -==== -[source, cypher, role=noheader] ----- -MATCH (n) -RETURN n AS node ----- - -[.description] -Displayed for Neo4j Enterprise Edition - -[.extra] --- -Some additional content. -Can be any arbitrary asciidoc blocks and elements. - -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Neo4j -| Graphy -|=== --- -==== - - -[.neo4j-ee] -==== -[source, cypher, role=noheader] ----- -MATCH (n) -RETURN n AS node ----- - -[.description] -Displayed for Neo4j Enterprise Edition -==== - - -==== -[source, cypher, role=noheader] ----- -MATCH (n:A&B) -RETURN n.name AS name ----- - -[.description] -This example is displayed in all views. -==== - - -[.aura-dbe] -==== -[source, cypher, role=noheader] ----- -MATCH (n:A&B) -RETURN n.name AS name ----- - -[.description] -This example is displayed for AuraDB Virtual Dedicated Cloud (`[.aura-dbe]`) -==== - - -[.aura-dbf.aura-dbe] -==== -[source, cypher, role=noheader] ----- -MATCH (n:A|B) -RETURN n.name AS name - ----- - -[.description] -This example is displayed for both AuraDB Free and AuraDB Virtual Dedicated Cloud. -==== - - - -== Not on Aura - - -[.neo4j-ce.neo4j-ee] -=== Not on Aura examples - -==== -[.description] --- -This section applies to Neo4j Community Edition and Neo4j Enterprise Edition. It does not apply to any flavour of Aura. -So, we've added two roles: `[.neo4j-ce.neo4j-ee]`. - -When generating a Neo4j (ie not Aura) cheat sheet, we would only add those two versions to the playbook: - -[source, asciidoc, role=noheader] ----- -- name: 'Neo4j Community Edition' - class: 'neo4j-ce' -- name: 'Neo4j Enterprise Edition' - class: 'neo4j-ee' - default: true ----- - -In this example the labels would _not_ be displayed. - -If we add any other versions to the playbook, such as AuraDB Virtual Dedicated Cloud, the labels will be displayed when viewing the examples for Neo4j Community Edition or Neo4j Enterprise Edition, but the content will be hidden entirely when viewing the AuraDB Virtual Dedicated Cloud examples. --- -==== - -[.neo4j-ce] -== Neo4j Community Edition Only - - -=== Labeling example - - -==== -[.description] -The title of this section has a `[.neo4j-ce]` role. All subsections and examples within this section will be treated as Neo4j Community Edition only. -Labels are not automatically added to each subsection or example, but they are all hidden when a cheat sheet view other than Neo4j Community Edition is selected. -==== - - -==== -[source, cypher, role=noheader] ----- - ----- - -[.description] -This example is not explicitly marked as Neo4j Community Edition, but it is in a section that is marked as Neo4j Community Edition. -It is displayed or hidden accordingly. -==== - - -[.deprecated] -== Deprecated - - -[.deprecated] -=== Deprecated examples - - -[.deprecated] -==== -[.description] -This section contains deprecated examples. The section has a `[.deprecated]` role, and the subsection and examples also have the role. -That's a lot of labels. -==== - - -[.deprecated] -==== -[source, cypher, role=noheader] ----- -(neo4j:Neo4j {name: "Neo4j"}) -(neo4j)-[:INCLUDES]->(browser:Product {name: "Neo4j Browser"}) -(browser)-[:HAS]->(:Feature {name: "Cypher"}) -(browser)-[:HAS]->(:Feature {name: "Dev Tools"}) -(browser)-[:HAS]->(:Feature {name: "Visualization"}) -(neo4j)-[:CONNECTS_WITH]->(drivers:Drivers {name: "Drivers"}) -(drivers)-[:SUPPORTS]->(:Language {name: "Java"}) ----- - -[.description] -Deprecated cypher example. -==== - - -== Functions - - -=== Temporal functions - - -==== -[source, cypher, role=noheader] ----- -date('2018-04-05') ----- - -[.description] -Returns a date parsed from a string. -==== - - -==== -[source, cypher, role=noheader] ----- -localtime('12:45:30.25') ----- - -[.description] -Returns a time with no time zone. -==== - - -==== -[source, cypher, role=noheader] ----- -time('12:45:30.25+01:00') ----- - -[.description] -Returns a time in a specified time zone. -==== - - -==== -[source, cypher, role=noheader] ----- -localdatetime('2018-04-05T12:34:00') ----- - -[.description] -Returns a datetime with no time zone. -==== - - -==== -[source, cypher, role=noheader] ----- -datetime('2018-04-05T12:34:00[Europe/Berlin]') ----- - -[.description] -Returns a datetime in the specified time zone. -==== - - -==== -[source, cypher, role=noheader] ----- -datetime({epochMillis: 3360000}) ----- - -[.description] -Transforms 3360000 as a UNIX Epoch time into a normal datetime. -==== - - -[.neo4j-ce.aura-dbe] -==== -[source, cypher, role=noheader] ----- -date({year: $year, month: $month, day: $day}) ----- - -[.description] -All of the temporal functions can also be called with a map of named components. -This example returns a date from year, month and day components. -Each function supports a different set of possible components. -==== - - -==== -[source, cypher, role=noheader] ----- -datetime({date: $date, time: $time}) ----- - -[.description] -Temporal types can be created by combining other types. -This example creates a datetime from a date and a time. -==== - - -==== -[source, cypher, role=noheader] ----- -date({date: $datetime, day: 5}) ----- - -[.description] -Temporal types can be created by selecting from more complex types, as well as overriding individual components. This example creates a date by selecting from a datetime, as well as overriding the day component. -==== - - -==== -[source, cypher, role=noheader] ----- -WITH date('2018-04-05') AS d -RETURN d.year, d.month, d.day, d.week, d.dayOfWeek ----- - -[.description] -Accessors allow extracting components of temporal types. -==== diff --git a/preview-src/contribute.adoc b/preview-src/contribute.adoc deleted file mode 100644 index 6eb34f48..00000000 --- a/preview-src/contribute.adoc +++ /dev/null @@ -1,124 +0,0 @@ -= Contributing to Neo4j -:page-layout: center-align -:author: Neo4j -:category: development -:tags: community, contributions, share - -[#neo4j-contribute] -Looking for a place to contribute to the Neo4j ecosystem? -This is a great place to start. -Here you will find guides from Neo4j’s community of contributors. - -[#finding-help] -== Help Others in the Community - -Want to help others? - -There are a number of great resources the Neo4j community uses to get quick help from graph database experts. -Don't hesitate to ask when you’re stuck and looking for help. Also, if you're familiar with a particular topic area, please jump in and lend a hand for your fellow graphistas. - -The primary home for Neo4j community discussion is our https://community.neo4j.com[Neo4j Forum^]. - -We also have some other places the community asks questions. - -* http://stackoverflow.com/questions/tagged/neo4j[Neo4j on StackOverflow^] -* http://twitter.com/neo4j[Social: Neo4j on Twitter^] -* https://discord.gg/neo4j[Discord Chat^] -* http://github.com/neo4j/neo4j/issues[Raise Issues: GitHub Issues^] - -[#ask-question-tips] -== Tips for Asking Good Questions - -If you have technical questions, we would love to help you find the answers to them! Please help us help you by following the guidelines below. - -*Write a title that summarizes the specific problem* + -The title may be the first and the last thing that potential viewers see of your post. -Make it count. Make it describe the problem, not your current state of mind. -ALL CAPS and lots of question and exclamation marks are an indication that you wear your underwear on your head ??? not that you have an urgent problem !!! - -*Choose the correct "category" and add the relevant "tags"* + -Both of these serve to narrow down the problem area. -A database creation error on the "Neo4j Desktop" is quite possible, it is almost impossible if installed with a Yum package. -For installation questions specifying the OS is definitely useful. And so on. - -*Explain First* + -What do you want to accomplish? What is the problem? -What have you tried (you have tried something, right...right?)? -Can you reproduce the situation? Which steps need to be followed to get there? - -*Code Second* + -For some weird reason, Verdana 12pt does horrible things to code. -There are a ton of ways to add readable code in your posts, the easiest is to select it and use the preformatted text icon. -Reading hundreds of lines of code and Cypher-queries is the favorite hobby of most of the visitors of the forum. -Just in case it is one of the others that is trying to help you, provide the code that demonstrates the issue and no more. - -*Proofread* + -Are you ready to press "Create"? Take a deep breath. Exhale. -Go once more over what you've just written. Does it look like the kind of question you could answer? - -*I'm not sure my English is good enough...can I get help?* + -Just do the best you can! While technical questions should be in English, there are Local Groups on the forum. -Not only are those good for finding out about local activities, but there might be somebody else there that knows (for example) South-West England English and can help you translate it into six o'clock news English! - -*Be Patient - Be Friendly - Be Polite - Help someone else in turn* + -Somebody is going to spend some of the single most valuable resources for a human on your question. Time. -Giving an indication that you understand the value of that is the least you can do. - -[#speaking] -== Sharing your Love of Graphs - -No matter where you live in the world, there are plenty of ways to share your love of graphs -and help others understand the importance of relationships. - -With thousands of technology and business *conferences* occuring every year around the world, -you can present to your peers and become a recognized expert in your field. Neo4j, via the -link:/speaker-program/[*Neo4j Speaker Program*], can also help and reimburse -travel expenses for community members speaking at many of the top conferences. - -There are also hundreds of face-to-face https://www.meetup.com/topics/neo4j/[*Neo4j meetup groups*] in communities -around the world. Many of these meetup groups regularly look for speakers to share their stories. - -The https://www.meetup.com/Neo4j-Online-Meetup/[*Neo4j Online Meetup*] is a way for you to meet the global community online and share your story. - -We select talks for the Online Meetup and stories for our link:/tag/twin4j/[*Developer Newsletter*] from https://community.neo4j.com/[*Neo4j Community Forum*]. To submit your story, post it in the `Projects & Collaboration` (if including a link to github or website) or `Community Content & Blogs` (if linking to a blog post, -slideshow, video, or article) categories. - -[#contributing] -== Other Ways to Contribute - -The Neo4j project is an open source effort to bring fast, complex data storage and processing to life. -Every form of help is highly appreciated by the community. -Note that you can contribute to Neo4j also by providing documentation or giving feedback on the current documentation. -Basically, in all the places where you can get help, there is also room for contributions. - -* link:/developer/contributing-code/[Contributing Code^] -* link:/developer/cla/[Contributors License Agreement^] -* GitHub http://github.com/neo4j/neo4j/issues[Issues^] and http://github.com/neo4j/neo4j/pulls[Pull Requests^] -* See the https://github.com/neo4j/neo4j/graphs/contributors[list of contributors^] - -[#develop-neo4j] -== Tools for Developing Neo4j - -We are happy users of the following tools that we use daily to develop Neo4j. - -* IDE: https://www.jetbrains.com/idea/[IntelliJ Idea by JetBrains^] - *Thank you so much for the https://www.jetbrains.com/idea/buy/choose_edition.jsp?license=OPEN_SOURCE[OSS license^]!* and Eclipse -* Build System: https://www.jetbrains.com/teamcity/[TeamCity by JetBrains^] - *Thank you so much for the https://www.jetbrains.com/teamcity/buy/choose_edition.jsp?license=OPEN_SOURCE[OSS license^]!* -* Profiler: Yourkit, VisualVM, jvmtop, Java Mission Control, Flight Recorder -* Version Control: Git & http://github.com/neo4j[GitHub^] -* Issue Management: Trello and http://github.com/neo4j/neo4j/issues[GitHub issues^] -* Team Communication: Neo4j Community Site, Discord, Google Hangouts, and Zoom -* Pair Programming: Team Viewer, join.me -* Documents: Google Docs -* Manual, GraphGists, Presentations: http://asciidoctor.org[AsciiDoctor^] -* Programming Language: Java, Build-Tool - Maven -* Libraries - JVM: Scala, Parboiled, Google Collections, JMH, Jetty, Jersey, Jackson, Apache Commons, JUnit -* Libs & Tools: Javascript: D3.js, Angular.js, Grunt, Bower - -[#integration-dev] -== Tools, Libraries, and Drivers - -Neo4j is supported by a rich ecosystem of libraries, tools, drivers and guides provided by partners, users and community contributors. -We want to give an overview about what is available and link to the original sources. -We try to focus on the freely available solutions here and provide links to commercial options where appropriate. - -Read more about it in our link:/developer/integration/[Integrations section]. \ No newline at end of file diff --git a/preview-src/deprecated.adoc b/preview-src/deprecated.adoc deleted file mode 100644 index 72c42a78..00000000 --- a/preview-src/deprecated.adoc +++ /dev/null @@ -1,39 +0,0 @@ -[role=deprecated] -= This entire topic is deprecated -:page-role: deprecated - -[abstract] --- -Flags all sections as Deprecated --- - -All headers have 'Deprecated' appended. - -== Deprecated Heading 1 - -Lorem ipsum - -Simple paragraph. - -[.deprecated] -Simple paragraph marked as deprecated. - - -[.deprecated] - -== Deprecated Heading 2 - -Lorem ipsum - -=== Deprecated Heading 2.1 - -Lorem ipsum - -==== Deprecated Heading 2.2 - -Lorem ipsum - -== Deprecated Heading 3 - -Lorem ipsum - diff --git a/preview-src/developer.adoc b/preview-src/developer.adoc deleted file mode 100644 index a08c3855..00000000 --- a/preview-src/developer.adoc +++ /dev/null @@ -1,231 +0,0 @@ -= Neo4j Developer Guides -:page-layout: landing -:page-theme: developer -:page-toclevels: -1 - - -[.hero] -== Neo4j Developer Resources - -All you need to be happy and successful with Neo4j - -[.buttons] -* link:/developer/language-guides/?role=developer[I'm a Developer] -* link:/developer/graph-data-science/?role=datascientist[I'm a Data Scientist] -* link:/developer/in-production/?role=administrator[I'm an Administrator] - - -[.secondary.leading.flex-container.no-arrows] - -== Getting Started - -[.column] -=== 1. Run Neo4j - -Start by link:/try-neo4j/?ref=developer-lp[using Neo4j Sandbox for free^]. -Alternatively: - -* link:#[Install Neo4j Desktop] -* link:#[Use Neo4j Aura in the Cloud] -* link:#[Run with Docker] -* link:#[The Neo4j Graph Platform] - -[.column] -=== 2. Query Data - -Get an example data set, or model and import your own data. -Then query your graph to solve your problem. - -* link:#[The Cypher Query Language] -* link:#[Graph Data Modeling] -* link:#[Importing Data into Neo4j] - -[.column] -=== 3. Build your application - -Use the link:#[Neo4j tools] to access your data or develop an application your favorite programming language. - - -* link:#[Drivers & Language Guides] -* link:#[Neo4j Browser], link:#[Neo4j Bloom] -* link:#[Graph Visualization] - -== What is a Graph Database (in under 10 Minutes) - -video::REVkXVxvMQE[youtube] - -[.secondary.flex-container.use-cases.no-arrows] -== Start with an Example - -// * Fraud Detection & Analytics -// * Network and Database Infrastructure Management -// * Recommendation Engines -// * Master Data Management -// * Social Media and Social Network Graphs -// * Identity and Access Management - - -[.column] -// === Social Networking - -// image:diagram.png[JavaScript & Node.js] - -// Joe knows Sally, and Sally knows Anna. Bob is excluded from the result because, in addition to being a 2nd-degree friend through Sally, he's also a first-degree friend. -// Pad the content out by a couple of lines to even things up. - -// link:#[Create a Free Social Sandbox, role=more information] - -=== Movie Recommendations - -image:https://neo4jsandbox.com/img/recommendations-icon-pink.png[Create a Movie Recommendations Sandbox,link="https://sandbox.neo4j.com/?usecase=recommendations&ref=developer-lp"] - -Generate personalized real-time recommendations using a dataset of movie reviews. - -// link:https://sandbox.neo4j.com/?usecase=movies[Create a free Movies Sandbox, role=more information^] -link:https://sandbox.neo4j.com/?usecase=recommendations&ref=developer-lp[Create a Movie Recommendations Sandbox, role=more information^] - - - -[.column] -=== Network Management - -image:https://neo4jsandbox.com/img/network-management-icon-grey.png[Create a Neo4j Network Management Sandbox,link="https://sandbox.neo4j.com/?usecase=recommendations&ref=developer-lp"] - -Dependency and root cause analysis for network and IT management. - - -link:https://sandbox.neo4j.com/?usecase=network-management&ref=developer-lp[Create a Network Management Sandbox, role=more information^] - -[.column] -=== Fraud Detection - -image:fraud-detection-icon.png[Create a Fraud Detection Sandbox,link="https://sandbox.neo4j.com/?usecase=recommendations&ref=developer-lp"] - -Fraud detection with a financial transactions dataset, the Neo4j Graph Data Science Library, and Neo4j Bloom visualization. - -link:https://sandbox.neo4j.com/?usecase=fraud-detection&ref=developer-lp[Create a Fraud Detection Sandbox, role=more information] - - -[.discrete.secondary] -== GraphGist Project - -link:https://sandbox.neo4j.com/[Explore the other Sandbox Examples^, role=button] -link:/graphgists/[View 100+ Graph examples by Industry and Use Case^, role=button]   - - -// [.secondary.flex-container.languages] -// == Building Applications - -// [.column] -// === Java - -// image:java.png[Java] - -// * link:#[Neo4j Java Example] -// * link:#[Spring Data Neo4j] -// * link:#[Procedures and Functions] - -// [.column] -// === Node.js - -// image:javascript.png[JavaScript & Node.js] - -// * link:#[Neo4j JavaScript Example] -// * link:#[TypeScript] - -// [.column] -// === .NET - -// image:net.png[.NET] - -// * link:#[Neo4j .NET Example] -// * link:#[Neo4jClient] - -// [.column] -// === Python - -// image:python.png[Python] - -// * link:#[Neo4j Python Example] -// * link:#[Py2Neo] - -// [.column] -// === Go - -// image:go.png[Go] - -// * link:#[Neo4j Go Example] - - -// [.community-language] -// === Community Drivers - -// link:#[Ruby] | link:#[Perl] | link:#[PHP] | link:#[Erlang] - - -== Code Examples by Language - -Neo4j officially supports drivers for link:#[.Net], link:#[Java], link:#[Node.js], link:#[GoLang] and link:#[Python]. -Our community contributors provide many more, including link:#[PHP], link:#[Ruby], link:#[R], link:#[Erlang] and link:#[Clojure]. - -[.tabs] -[source,Java] ----- -include::https://raw.githubusercontent.com/neo4j-graph-examples/template/main/code/java/Example.java[] ----- - -.Node.js -[source,javascript] ----- -include::https://raw.githubusercontent.com/neo4j-graph-examples/template/main/code/javascript/example.js[] ----- - -[source,Python] ----- -include::https://raw.githubusercontent.com/neo4j-graph-examples/template/main/code/python/example.py[] ----- - -[source,Go] ----- -include::https://raw.githubusercontent.com/neo4j-graph-examples/template/main/code/go/example.go[] ----- - -..NET -[source,c] ----- -include::https://raw.githubusercontent.com/neo4j-graph-examples/template/main/code/csharp/Example.cs[] ----- - -You can learn more in our link:#[Drivers & Language Guides] or link:https://github.com/neo4j-examples[view example projects on Github, role=more information] - -== Neo4j Community Forum - -If you're ever stuck and need help, head over to the link:https://community.neo4j.com[Neo4j Community Site^]. -We have an active community of experts who are more than happy to answer your questions. - -Why not join our community and link:https://community.neo4j.com/c/general/introduce-yourself/7[introduce yourself]? -Do you have a side-project or idea and would like to link:https://community.neo4j.com/c/projects-collaboration/9[find collaborators^]? - -[.flex-container.secondary.no-bullets] -== Resources for Learning Neo4j - -[.column] -=== Learn - -* link:/graphacademy/online-training[Online Training^] -* link:/graphacademy/neo4j-certification/[Neo4j Certification^] -* link:https://medium.com/neo4j[Developer Blog^] - -[.column] -=== Watch - -* link:#[Intro Video Series] -* link:https://youtube.com/neo4j[Neo4j YouTube Channel^] -* link:https://neo4j.com/developer/online-meetup/[Livestreams on Twitch^] - -[.column] -=== Interact - -* link:https://meetup.com/Neo4j-Online-Meetup/[Online Meetups^] -* link:https://stackoverflow.com/questions/tagged/neo4j[Stack Overflow^] -* link:https://twitter.com/neo4j[Twitter^] diff --git a/preview-src/docs-explainer.adoc b/preview-src/docs-explainer.adoc deleted file mode 100644 index 7f0ef340..00000000 --- a/preview-src/docs-explainer.adoc +++ /dev/null @@ -1,174 +0,0 @@ -= Import your data -:page-layout: docs-ndl -:page-theme: docs -:page-role: explainer -:page-show-home-link: true -:page-hide-nav-title: true -// :page-disablefeedback: true -:page-toclevels: 0 - - -ifndef::backend-pdf[] -++++ -
- -
-++++ -endif::[] - - - -[.cards.selectable] -== How to use your own data on a graph database - -This section is designed to help you learn how to import various types of data into Neo4j. From JSON to APIs to another database, you can retrieve data from nearly any source and use it to populate your graph. - - -[role=label--new-5.12] -=== `LOAD CSV` -[.icon] -image:icons/ndl/icon-import.svg[] - -[.description] -Use Cypher for importing bulk data into Neo4j. Suited for non-admin users. - -[.link] -link:https://www.neo4j.com/docs/cypher-manual/current/clauses/load-csv/[Load CSV] - - -[.labs.label--labs] -=== From relational into graph - -[.icon] -image:icons/ndl/icon-csvtodb.svg[] - -[.description] -Learn how to translate and migrate tabular data and relational datasets into a graph database. - -[.link] -link:https://www.neo4j.com/docs/data-import/relational-to-graph-import/[Relational to graph] - - -[.not-selectable] -=== Neo4j Connectors - -[.icon] -image:icons/ndl/icon-connectors.svg[] - -[.description] -Learn how to use connectors to connect data from various sources into Neo4j. - -[.link] -link:https://www.neo4j.com/docs/connectors/[Connectors] - - -[.label--graph-academy.label--featured] -=== Graph Academy - -[.icon] -image:icons/ndl/icon-neo4j.svg[] - -[.description] -Start using Neo4j's tool for importing data and get started quickly with testing and prototyping. - -[.link] -link:https://www.neo4j.com/docs/data-importer/current/[Data importer] - -=== Neo4j Admin Import - -[.icon] -image:icons/ndl/icon-admin.svg[] - -[.description] -Use Neo4j admin import for initial loading of large amounts of data. - -[.link] -link:https://www.neo4j.com/docs/operations-manual/current/tools/neo4j-admin/neo4j-admin-import/#import-tool-full[Import admin] - -=== APOC - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.description] -Learn how to import data from various data formats, including JSON, XML, and XLS using the APOC library. - -[.link] -link:https://www.neo4j.com/docs/apoc/current/import/[Import data using APOC Core] - - -[.cards.selectable] -== Keep exploring - - -[.graph-academy.label--graph-academy.label--featured] -=== GraphAcademy - -[.icon] -image:icons/ndl/icon-graphacademy.svg[] - -[.description] -Learn how to import CSV data into Neo4j using Cypher. - -[.link] -link:https://graphacademy.neo4j.com/courses/importing-cypher/[GraphAcademy: Importing CSV data into Neo4j] - - -=== Import CSV data with Neo4j Desktop - -[.icon] -image:icons/ndl/icon-import.svg[] - -[.description] -Learn how to use CSV files to import data to a graph with Neo4j Desktop. - -[.link] -link:https://www.neo4j.com/docs/getting-started/appendix/tutorials/guide-import-desktop-csv/[How-To: Import CSV data with Neo4j Desktop] - - -=== Importing JSON data from a REST API into Neo4j - -[.icon] -image:icons/ndl/icon-neo4j.svg[] - -[.description] -See techniques for loading data from JSON-based REST APIs into Neo4j. - -[.link] -link:https://www.neo4j.com/docs/getting-started/data-import/json-rest-api-import/[Importing JSON data from a REST API into Neo4j] - - - -[.next-steps] -== Keep exploring - -Here are some recommended resources start importing your data: - -* link:https://graphacademy.neo4j.com/courses/importing-cypher/[GraphAcademy: Importing CSV data into Neo4j] -+ -Learn how to import CSV data into Neo4j using Cypher. - -* link:https://www.neo4j.com/docs/getting-started/appendix/tutorials/guide-import-desktop-csv/[How-To: Import CSV data with Neo4j Desktop] -+ -Learn how to use CSV files to import data to a graph with Neo4j Destktop. - -* link:https://www.neo4j.com/docs/getting-started/data-import/json-rest-api-import/[Importing JSON data from a REST API into Neo4j] -+ -See techniques for loading data from JSON-based REST APIs into Neo4j. - -[.next-steps] -== Keep exploring - -Here are some recommended resources start importing your data: - -. link:https://graphacademy.neo4j.com/courses/importing-cypher/[GraphAcademy: Importing CSV data into Neo4j] -+ -Learn how to import CSV data into Neo4j using Cypher. - -. link:https://www.neo4j.com/docs/getting-started/appendix/tutorials/guide-import-desktop-csv/[How-To: Import CSV data with Neo4j Desktop] -+ -Learn how to use CSV files to import data to a graph with Neo4j Destktop. - -. link:https://www.neo4j.com/docs/getting-started/data-import/json-rest-api-import/[Importing JSON data from a REST API into Neo4j] -+ -See techniques for loading data from JSON-based REST APIs into Neo4j. diff --git a/preview-src/docs-hub.adoc b/preview-src/docs-hub.adoc deleted file mode 100644 index 792a443a..00000000 --- a/preview-src/docs-hub.adoc +++ /dev/null @@ -1,104 +0,0 @@ -= Neo4j Tools -:page-theme: docs -:page-role: hub -:page-layout: docs-ndl -:page-show-home-link: true -:page-hide-nav-title: true -// :page-disablefeedback: true -:page-toclevels: -1 - -[.cards] - -== Developer tools documentation - -Use Neo4j tools to query and manage your databases, import data, and create graphical visualizations. - -=== Neo4j Bloom/Explore - -[.icon] -image:icons/ndl/icon-scientist.svg[] - -[.description] -Visualize and explore graph data using natural language search and an intuitive and graphical interface. - -[.link] -link:{docs-home}/bloom-user-guide/[Neo4j Bloom] + -link:{docs-home}/aura/preview/explore/introduction/[Explore (Aura)] - -=== Neo4j Browser/Query - -[.icon] -image:icons/ndl/icon-scientist.svg[] - -[.description] -Write and execute Cypher queries and visualize the results in nodes and relationships. - -[.link] -link:{docs-home}/browser-manual/[Neo4j Browser] + -link:{docs-home}/aura/preview/query/introduction/[Query (Aura)] - -[.selectable] - -=== Neo4j Data Importer - -[.category] -Neo4j Data Importer - -[.icon] -image:icons/ndl/icon-scientist.svg[] - -[.description] -Learn how to model and import data to your Neo4j database. - -[.link] -link:{docs-home}/data-importer[] -link:{docs-home}/data-importer[] - -[.selectable] - -=== Neo4j Desktop - -[.category] -Neo4j Desktop - -[.icon] -image:icons/ndl/icon-scientist.svg[] - -[.description] -Learn how to experience Neo4j on your local desktop. - -[.link] -link:{docs-home}/desktop-manual[] - -[.selectable] - -=== Neo4j Ops Manager - -[.icon] -image:icons/ndl/icon-scientist.svg[] - -[.category] -Neo4j Ops Manager - -[.description] -Learn how to monitor, administer, and operate all of the Neo4j DBMSs in an Enterprise with Neo4j Ops Manager. - -[.link] -link:{docs-home}/ops-manager[] - -[.display.next-steps] -== Keep exploring - -Here are some recommended resources to get started with data visualization: - -. link:https://neo4j.com/developer-blog/15-tools-for-visualizing-your-neo4j-graph-database/[*15 Tools for Visualizing Your Neo4j Graph Database*] -+ -Read an overview of the graph visualization landscape. - -. link:https://medium.com/neo4j/showing-charts-for-neo4j-query-results-using-amcharts-and-structr-efae0b7a04f0[*Showing Charts for Neo4j Query Results using amCharts and Structr*] -+ -Learn how to render a bar chart based upon the example movies graph. - -. link:https://medium.com/neo4j/working-with-neo4j-date-and-spatial-types-in-a-react-js-app-5475b5042b50[*Working With Neo4j Date And Spatial Types In A React.js App*] -+ -Learn how to build a dashboard app with Neo4j, Mapbox, React, and Nivo Charts. \ No newline at end of file diff --git a/preview-src/docs-roles.adoc b/preview-src/docs-roles.adoc deleted file mode 100644 index 25738880..00000000 --- a/preview-src/docs-roles.adoc +++ /dev/null @@ -1,349 +0,0 @@ -= Docs roles with a long title -:page-role: alpha aura-db-dedicated beta deprecated-5.17 invented-label new-5.17 not-on-aura -:page-theme: docs -:page-banner: warning -:page-banner-text: Lorem ipsum dolor sit est. -:page-banner-link: https://neo4j.com/docs -:page-banner-link-text: Link text -:page-product: Neo4j -// :page-labels: fabric enterprise-edition alpha test - -[abstract] --- -Flags sections as Not Available on Aura, Aura DB Enterprise, Enterprise Edition, Fabric, and Deprecated --- - -This page has the `:page-product:` attribute set to `Neo4j`. -By default, labels that related to a version of a product have `Neo4j` prepended to the version number. - -For example, `label--beta-until-5.12` is displayed as `Beta until Neo4j 5.12`. - -To override this value, include the product name in the label. -For example, `label--beta-until-bolt-1.0` is displayed as `Beta until Bolt 1.0`. - -For a list of all roles, see `src/js/data/rolesData.json`. - -[role=test-role] -Paragraph with non-label role. - - -[role=label--beta-until-bolt-1.0 label--removed-2.0] -== Adding a product name to versioned labels - - -[role=label--beta-until-1.0 label--dynamic-5.22 label--dynamic] -[[messages-ack-failure]] -=== Request message `ACK_FAILURE` - -The request message `ACK_FAILURE` signals to the server that the client has acknowledged a previous failure and should return to a `READY` state. - - -[role=label--new-5.11 label--beta-until-5.12] -== Beta until - -Lorem ipsum. - - -[role="label--new-5.17 label--enterprise-edition"] -== Relationship property type constraints - -Blocks with the appropriate roles have labels added. - -[discrete] -[role="label--new-5.17 label--enterprise-edition"] -=== (Discrete) H3 AuraDB Virtual Dedicated Cloud AND Not on Aura - -Labels are not displayed for discrete headers. - - -[role=label--aura-db-dedicated label--aura-db-business-critical label--not-on-aura] -=== H3 AuraDB Virtual Dedicated Cloud AND Not on Aura - -Lorem ipsum dolor sit - -Open blocks can be used to mark multiple paragraphs within a section. - -[role=label--dynamic-5.17] --- -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. - -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! Lorem ipsum dolor sit amet, consectetur adipiscing elit. --- - - -This is a normal paragraph. - -The next paragraph has a label, but it's not one we support. - -[role=label--invented-label] -Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -[role=label--enterprise-edition] -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. - -[role=label--deprecated-5.17] -. list with label -. item 2 -. item 3 - -These labels from roles should be used for block elements only. -For inline elements, use a label. - - -=== Code - -Intro para - -[role=label--deprecated-5.17] -.Title -[source, shell] ----- -How does a label look on a code block? ----- - - -=== Examples - -Intro para - -[role=label--new-5.17] -.This is a short one -[example] -==== -Lorem Ipsunm -==== - - -=== Tables - -Intro para - -[[procedure_db_create_setVectorProperty]] -[role=label--admin-only label--deprecated-5.9] -.db.create.setVectorProperty() -[cols="<15s,<85"] -|=== -| Description -a| -Set a vector property on a given node in a more space efficient representation than Cypher’s link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/set#set-set-a-property[`SET`]. -| Signature -m| db.create.setVectorProperty(node :: NODE, key :: STRING, vector :: LIST) :: (node :: NODE) -| Mode -m|WRITE -| Replaced by -a|xref:reference/procedures.adoc#procedure_db_create_setNodeVectorProperty[`db.create.setNodeVectorProperty()`] -|=== - - - -[role=label--not-on-aura] -== Not on `code test` Aura - -Lorem ipsum dolor `code test` sit - -Roles can be added anywhere, for example this definition list item has a role. - -[enterprise-edition]#Pipelined#:: -In the _pipelined_ runtime, the operators are grouped into pipelines in the execution plan to generate new combinations and orders of execution, which are optimized for performance and memory usage. - -And so does this table - -[options="header",cols="2m,2a,^1a"] -|=== -|Option -|Description -|Default - -|`runtime=slotted` -|Forces the Cypher query planner to use the _slotted_ runtime. -|Default for Community Edition. - -|[enterprise-edition]#runtime=pipelined# -| Forces the Cypher query planner to use the _pipelined_ runtime. -| Default for Enterprise Edition. -|=== - - -[role=label--aura-db-dedicated] -== AuraDB Virtual Dedicated Cloud - -Lorem ipsum dolor sit - - -[role=label--aura-db-dedicated label--not-on-aura] -== H2 AuraDB Virtual Dedicated Cloud AND Not on Aura - -Lorem ipsum dolor sit - - -== H2 with no roles - -Lorem ipsum dolor sit - - -[role=label--aura-db-dedicated label--not-on-aura] -=== H3 AuraDB Virtual Dedicated Cloud AND Not on Aura - -Lorem ipsum dolor sit - -[role=label--aura-db-dedicated label--not-on-aura] -=== H4 show roles - -Lorem ipsum dolor sit - - -[role=label--fabric] -== Fabric Heading - -Lorem ipsum - -[role=label--enterprise-edition] -== Enterprise Edition content - -Lorem ipsum - -=== H3 inside labeled section - -Lorem ipsum - -==== H4 inside labeled section - -[role=label--deprecated] -== Deprecated content - -Other blocks can have deprecated roles added. - -.Example block title -==== -Example 1 content - this example is not deprecated. - -This is a second paragraph in the example. - -This is the third. -==== - -[role=label--deprecated] -.Example 2 title -==== -Example 2 content - this example is deprecated -==== - -[role=label--alpha] -== Alpha content - - -[.alpha-symbol] -[.tier-note] -This algorithm is in the alpha tier. -For more information on algorithm tiers, see <>. - -=== Third level heading in Alpha section - -Lorem ipsum - - -[role=label--beta] -== Beta content - - -[.beta-symbol] -[.tier-note] -This algorithm is in the beta tier. -For more information on algorithm tiers, see <>. - - -=== Third level heading in Beta section - -Lorem ipsum - - -[role=label--deprecated] -== Deprecated content - -Lorem ipsum - - -=== Third level heading in Deprecated section - -Lorem ipsum - - -== Function symbol - -[opts=header,cols="1, 1"] -|=== -|Description | Operation -.2+<.^| Check if a named graph exists -| `gds.graph.exists` -a| [.function-reference]`_gds.graph.exists_` - -|=== - -== GDS Graph Variants Styling - - -.Graph variants support -[.graph-variants, caption=] --- -[.not-supported] -Directed - -[.supported] -Undirected - -[.supported] -link:example.com[Heterogeneous nodes] - -[.allowed] -Heterogeneous relationships - -[.not-supported] -Weighted relationships --- - -== List of procedures - -.Neo4j procedures -[options=header, cols="<70,<30"] -|=== -| Name | - -| <> -| +++ -Enterprise Edition -+++ - -| <> -| +++ -Admin only -+++ - -|=== - -== Examples - -=== Copying the data store of a database - -You can use `neo4j-admin database copy` to copy the data store of a database, for example, `neo4j`. - -. Stop the database named `neo4j`: -+ -[source, cypher, role=noplay] ----- -STOP DATABASE neo4j ----- - -. Copy the data store from `neo4j` to a new database called `database-copy`. -+ -[TIP] -==== -If you do not need an actual copy of the database, you can use the same values for `` and ``. -The command replaces the original database with the newly created copy. -==== -+ -[source, shell] ----- -bin/neo4j-admin database copy neo4j database-copy ----- diff --git a/preview-src/driver.adoc b/preview-src/driver.adoc deleted file mode 100644 index c5beb27e..00000000 --- a/preview-src/driver.adoc +++ /dev/null @@ -1,172 +0,0 @@ -= Neo4j & Python -:page-theme: docs -:page-role: code-walkthrough -:page-chatbot: http://localhost:3000 -:!toc: - - - -Neo4j provides drivers which allow you to make a connection to the database and develop applications which create, read, update, and delete information from the graph. - - -[.disconnected] -== Installing the Driver - -The latest version of the Neo4j Python Driver can be installed using the `pip` command. - -* link:#[View Package on Pypi] -* link:#[View Code] - -.Installing Dependencies -[source,bash] ----- -pip install neo4j ----- - - -[.first] -== Creating the Driver - -.Using the Neo4j Python Driver -[source,python] ----- -# Import the neo4j dependency -from neo4j import GraphDatabase - -# Create a new Driver instance -driver = GraphDatabase.driver("neo4j://localhost:7687", # <1> - auth=("neo4j", "neo")) # <2> - -# <3> Verify connection details -driver.verify_connectivity() ----- -// [source,python] -// ---- -// include::https://raw.githubusercontent.com/neo4j-graphacademy/app-python/main/example/index.py[tag=import] -// include::https://raw.githubusercontent.com/neo4j-graphacademy/app-python/main/example/index.py[tag=driver] -// ---- - -You should create one <> object per Neo4j instance. -The driver accepts two arguments, *(1)* a connection string and *(2)* an authentication token. - -Once you have created a Driver instance, you can call the *(3)* link:#[`verify_connectivity()`] method to verify that your credentials are correct. - -* link:#[Building a Connection String] -* link:#[Advanced Driver Configuration] -* link:#[Verifying Connectivity] - - -== Open a Session - -// [source,python] -// ---- -// include::https://raw.githubusercontent.com/neo4j-graphacademy/app-python/main/example/index.py[tag=import] -// ---- - -.Opening a Session -[source,python] ----- -with driver.session() as session: - # Run a Cypher Statement within a transaction ----- - -When you want to query Neo4j, you will first open a <>. - -Sessions manage connections between the Driver and the Neo4j instance or cluster. -These are lightweight objects that can be opened and closed with no overhead. - -* link:#[Connecting to a Database] -* link:#[Advanced Session Configuration] - - -== Reading From Neo4j - -// [source,python] -// ---- -// include::https://raw.githubusercontent.com/neo4j-graphacademy/app-python/main/example/index.py[tag=session.readTransaction] -// ---- - -.Reading from Neo4j -[source,python] ----- - # Define a Unit of work to run within a Transaction (`tx`) - def get_movies(tx, title): - return tx.run(""" - MATCH (p:Person)-[:ACTED_IN]->(m:Movie) - WHERE m.title = $title // <1> - RETURN p.name AS name - LIMIT 10 - """, title=title) - - # Execute get_movies within a Read Transaction - session.read_transaction(get_movies, - title="Arthur" # <2> - ) ----- - -To read from a Neo4j Instance you should use the session to create a read transaction. -The session provides a `read_transaction()` method, which should be called with a function represent the <1> unit of work. - -The unit of work has one positional argument, representing the transaction and can accept one or more optional arguments. - - -* link:#[More on Read Transactions] -* link:#[Working with Neo4j Values] - -+ -+ -+ - - -== Write to Neo4j - -// [source,python] -// ---- -// include::https://raw.githubusercontent.com/neo4j-graphacademy/app-python/main/example/index.py[tag=session.writeTransaction] -// ---- - -.Writing to Neo4j -[source,python] ----- - # Call tx.run() to execute the query to create a Person node - def create_person(tx, name): - return tx.run( - "CREATE (p:Person {name: $name})", - name=name - ) ----- - -Neo4j supports <> to ensure that data is data is safely and consistently stored. -A transaction, by definition, must be atomic, consistent, isolated, and durable. - -The `write_transaction()` method provides the user with the ability to execute a unit of work. - -In a <>, your queries will always be routed to the leader of the cluster. - - -* link:#[More on Write Transactions] -* link:#[The `MERGE` keyword] - -[.last] -== Close Connections - -Once you have finished with your Driver instance, you can call the `.close()` method release any resources still held by the instance. - -.Close the Connection -[source,python] -driver.close() - -* link:#[The Driver Lifecycle] - - -[discrete.glossary] -== Glossary - -[glossary] -[[Driver]]Driver:: Lorem ipsum dolor sit amet, consectetur adipiscing elit. -[[Session]]Session:: Duis porta erat vestibulum placerat venenatis. -[[Transaction]]Transaction:: Morbi blandit accumsan risus in sodales. -[[ACID]]ACID Transactions:: In vel molestie massa. Curabitur sollicitudin quis purus dapibus accumsan. -+ -Donec in vestibulum velit. Donec in iaculis nulla. -[[Cluster]]Neo4j Cluster:: Duis porta erat vestibulum placerat venenatis. \ No newline at end of file diff --git a/preview-src/drivers-apis.adoc b/preview-src/drivers-apis.adoc deleted file mode 100644 index afee603a..00000000 --- a/preview-src/drivers-apis.adoc +++ /dev/null @@ -1,122 +0,0 @@ -[.drivers-apis] -= Neo4j documentation - Drivers and APIs -:page-layout: docs-ndl -:page-theme: docs -:!toc: -:page-toclevels: -1 - -[.display] -== Neo4j Drivers - -=== Neo4j Go Driver documentation - -[.category] -Neo4j Driver - -[.icon] -image:go-logo.svg[] - -[.link] -link:{docs-home}/go-manual[Get started] - -=== Neo4j Java Driver documentation - -[.category] -Neo4j Driver - -[.icon] -image:java-logo.svg[] - -[.link] -link:{docs-home}/java-manual[Get started] - -=== Neo4j JavaScript Driver documentation - -[.category] -Neo4j Driver - -[.icon] -image:js-logo.svg[] - -[.link] -link:{docs-home}/javascript-manual[Get started] - -=== Neo4j Python Driver documentation - -[.category] -Neo4j Driver - -[.icon] -image:python-logo.svg[] - -[.link] -link:{docs-home}/python-manual[Get started] - -=== Neo4j .NET Driver documentation - -[.category] -Neo4j Driver - -[.icon] -image:dotnet-logo.svg[] - -[.link] -link:{docs-home}/dotnet-manual[Get started] - -[.display] -== APIs and connectors - -=== Neo4j GraphQL Library documentation - -[.category] -Neo4j GraphQL Library - -[.icon] -image:graphql-logo.svg[] - -[.link] -link:{docs-home}/graphql-manual[Get started] - -=== Neo4j HTTP API documentation - -[.category] -Neo4j API - -[.icon] -image:neo4j-logo.svg[] - -[.link] -link:{docs-home}/http-api[Get started] - -=== Neo4j-OGM documentation - -[.category] -Object Graph Mapping - -[.icon] -image:neo4j-logo.svg[] - -[.link] -link:{docs-home}/ogm-manual[Get started] - -=== Spring Data Neo4j documentation - -[.category] -Spring Data Neo4j - -[.icon] -image:spring-logo.svg[] - -[.link] -link:https://docs.spring.io/spring-data/neo4j/docs/current/reference/html/[Get started] - -=== Neo4j Connector for Apache Spark documentation - -[.category] -Apache Spark connector - -[.icon] -image:Apache_Spark_logo.svg[] - -[.link] -link:{docs-home}/spark/current[Get started] diff --git a/preview-src/drivers-tabs.adoc b/preview-src/drivers-tabs.adoc deleted file mode 100644 index fde7e09b..00000000 --- a/preview-src/drivers-tabs.adoc +++ /dev/null @@ -1,558 +0,0 @@ -= Tabbed sections in Neo4j Manuals - -Up to Neo4j 4.1 the Drivers Manual includes tabs to allow users to choose with driver language sections to display. -From 4.2 on, the Drivers Manual is split into a separate manual per language. - -GDS also uses tabs, but they have a different list of tab separators. Rather than tab on languages, they tab on modes (mutate, stats, stream, train, write) and output tab text as _ mode_ eg _Stream mode_. - -[.tabbed-example] -==== -[.include-with-macos] -[[mac-os-bit]] -====== -Tab for macOS -====== -[.include-with-linux] -[[linux-bit]] -====== -Tab for Linux -====== -[.include-with-windows] -====== -Tab for Linux -====== -[.include-with-whatever] -====== -Tab for whatever -====== -==== - -== Example drivers manual content - -.Acquire the driver -[.tabbed-example] -==== - -[.include-with-dotnet] -====== - -The .NET driver is distributed via the NuGet Gallery. -To find the latest version of the driver, visit https://www.nuget.org/packages/Neo4j.Driver/. - -*Dependencies* - -* .NETStandard (^2.0) -* System.Net.NameResolution (^4.3.0) -* System.Net.Security (^4.3.2) -* System.Net.Sockets (^4.3.0) -* System.Runtime.InteropServices.RuntimeInformation (^4.3.0) -* System.Runtime.Serialization.Primitives (^4.3.0) -* System.Threading.Thread (^4.3.0) -* System.ValueTuple (^4.5.0) - -The .NET Reactive API is under package `Neo4j.Driver.Reactive`. -It is built upon https://github.com/dotnet/reactive[`System.Reactive`]. -There is no extra dependency required use .NET reactive API. - -.Installation via Install-package -======== -To install the latest version of the driver using NuGet in Visual Studio: - -[source, csharp, subs="attributes, specialcharacters"] ----- -PM> Install-Package Neo4j.Driver ----- - -It is also an option to install a certain version of the driver. - -[source, csharp, subs="attributes, specialcharacters"] ----- -PM> Install-Package Neo4j.Driver -Version $DOTNET_DRIVER_VERSION ----- - -The .Net driver uses asynchronous methods by default. -If you want to use blocking calls, the `Neo4j.Driver.Simple` NuGet package contains a set of extensions. -This can be found at https://www.nuget.org/packages/Neo4j.Driver.Simple/. -The initial examples make use of these extensions. - -In the following example we are installing driver version {dotnet-driver-version}. - -[source, csharp, subs="attributes, specialcharacters"] ----- -PM> Install-Package Neo4j.Driver -Version {dotnet-driver-version} ----- -======== - -The release notes for this driver are available https://github.com/neo4j/neo4j-dotnet-driver/releases[here]. - -====== - -[.include-with-go] -====== - -To find out the latest version of the driver, visit https://github.com/neo4j/neo4j-go-driver/releases - -======== - -To install the latest version of the driver using `go get`: - -[source, shell, subs="attributes, specialcharacters"] ----- -go get github.com/neo4j/neo4j-go-driver/v4@ ----- -Note that this requires that Go modules are enabled. - -======== - -====== - -[.include-with-java] -[[java-bit]] -====== - -To use the Java driver, it is recommended employing a dependency manager, such as Maven or Gradle. -To find the latest version of the driver, visit the https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.neo4j.driver%22%20AND%20a%3A%22neo4j-java-driver%22[Maven Central Repository]. - -*Dependencies* - -* org.reactivestreams:reactive-streams -* org.apache.logging.log4j:log4j (optional) - -The driver is dependent on the https://www.reactive-streams.org/[Reactive Streams API], thus maintaining JDK 8 compatibility. -To make optimal use of the reactive APIs, we suggest an additional framework like Project Reactor or RxJava2. -Both implement the Reactive Streams API and provide an exhaustive set of operators. - - -.Installation via Maven -======== - -When using Maven, add the following block to the _pom.xml_ file. -The driver version can either be declared as a property (as in the first example) or as an explicit version number (as in the second). - -[source, xml, subs="attributes, specialcharacters"] ----- - - - org.neo4j.driver - neo4j-java-driver - $JAVA_DRIVER_VERSION - - ----- - -In the following example, driver version {java-driver-version} is added. - -[source, xml, subs="attributes, specialcharacters"] ----- - - - org.neo4j.driver - neo4j-java-driver - {java-driver-version} - - ----- -======== - -.Installation via Gradle -======== - -For Gradle, a compile line will be required. Again, this can use a property or an explicit version number. - -[source, groovy, subs="attributes, specialcharacters"] ----- -compile 'org.neo4j.driver:neo4j-java-driver:$JAVA_DRIVER_VERSION' ----- - -In the following example, a driver version {java-driver-version} is added. - -[source, groovy, subs="attributes, specialcharacters"] ----- -compile 'org.neo4j.driver:neo4j-java-driver:{java-driver-version}' ----- -======== - -The release notes for this driver are available https://github.com/neo4j/neo4j-java-driver/wiki[here]. - -====== - -[.include-with-javascript] -====== - -To use the JavaScript driver, it is recommended employing `npm`. -To find the latest version of the driver, use: - -[source, shell, subs="attributes, specialcharacters"] ----- -npm show neo4j-driver@* version ----- - -*Dependencies* - -* Babel/Runtime (^7.5.5) -* RxJS (^6.5.2) -* text-encoding-utf-8 (^1.0.2) -* URI-js (^4.2.2) - - -The JavaScript Reactive API is built and exposed via RxJs. -A dependency of RxJs is automatically installed with the driver. - -.Installation via npm -======== - -To install the latest version of the driver: - -[source, shell, subs="attributes, specialcharacters"] ----- -npm install neo4j-driver ----- - -It is also an option to install a certain version of the driver. - -[source, shell, subs="attributes, specialcharacters"] ----- -npm install neo4j-driver@$JAVASCRIPT-DRIVER-VERSION ----- - -In the following example, driver version {javascript-driver-version} is installed. - -[source, shell, subs="attributes, specialcharacters"] ----- -npm install neo4j-driver@{javascript-driver-version} ----- -======== - -The release notes for this driver are available https://github.com/neo4j/neo4j-javascript-driver/wiki[here]. - -====== - -[.include-with-python] -====== - -To find the latest stable version of the Python Driver, visit https://pypi.org/project/neo4j/ - -To find a list of all available releases, visit https://pypi.org/simple/neo4j/ - -To install the latest stable version of the Python Driver: -[source, shell, subs="attributes, specialcharacters"] ----- -pip install neo4j ----- - -It is also an option to install a certain version of the driver. - -.Installation with Python -======== -The following is the syntax for installing a certain version of the Python Driver: -[source, shell, subs="attributes, specialcharacters"] ----- -pip install neo4j==$PYTHON_DRIVER_VERSION ----- - -In the following example we are installing Python Driver version {python-driver-version}. -[source, shell, subs="attributes, specialcharacters"] ----- -pip install neo4j=={python-driver-version} ----- -======== - -.Installation with Python, get Python Driver prerelease -======== -In the following example we get the latest prerelease version: -[source, shell, subs="attributes, specialcharacters"] ----- -pip install neo4 --pre ----- -======== - -The release notes for the Python Driver are available https://github.com/neo4j/neo4j-python-driver/wiki[here] - -====== - -==== - -== Example GDS tabs - -.FastRP syntax per mode -[.tabbed-example] -==== - -[.include-with-stream] -====== - -.Run FastRP in stream mode on a named graph. -[source, cypher] ----- -CALL gds.fastRP.stream( - graphName: String, - configuration: Map -) YIELD - nodeId: Integer, - embedding: List ----- - -.Results -[opts="header"] -|=== -| Name | Type | Description -| nodeId | Integer | Node ID. -| embedding | List | FastRP node embedding. -|=== -====== - -[.include-with-stats] -====== - -.Run FastRP in stats mode on a named graph. -[source, cypher] ----- -CALL gds.fastRP.stats( - graphName: String, - configuration: Map -) YIELD - nodeCount: Integer, - createMillis: Integer, - computeMillis: Integer, - configuration: Map ----- - -.Results -[opts="header",cols="1,1,6"] -|=== -| Name | Type | Description -| nodeCount | Integer | Number of nodes processed. -| createMillis | Integer | Milliseconds for creating the graph. -| computeMillis | Integer | Milliseconds for running the algorithm. -| configuration | Map | Configuration used for running the algorithm. -|=== - -====== - -[.include-with-mutate] -====== - -.Run FastRP in mutate mode on a named graph. -[source, cypher] ----- -CALL gds.fastRP.mutate( - graphName: String, - configuration: Map -) YIELD - nodeCount: Integer, - nodePropertiesWritten: Integer, - createMillis: Integer, - computeMillis: Integer, - mutateMillis: Integer, - configuration: Map ----- - -.Results -[opts="header"] -|=== -| Name | Type | Description -| nodeCount | Integer | Number of nodes processed. -| nodePropertiesWritten | Integer | Number of node properties written. -| createMillis | Integer | Milliseconds for creating the graph. -| computeMillis | Integer | Milliseconds for running the algorithm. -| mutateMillis | Integer | Milliseconds for adding properties to the in-memory graph. -| configuration | Map | Configuration used for running the algorithm. -|=== -====== - -[.include-with-write] -====== - -.Run FastRP in write mode on a named graph. -[source, cypher] ----- -CALL gds.fastRP.write( - graphName: String, - configuration: Map -) YIELD - nodeCount: Integer, - propertiesWritten: Integer, - createMillis: Integer, - computeMillis: Integer, - writeMillis: Integer, - configuration: Map ----- - - -.Results -[opts="header"] -|=== -| Name | Type | Description -| nodeCount | Integer | Number of nodes processed. -| nodePropertiesWritten | Integer | Number of node properties written. -| createMillis | Integer | Milliseconds for creating the graph. -| computeMillis | Integer | Milliseconds for running the algorithm. -| writeMillis | Integer | Milliseconds for writing result data back to Neo4j. -| configuration | Map | Configuration used for running the algorithm. -|=== - -====== - -==== - -== Example GDS with hyphens in the tab name - -.Syntax descriptions of the different operations over node properties -[.tabbed-example, caption = ] -==== - -[.include-with-stream-single-property] -====== -[source, cypher, role=noplay] ----- -CALL gds.graph.streamNodeProperty( - graphName: String, - nodeProperties: String, - nodeLabels: String or List of Strings, - configuration: Map -) -YIELD - nodeId: Integer, - propertyValue: Integer or Float or List of Integer or List of Float ----- - -.Parameters -[opts="header",cols="1,3,1,5"] -|=== -| Name | Type | Optional | Description -| graphName | String | no | The name under which the graph is stored in the catalog. -| nodeProperties | String | no | The node property in the graph to stream. -| nodeLabels | String or List of Strings | yes | The node labels to stream the node properties for graph. -| configuration | Map | yes | Additional parameters to configure streamNodeProperties. -|=== - -.Configuration -[opts="header",cols="1,1,1,7"] -|=== -| Name | Type | Default | Description -| concurrency | Integer | 4 | The number of concurrent threads. Note, this procedure is always running single-threaded. -|=== - -.Results -[opts="header",cols="2,3,5"] -|=== -| Name | Type | Description -|nodeId | Integer | The id of the node. -.^|propertyValue a| -* Integer -* Float -* List of Integer -* List of Float .^| The stored property value. -|=== -====== - -[.include-with-stream] -====== -[source, cypher, role=noplay] ----- -CALL gds.graph.streamNodeProperties( - graphName: String, - nodeProperties: String or List of Strings, - nodeLabels: String or List of Strings, - configuration: Map -) -YIELD - nodeId: Integer, - nodeProperty: String, - propertyValue: Integer or Float or List of Integer or List of Float ----- - -.Parameters -[opts="header",cols="1,3,1,5"] -|=== -| Name | Type | Optional | Description -| graphName | String | no | The name under which the graph is stored in the catalog. -| nodeProperties | String or List of Strings | no | The node properties in the graph to stream. -| nodeLabels | String or List of Strings | yes | The node labels to stream the node properties for graph. -| configuration | Map | yes | Additional parameters to configure streamNodeProperties. -|=== - -.Configuration -[opts="header",cols="1,1,1,7"] -|=== -| Name | Type | Default | Description -| concurrency | Integer | 4 | The number of concurrent threads. Note, this procedure is always running single-threaded. -|=== - -.Results -[opts="header",cols="2,3,5"] -|=== -| Name | Type | Description -|nodeId | Integer | The id of the node. -|nodeProperty | String | The name of the node property. -.^|propertyValue a| -* Integer -* Float -* List of Integer -* List of Float .^| The stored property value. -|=== -====== - -==== - - -== No tab in drivers when only one language - -.Driver example -[.tabbed-example] -==== - -[.include-with-dotnet] -====== -.dotnet code -[source, cypher] ----- -CODE GOES HERE ----- - -====== -==== - -== Tab when only one GDS tab is needed - -.Collapse Path syntax per mode -[.tabbed-example] -==== - -[.include-with-mutate] -====== -.Run Collapse Path in mutate mode on a named graph. -[source, cypher] ----- -CALL gds.alpha.collapsePath.mutate( - graphName: String, - configuration: Map -) -YIELD - createMillis: Integer, - computeMillis: Integer, - mutateMillis: Integer, - relationshipsWritten: Integer, - configuration: Map ----- - -.General configuration for algorithm execution on a named graph. -[opts="header",cols="1,1,1m,1,4"] -|=== -| Name | Type | Default | Optional | Description -| nodeLabels | String[] | ['*'] | yes | Filter the named graph using the given node labels. -| concurrency | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -.Results -[opts="header",cols="1m,1,6"] -|=== -| Name | Type | Description -| createMillis | Integer | Milliseconds for loading data. -| computeMillis | Integer | Milliseconds for running the algorithm. -| mutateMillis | Integer | Milliseconds for adding properties to the in-memory graph. -| relationshipsWritten | Integer | The number of relationships created by the algorithm. -| configuration | Map | The configuration used for running the algorithm. -|=== -====== -==== diff --git a/preview-src/edit-run-cypher.adoc b/preview-src/edit-run-cypher.adoc deleted file mode 100644 index 4b558d55..00000000 --- a/preview-src/edit-run-cypher.adoc +++ /dev/null @@ -1,66 +0,0 @@ -= Run Cypher -:page-feedback: false -:page-includedriver: true -:page-disabletracking: true - -Runs a query against the link:https://demo.neo4jlabs.com:7473[`movies` database on the Neo4j Labs Demo Instance^]. The query runs in a transaction before being rolled back. - - -.Graph Layout -[source,cypher,role=runnable instant graph] -MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) -RETURN p, r, m -LIMIT 10 - - -.Results on pageload: -[source,cypher,role=runnable instant] -MATCH (n) RETURN count(n) // `role=runnable instant` - -.Mixed Results, Multiple Rows and role=editable -[source,cypher,role="runnable editable database:movies"] -MATCH (n:Person)-[r:ACTED_IN]->(m:Movie) -RETURN n, - n.name, - n.born, - id(n) AS id, - m.title, - m.degree, - type(r), - id(r), - r -LIMIT 10 - -.Syntax Error -[source%interactive%runnable,cypher,role=runnable editable] -MATCH (n) RETURN count - -.Write Mode -[source,cypher,role=runnable database:movies mode:write] -MATCH (n) RETURN count(n) - - - -See `src/js/07-runnable-code.js`. At the moment URL, username and password are currently hardcoded: - -[source,js] -window.neo4jDatabaseUri = 'neo4j+s://demo.neo4jlabs.com:7687' -window.neo4jDatabase = 'movies' -window.neo4jDriver = window.neo4j.driver(window.neo4jDatabaseUri, window.neo4j.auth.basic('movies', 'movies')) - - -== Config Options - -* Runnable Statement: -** `[source,role=runnable]` -* Make it editable (Basic editing): -** `[source,role=editable]` -* Session/Query Mode (read, write) -** `[source,role=mode:read]` -** `[source,role=mode:write]` -* Modify DB: -** `[source,role=database:movies]` -** `[source,role=database:fincen]` -** `[source,role=database:etc]` -* Get instant results: -** `[source,role=instant]` \ No newline at end of file diff --git a/preview-src/example.adoc b/preview-src/example.adoc deleted file mode 100644 index c73bb97d..00000000 --- a/preview-src/example.adoc +++ /dev/null @@ -1,154 +0,0 @@ -= Example blocks - -Example blocks should have a background colour in the docs theme - -== Example 1 - -A short example - -.This is a short one -[example] -==== -Lorem Ipsunm -==== - -Some text follows the example - -.This is also short -[example] -==== -Lorem Ipsunm -==== - -And some more text here - -== Example 2 - -A longer example - -.A longer example -[example] -==== -Let's assume there exists a procedure called `myProc`. - -This procedure gives the result `A` and `B` for a user with `EXECUTE PROCEDURE` privilege and `A`, `B` and `C` for a user with `EXECUTE BOOSTED PROCEDURE` privilege. - -Now, let's adapt the privileges in examples 1 to 4 to apply to this procedure and show what is returned. -With the privileges from example 1, granted `EXECUTE PROCEDURE *` and denied `EXECUTE BOOSTED PROCEDURE myProc`, the `myProc` procedure returns the result `A` and `B`. - -With the privileges from example 2, granted `EXECUTE BOOSTED PROCEDURE *` and denied `EXECUTE PROCEDURE myProc`, execution of the `myProc` procedure is not allowed. - -With the privileges from example 3, granted `EXECUTE BOOSTED PROCEDURE *` and denied `EXECUTE BOOSTED PROCEDURE myProc`, execution of the `myProc` procedure is not allowed. - -With the privileges from example 4, granted `EXECUTE PROCEDURE myProc` and `EXECUTE BOOSTED PROCEDURE *` and denied `EXECUTE BOOSTED PROCEDURE myProc`, the `myProc` procedure returns the result `A` and `B`. - -For comparison, when only granted `EXECUTE BOOSTED PROCEDURE myProc`, the `myProc` procedure returns the result `A`, `B` and `C`, without needing to be granted the `EXECUTE PROCEDURE myProc` privilege. -==== - -A line of text after the longer example - -[[manage-databases-cc-commands]] -== Run Cypher administrative commands from Cypher Shell on a cluster - -For the following examples consider a cluster environment formed by 5 members, 3 Core servers, and 2 Read Replicas: - -.View the members of a cluster -==== - -[source, cypher, role=noplay] ----- -neo4j@neo4j> CALL dbms.cluster.overview(); ----- - -[.queryresult] ----- -+------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| id | addresses | databases | groups | -+------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| "8c...3d" | ["bolt://localhost:7683", "http://localhost:7473", "https://localhost:7483"] | {neo4j: "FOLLOWER", system: "FOLLOWER"} | [] | -| "8f...28" | ["bolt://localhost:7681", "http://localhost:7471", "https://localhost:7481"] | {neo4j: "LEADER", system: "LEADER"} | [] | -| "e0...4d" | ["bolt://localhost:7684", "http://localhost:7474", "https://localhost:7484"] | {neo4j: "READ_REPLICA", system: "READ_REPLICA"} | [] | -| "1a...64" | ["bolt://localhost:7682", "http://localhost:7472", "https://localhost:7482"] | {neo4j: "FOLLOWER", system: "FOLLOWER"} | [] | -| "59...87" | ["bolt://localhost:7685", "http://localhost:7475", "https://localhost:7485"] | {neo4j: "READ_REPLICA", system: "READ_REPLICA"} | [] | -+------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -5 rows available after 5 ms, consumed after another 0 ms ----- - -The leader is currently the instance exposing port `7681` for the `bolt` protocol, and `7471/7481` for the `http/https` protocol. - -==== - -Administrators can connect and execute Cypher commands in the following ways: - -.Using the `bolt://` scheme to connect to the Leader: -==== -[source, cypher, role=noheader] ----- -$ bin/cypher-shell -a bolt://localhost:7681 -d system -u neo4j -p neo4j1 ----- - ----- -Connected to Neo4j 4.0.0 at bolt://localhost:7681 as user neo4j. -Type :help for a list of available commands or :exit to exit the shell. -Note that Cypher queries must end with a semicolon. ----- - -[source, cypher, role=noheader] ----- -neo4j@system> SHOW DATABASES; ----- - ----- -+-------------------------------+ -| name | status | default | -+-------------------------------+ -| "neo4j" | "online" | TRUE | -| "system" | "online" | FALSE | -+-------------------------------+ - -2 rows available after 34 ms, consumed after another 0 ms ----- - -[source, cypher, role=noheader] ----- -neo4j@system> CREATE DATABASE data001; ----- - -[.queryresult] ----- -0 rows available after 378 ms, consumed after another 12 ms -Added 1 nodes, Set 4 properties, Added 1 labels -neo4j@system> SHOW DATABASES; -+--------------------------------+ -| name | status | default | -+--------------------------------+ -| "neo4j" | "online" | TRUE | -| "system" | "online" | FALSE | -| "data001" | "online" | FALSE | -+--------------------------------+ - -3 rows available after 2 ms, consumed after another 1 ms ----- -==== - - -== Example block inside a list - -. List item -+ -.An Example -==== -Lorem ipsum -==== -+ -. List item -. List item -. List item -+ -.An Example -==== -Lorem ipsum -==== -+ -. List item \ No newline at end of file diff --git a/preview-src/feedback-disabled.adoc b/preview-src/feedback-disabled.adoc deleted file mode 100644 index ac7b780c..00000000 --- a/preview-src/feedback-disabled.adoc +++ /dev/null @@ -1,5 +0,0 @@ -= Feedback disabled -:page-disablefeedback: true - -This page has the header attribute `:page-disablefeedback: true` set to disable the feedback popup. - diff --git a/preview-src/first-steps-with-cypher.adoc b/preview-src/first-steps-with-cypher.adoc deleted file mode 100644 index b6f20593..00000000 --- a/preview-src/first-steps-with-cypher.adoc +++ /dev/null @@ -1,76 +0,0 @@ -= First Steps with Cypher -:neo4j-version: 3.5 -:author: Michael Hunger -:style: #65b144/#58b535/white:Person(name),#008cc1/#0f5788/white:Database(name) -:page-layout: graphgist -:page-neo4j-version: 3.5 -:page-theme: graphgists - -== Create a Record for Yourself - -[source,cypher,role="runnable instant single backend:graphgist"] ----- -CREATE (you:Person {name:"You"}) -RETURN you ----- - -`CREATE` creates nodes with labels and properties. - -You like _Neo4j_, right? - -Let's find ourselves and add a new relationship to a new node. - -[source,cypher,role="runnable instant single backend:graphgist"] ----- -MATCH (you:Person {name:"You"}) -CREATE (you)-[like:LIKE]->(neo:Database {name:"Neo4j" }) -RETURN you,like,neo ----- - -`CREATE` can create single nodes, or more complex structures. - - -== Create Your Friends - -[source,cypher,role="runnable instant single backend:graphgist"] ----- -MATCH (you:Person {name:"You"}) -FOREACH (name in ["Johan","Rajesh","Anna","Julia","Andrew"] | - CREATE (you)-[:FRIEND]->(:Person {name:name})) ----- - -`FOREACH` allows you to execute update operations for each element of a list. - -== Find Your Friends - -[source,cypher,role="runnable graph backend:graphgist"] ----- -MATCH (you {name:"You"})-[friendship:FRIEND]->(yourFriends) -RETURN you, yourFriends ----- - -// NOTE: nodes won't be attached/linked, unless we explicitly return the "friendship" relation: "RETURN you, friendship, yourFriends" -// in runnable.js, if we remove "res.links.filter((link) => link.selected)" (line 118) then nodes will be attached. - -Note that we get ourselves repeated for each path found in the graph. - -== Create Second Degree Friends and Expertise - -[source,cypher,role="runnable instant single backend:graphgist"] ----- -MATCH (neo:Database {name:"Neo4j"}) -MATCH (anna:Person {name:"Anna"}) -CREATE (anna)-[:FRIEND]->(:Person:Expert {name:"Amanda"})-[:WORKED_WITH]->(neo) ----- - -`CREATE` can also add more complex patterns. - -== Find Someone in your Network Who Can Help You Learn Neo4j - -[source,cypher,role="runnable graph backend:graphgist"] ----- -MATCH (you {name:"You"}) -MATCH (expert)-[:WORKED_WITH]->(db:Database {name:"Neo4j"}) -MATCH path = shortestPath( (you)-[:FRIEND*..5]-(expert) ) -RETURN db,expert,path ----- diff --git a/preview-src/fundamentals.adoc b/preview-src/fundamentals.adoc new file mode 100644 index 00000000..3144f20a --- /dev/null +++ b/preview-src/fundamentals.adoc @@ -0,0 +1,14 @@ += Sample page for new docs theme +:page-theme: docs-remix +:page-category-tab: admin +:page-role: new-2025.01 not-on-aura +:description: Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. + +Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, + + +== Subheading + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, diff --git a/preview-src/graph-gist-category-pop-culture.adoc b/preview-src/graph-gist-category-pop-culture.adoc deleted file mode 100644 index 15f89488..00000000 --- a/preview-src/graph-gist-category-pop-culture.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Category Pop Culture -// the content of this page will be automatically generated from the GraphQL API -:page-layout: graphgist-category -:page-theme: graphgists -:page-component: graphgist -:page-slug: pop-culture -:page-category: Pop Culture -page-breadcrumb: Pop Culture diff --git a/preview-src/graph-gist-index.adoc b/preview-src/graph-gist-index.adoc deleted file mode 100644 index 2cf25987..00000000 --- a/preview-src/graph-gist-index.adoc +++ /dev/null @@ -1,6 +0,0 @@ -= GraphGists -// the content of this page will be automatically generated from the GraphQL API -:page-layout: graphgist-index -:page-component: graphgist -:page-slug: graphgists -:page-theme: graphgists diff --git a/preview-src/graph-gist-star-wars-social-network.adoc b/preview-src/graph-gist-star-wars-social-network.adoc deleted file mode 100644 index a9f33af8..00000000 --- a/preview-src/graph-gist-star-wars-social-network.adoc +++ /dev/null @@ -1,938 +0,0 @@ -= The Star Wars social network -:page-layout: graphgist -:author: Evelina Gabasova -:twitter: @evelgab -:page-slug: exploring-the-star-wars-social-network -:page-neo4j-version: 3.5 -:page-theme: graphgists - -I recently looked at the whole Star Wars universe from a computational perspective, where I extracted and analyzed -social networks from all seven films. The social network structure revealed some interesting differences -between the individual films, especially between the original trilogy and the prequels. Here I'll look at how we -can represent and explore the same network using a Neo4j database. - -You can read more about my original analysis in my two blog posts, which include additional social -network analysis and my F# scripts for downloading and extracting the data: - -* http://evelinag.com/blog/2015/12-15-star-wars-social-network/index.html[The Star Wars social network] -* http://evelinag.com/blog/2016/01-25-social-network-force-awakens/index.html[Star Wars social networks: The Force Awakens] - -== The network - -The social network was automatically constructed using the films' screenplays. -The nodes in the network represent the individual characters who are -connected by a link if they both speak within the same movie scene. -The network only includes characters that appear in at least two scenes and -that are explicitly named in the screenplay (I excluded characters called "PILOT" or even "STAR DESTROYER TECHNICIAN"). -I also separated the characters into two categories: `Person` and `Droid`. - -The interactions create the basic structure of the network, where characters are connected -by the `SPEAKS_WITH` relation. I also included the information about the individual -movies using the `APPEARS_IN` relation. The following graph illustrates the general -network structure: - -image::https://s3-eu-west-1.amazonaws.com/evelinag/network-relations.png[] - -Now we can setup the database using the social network from all the 7 movies -combined together. - -//setup -//hide -[source,cypher,role="runnable instant hidden backend:graphgist"] ----- -CREATE - (Episode1:Movie {name: 'Episode I: The Phantom Menace'}), - (Episode2:Movie {name: 'Episode II: Attack of the Clones'}), - (Episode3:Movie {name: 'Episode III: Revenge of the Sith'}), - (Episode4:Movie {name: 'Episode IV: A New Hope'}), - (Episode5:Movie {name: 'Episode V: The Empire Strikes Back'}), - (Episode6:Movie {name: 'Episode VI: Return of the Jedi'}), - (Episode7:Movie {name: 'Episode VII: The Force Awakens'}), - (r2_d2:Droid {name: 'R2-D2'}), - (chewbacca:Person {name: 'CHEWBACCA'}), - (bb_8:Droid {name: 'BB-8'}), - (qui_gon:Person {name: 'QUI-GON'}), - (nute_gunray:Person {name: 'NUTE GUNRAY'}), - (pk_4:Person {name: 'PK-4'}), - (tc_14:Person {name: 'TC-14'}), - (obi_wan:Person {name: 'OBI-WAN'}), - (dofine:Person {name: 'DOFINE'}), - (rune:Person {name: 'RUNE'}), - (tey_how:Person {name: 'TEY HOW'}), - (emperor:Person {name: 'EMPEROR'}), - (captain_panaka:Person {name: 'CAPTAIN PANAKA'}), - (sio_bibble:Person {name: 'SIO BIBBLE'}), - (jar_jar:Person {name: 'JAR JAR'}), - (tarpals:Person {name: 'TARPALS'}), - (boss_nass:Person {name: 'BOSS NASS'}), - (padme:Person {name: 'PADME'}), - (ric_olie:Person {name: 'RIC OLIE'}), - (watto:Person {name: 'WATTO'}), - (anakin:Person {name: 'ANAKIN'}), - (sebulba:Person {name: 'SEBULBA'}), - (jira:Person {name: 'JIRA'}), - (shmi:Person {name: 'SHMI'}), - (c_3po:Droid {name: 'C-3PO'}), - (darth_maul:Person {name: 'DARTH MAUL'}), - (kitster:Person {name: 'KITSTER'}), - (wald:Person {name: 'WALD'}), - (fode_beed:Person {name: 'FODE/BEED'}), - (jabba:Person {name: 'JABBA'}), - (greedo:Person {name: 'GREEDO'}), - (valorum:Person {name: 'VALORUM'}), - (mace_windu:Person {name: 'MACE WINDU'}), - (ki_adi_mundi:Person {name: 'KI-ADI-MUNDI'}), - (yoda:Person {name: 'YODA'}), - (rabe:Person {name: 'RABE'}), - (bail_organa:Person {name: 'BAIL ORGANA'}), - (general_ceel:Person {name: 'GENERAL CEEL'}), - (bravo_two:Person {name: 'BRAVO TWO'}), - (bravo_three:Person {name: 'BRAVO THREE'}), - (captain_typho:Person {name: 'CAPTAIN TYPHO'}), - (senator_ask_aak:Person {name: 'SENATOR ASK AAK'}), - (orn_free_taa:Person {name: 'ORN FREE TAA'}), - (sola:Person {name: 'SOLA'}), - (jobal:Person {name: 'JOBAL'}), - (ruwee:Person {name: 'RUWEE'}), - (taun_we:Person {name: 'TAUN WE'}), - (lama_su:Person {name: 'LAMA SU'}), - (boba_fett:Person {name: 'BOBA FETT'}), - (jango_fett:Person {name: 'JANGO FETT'}), - (owen:Person {name: 'OWEN'}), - (beru:Person {name: 'BERU'}), - (cliegg:Person {name: 'CLIEGG'}), - (count_dooku:Person {name: 'COUNT DOOKU'}), - (sun_rit:Person {name: 'SUN RIT'}), - (poggle:Person {name: 'POGGLE'}), - (plo_koon:Person {name: 'PLO KOON'}), - (odd_ball:Person {name: 'ODD BALL'}), - (general_grievous:Person {name: 'GENERAL GRIEVOUS'}), - (fang_zar:Person {name: 'FANG ZAR'}), - (mon_mothma:Person {name: 'MON MOTHMA'}), - (giddean_danu:Person {name: 'GIDDEAN DANU'}), - (clone_commander_gree:Person {name: 'CLONE COMMANDER GREE'}), - (clone_commander_cody:Person {name: 'CLONE COMMANDER CODY'}), - (tion_medon:Person {name: 'TION MEDON'}), - (captain_antilles:Person {name: 'CAPTAIN ANTILLES'}), - (darth_vader:Person {name: 'DARTH VADER'}), - (luke:Person {name: 'LUKE'}), - (camie:Person {name: 'CAMIE'}), - (biggs:Person {name: 'BIGGS'}), - (leia:Person {name: 'LEIA'}), - (motti:Person {name: 'MOTTI'}), - (tarkin:Person {name: 'TARKIN'}), - (han:Person {name: 'HAN'}), - (dodonna:Person {name: 'DODONNA'}), - (gold_leader:Person {name: 'GOLD LEADER'}), - (wedge:Person {name: 'WEDGE'}), - (red_leader:Person {name: 'RED LEADER'}), - (red_ten:Person {name: 'RED TEN'}), - (gold_five:Person {name: 'GOLD FIVE'}), - (rieekan:Person {name: 'RIEEKAN'}), - (derlin:Person {name: 'DERLIN'}), - (zev:Person {name: 'ZEV'}), - (piett:Person {name: 'PIETT'}), - (ozzel:Person {name: 'OZZEL'}), - (dack:Person {name: 'DACK'}), - (janson:Person {name: 'JANSON'}), - (needa:Person {name: 'NEEDA'}), - (lando:Person {name: 'LANDO'}), - (jerjerrod:Person {name: 'JERJERROD'}), - (bib_fortuna:Person {name: 'BIB FORTUNA'}), - (boushh:Person {name: 'BOUSHH'}), - (admiral_ackbar:Person {name: 'ADMIRAL ACKBAR'}), - (lor_san_tekka:Person {name: 'LOR SAN TEKKA'}), - (poe:Person {name: 'POE'}), - (kylo_ren:Person {name: 'KYLO REN'}), - (captain_phasma:Person {name: 'CAPTAIN PHASMA'}), - (finn:Person {name: 'FINN'}), - (unkar_plutt:Person {name: 'UNKAR PLUTT'}), - (rey:Person {name: 'REY'}), - (general_hux:Person {name: 'GENERAL HUX'}), - (lieutenant_mitaka:Person {name: 'LIEUTENANT MITAKA'}), - (bala_tik:Person {name: 'BALA-TIK'}), - (snoke:Person {name: 'SNOKE'}), - (maz:Person {name: 'MAZ'}), - (snap:Person {name: 'SNAP'}), - (admiral_statura:Person {name: 'ADMIRAL STATURA'}), - (yolo_ziff:Person {name: 'YOLO ZIFF'}), - (colonel_datoo:Person {name: 'COLONEL DATOO'}), - (ello_asty:Person {name: 'ELLO ASTY'}), - (jess:Person {name: 'JESS'}), - (niv_lek:Person {name: 'NIV LEK'}), - (chewbacca)-[:SPEAKS_WITH]->(r2_d2), - (bb_8)-[:SPEAKS_WITH]->(r2_d2), - (bb_8)-[:SPEAKS_WITH]->(chewbacca), - (obi_wan)-[:SPEAKS_WITH]->(r2_d2), - (padme)-[:SPEAKS_WITH]->(r2_d2), - (qui_gon)-[:SPEAKS_WITH]->(r2_d2), - (anakin)-[:SPEAKS_WITH]->(r2_d2), - (r2_d2)-[:SPEAKS_WITH]->(watto), - (c_3po)-[:SPEAKS_WITH]->(r2_d2), - (kitster)-[:SPEAKS_WITH]->(r2_d2), - (jabba)-[:SPEAKS_WITH]->(r2_d2), - (emperor)-[:SPEAKS_WITH]->(r2_d2), - (captain_typho)-[:SPEAKS_WITH]->(r2_d2), - (beru)-[:SPEAKS_WITH]->(r2_d2), - (owen)-[:SPEAKS_WITH]->(r2_d2), - (bail_organa)-[:SPEAKS_WITH]->(r2_d2), - (r2_d2)-[:SPEAKS_WITH]->(yoda), - (luke)-[:SPEAKS_WITH]->(r2_d2), - (leia)-[:SPEAKS_WITH]->(r2_d2), - (captain_antilles)-[:SPEAKS_WITH]->(r2_d2), - (biggs)-[:SPEAKS_WITH]->(r2_d2), - (darth_vader)-[:SPEAKS_WITH]->(r2_d2), - (han)-[:SPEAKS_WITH]->(r2_d2), - (lando)-[:SPEAKS_WITH]->(r2_d2), - (chewbacca)-[:SPEAKS_WITH]->(obi_wan), - (c_3po)-[:SPEAKS_WITH]->(chewbacca), - (chewbacca)-[:SPEAKS_WITH]->(luke), - (chewbacca)-[:SPEAKS_WITH]->(han), - (chewbacca)-[:SPEAKS_WITH]->(jabba), - (chewbacca)-[:SPEAKS_WITH]->(leia), - (chewbacca)-[:SPEAKS_WITH]->(darth_vader), - (chewbacca)-[:SPEAKS_WITH]->(rieekan), - (chewbacca)-[:SPEAKS_WITH]->(lando), - (boba_fett)-[:SPEAKS_WITH]->(chewbacca), - (chewbacca)-[:SPEAKS_WITH]->(finn), - (chewbacca)-[:SPEAKS_WITH]->(rey), - (bala_tik)-[:SPEAKS_WITH]->(chewbacca), - (chewbacca)-[:SPEAKS_WITH]->(maz), - (chewbacca)-[:SPEAKS_WITH]->(poe), - (chewbacca)-[:SPEAKS_WITH]->(kylo_ren), - (captain_phasma)-[:SPEAKS_WITH]->(chewbacca), - (bb_8)-[:SPEAKS_WITH]->(poe), - (bb_8)-[:SPEAKS_WITH]->(lor_san_tekka), - (bb_8)-[:SPEAKS_WITH]->(rey), - (bb_8)-[:SPEAKS_WITH]->(unkar_plutt), - (bb_8)-[:SPEAKS_WITH]->(finn), - (bb_8)-[:SPEAKS_WITH]->(han), - (bala_tik)-[:SPEAKS_WITH]->(bb_8), - (bb_8)-[:SPEAKS_WITH]->(maz), - (bb_8)-[:SPEAKS_WITH]->(leia), - (bb_8)-[:SPEAKS_WITH]->(c_3po), - (nute_gunray)-[:SPEAKS_WITH]->(qui_gon), - (pk_4)-[:SPEAKS_WITH]->(tc_14), - (obi_wan)-[:SPEAKS_WITH]->(tc_14), - (qui_gon)-[:SPEAKS_WITH]->(tc_14), - (obi_wan)-[:SPEAKS_WITH]->(qui_gon), - (nute_gunray)-[:SPEAKS_WITH]->(tc_14), - (dofine)-[:SPEAKS_WITH]->(nute_gunray), - (dofine)-[:SPEAKS_WITH]->(tc_14), - (nute_gunray)-[:SPEAKS_WITH]->(rune), - (rune)-[:SPEAKS_WITH]->(tey_how), - (nute_gunray)-[:SPEAKS_WITH]->(tey_how), - (captain_panaka)-[:SPEAKS_WITH]->(emperor), - (emperor)-[:SPEAKS_WITH]->(sio_bibble), - (captain_panaka)-[:SPEAKS_WITH]->(sio_bibble), - (jar_jar)-[:SPEAKS_WITH]->(qui_gon), - (jar_jar)-[:SPEAKS_WITH]->(obi_wan), - (jar_jar)-[:SPEAKS_WITH]->(tarpals), - (boss_nass)-[:SPEAKS_WITH]->(qui_gon), - (boss_nass)-[:SPEAKS_WITH]->(obi_wan), - (boss_nass)-[:SPEAKS_WITH]->(jar_jar), - (emperor)-[:SPEAKS_WITH]->(nute_gunray), - (emperor)-[:SPEAKS_WITH]->(rune), - (nute_gunray)-[:SPEAKS_WITH]->(sio_bibble), - (jar_jar)-[:SPEAKS_WITH]->(sio_bibble), - (captain_panaka)-[:SPEAKS_WITH]->(jar_jar), - (qui_gon)-[:SPEAKS_WITH]->(sio_bibble), - (captain_panaka)-[:SPEAKS_WITH]->(qui_gon), - (captain_panaka)-[:SPEAKS_WITH]->(padme), - (padme)-[:SPEAKS_WITH]->(qui_gon), - (padme)-[:SPEAKS_WITH]->(sio_bibble), - (captain_panaka)-[:SPEAKS_WITH]->(obi_wan), - (obi_wan)-[:SPEAKS_WITH]->(ric_olie), - (jar_jar)-[:SPEAKS_WITH]->(ric_olie), - (qui_gon)-[:SPEAKS_WITH]->(ric_olie), - (captain_panaka)-[:SPEAKS_WITH]->(ric_olie), - (jar_jar)-[:SPEAKS_WITH]->(padme), - (qui_gon)-[:SPEAKS_WITH]->(watto), - (anakin)-[:SPEAKS_WITH]->(watto), - (padme)-[:SPEAKS_WITH]->(watto), - (anakin)-[:SPEAKS_WITH]->(qui_gon), - (anakin)-[:SPEAKS_WITH]->(padme), - (jar_jar)-[:SPEAKS_WITH]->(sebulba), - (anakin)-[:SPEAKS_WITH]->(sebulba), - (qui_gon)-[:SPEAKS_WITH]->(sebulba), - (padme)-[:SPEAKS_WITH]->(sebulba), - (anakin)-[:SPEAKS_WITH]->(jar_jar), - (anakin)-[:SPEAKS_WITH]->(jira), - (jira)-[:SPEAKS_WITH]->(qui_gon), - (jira)-[:SPEAKS_WITH]->(padme), - (anakin)-[:SPEAKS_WITH]->(shmi), - (jar_jar)-[:SPEAKS_WITH]->(shmi), - (qui_gon)-[:SPEAKS_WITH]->(shmi), - (padme)-[:SPEAKS_WITH]->(shmi), - (anakin)-[:SPEAKS_WITH]->(c_3po), - (c_3po)-[:SPEAKS_WITH]->(padme), - (obi_wan)-[:SPEAKS_WITH]->(sio_bibble), - (darth_maul)-[:SPEAKS_WITH]->(emperor), - (anakin)-[:SPEAKS_WITH]->(kitster), - (anakin)-[:SPEAKS_WITH]->(wald), - (kitster)-[:SPEAKS_WITH]->(wald), - (jar_jar)-[:SPEAKS_WITH]->(kitster), - (kitster)-[:SPEAKS_WITH]->(qui_gon), - (jar_jar)-[:SPEAKS_WITH]->(wald), - (qui_gon)-[:SPEAKS_WITH]->(wald), - (anakin)-[:SPEAKS_WITH]->(obi_wan), - (obi_wan)-[:SPEAKS_WITH]->(shmi), - (c_3po)-[:SPEAKS_WITH]->(watto), - (kitster)-[:SPEAKS_WITH]->(watto), - (c_3po)-[:SPEAKS_WITH]->(qui_gon), - (c_3po)-[:SPEAKS_WITH]->(kitster), - (kitster)-[:SPEAKS_WITH]->(padme), - (fode_beed)-[:SPEAKS_WITH]->(jabba), - (jabba)-[:SPEAKS_WITH]->(shmi), - (sebulba)-[:SPEAKS_WITH]->(shmi), - (anakin)-[:SPEAKS_WITH]->(jabba), - (jabba)-[:SPEAKS_WITH]->(jar_jar), - (jabba)-[:SPEAKS_WITH]->(padme), - (jabba)-[:SPEAKS_WITH]->(sebulba), - (jabba)-[:SPEAKS_WITH]->(qui_gon), - (fode_beed)-[:SPEAKS_WITH]->(jar_jar), - (fode_beed)-[:SPEAKS_WITH]->(padme), - (greedo)-[:SPEAKS_WITH]->(qui_gon), - (anakin)-[:SPEAKS_WITH]->(greedo), - (greedo)-[:SPEAKS_WITH]->(wald), - (kitster)-[:SPEAKS_WITH]->(shmi), - (anakin)-[:SPEAKS_WITH]->(captain_panaka), - (anakin)-[:SPEAKS_WITH]->(ric_olie), - (emperor)-[:SPEAKS_WITH]->(valorum), - (emperor)-[:SPEAKS_WITH]->(jar_jar), - (emperor)-[:SPEAKS_WITH]->(qui_gon), - (jar_jar)-[:SPEAKS_WITH]->(valorum), - (qui_gon)-[:SPEAKS_WITH]->(valorum), - (mace_windu)-[:SPEAKS_WITH]->(qui_gon), - (ki_adi_mundi)-[:SPEAKS_WITH]->(qui_gon), - (qui_gon)-[:SPEAKS_WITH]->(yoda), - (qui_gon)-[:SPEAKS_WITH]->(rabe), - (ki_adi_mundi)-[:SPEAKS_WITH]->(mace_windu), - (mace_windu)-[:SPEAKS_WITH]->(yoda), - (anakin)-[:SPEAKS_WITH]->(mace_windu), - (mace_windu)-[:SPEAKS_WITH]->(rabe), - (ki_adi_mundi)-[:SPEAKS_WITH]->(yoda), - (anakin)-[:SPEAKS_WITH]->(ki_adi_mundi), - (ki_adi_mundi)-[:SPEAKS_WITH]->(rabe), - (anakin)-[:SPEAKS_WITH]->(yoda), - (rabe)-[:SPEAKS_WITH]->(yoda), - (anakin)-[:SPEAKS_WITH]->(rabe), - (bail_organa)-[:SPEAKS_WITH]->(emperor), - (bail_organa)-[:SPEAKS_WITH]->(valorum), - (obi_wan)-[:SPEAKS_WITH]->(yoda), - (mace_windu)-[:SPEAKS_WITH]->(obi_wan), - (ki_adi_mundi)-[:SPEAKS_WITH]->(obi_wan), - (boss_nass)-[:SPEAKS_WITH]->(padme), - (darth_maul)-[:SPEAKS_WITH]->(nute_gunray), - (anakin)-[:SPEAKS_WITH]->(boss_nass), - (boss_nass)-[:SPEAKS_WITH]->(captain_panaka), - (obi_wan)-[:SPEAKS_WITH]->(padme), - (emperor)-[:SPEAKS_WITH]->(general_ceel), - (general_ceel)-[:SPEAKS_WITH]->(nute_gunray), - (darth_maul)-[:SPEAKS_WITH]->(general_ceel), - (darth_maul)-[:SPEAKS_WITH]->(rune), - (bravo_two)-[:SPEAKS_WITH]->(ric_olie), - (anakin)-[:SPEAKS_WITH]->(bravo_two), - (general_ceel)-[:SPEAKS_WITH]->(jar_jar), - (nute_gunray)-[:SPEAKS_WITH]->(padme), - (dofine)-[:SPEAKS_WITH]->(tey_how), - (bravo_three)-[:SPEAKS_WITH]->(bravo_two), - (bravo_three)-[:SPEAKS_WITH]->(ric_olie), - (anakin)-[:SPEAKS_WITH]->(bravo_three), - (emperor)-[:SPEAKS_WITH]->(padme), - (emperor)-[:SPEAKS_WITH]->(senator_ask_aak), - (emperor)-[:SPEAKS_WITH]->(orn_free_taa), - (orn_free_taa)-[:SPEAKS_WITH]->(senator_ask_aak), - (emperor)-[:SPEAKS_WITH]->(mace_windu), - (emperor)-[:SPEAKS_WITH]->(yoda), - (emperor)-[:SPEAKS_WITH]->(ki_adi_mundi), - (bail_organa)-[:SPEAKS_WITH]->(mace_windu), - (bail_organa)-[:SPEAKS_WITH]->(yoda), - (bail_organa)-[:SPEAKS_WITH]->(ki_adi_mundi), - (captain_typho)-[:SPEAKS_WITH]->(jar_jar), - (captain_typho)-[:SPEAKS_WITH]->(obi_wan), - (anakin)-[:SPEAKS_WITH]->(captain_typho), - (obi_wan)-[:SPEAKS_WITH]->(pk_4), - (anakin)-[:SPEAKS_WITH]->(sio_bibble), - (padme)-[:SPEAKS_WITH]->(sola), - (anakin)-[:SPEAKS_WITH]->(sola), - (jobal)-[:SPEAKS_WITH]->(sola), - (ruwee)-[:SPEAKS_WITH]->(sola), - (jobal)-[:SPEAKS_WITH]->(padme), - (padme)-[:SPEAKS_WITH]->(ruwee), - (anakin)-[:SPEAKS_WITH]->(jobal), - (anakin)-[:SPEAKS_WITH]->(ruwee), - (jobal)-[:SPEAKS_WITH]->(ruwee), - (obi_wan)-[:SPEAKS_WITH]->(taun_we), - (lama_su)-[:SPEAKS_WITH]->(taun_we), - (lama_su)-[:SPEAKS_WITH]->(obi_wan), - (boba_fett)-[:SPEAKS_WITH]->(taun_we), - (boba_fett)-[:SPEAKS_WITH]->(jango_fett), - (boba_fett)-[:SPEAKS_WITH]->(obi_wan), - (jango_fett)-[:SPEAKS_WITH]->(taun_we), - (jango_fett)-[:SPEAKS_WITH]->(obi_wan), - (c_3po)-[:SPEAKS_WITH]->(owen), - (beru)-[:SPEAKS_WITH]->(c_3po), - (c_3po)-[:SPEAKS_WITH]->(cliegg), - (anakin)-[:SPEAKS_WITH]->(owen), - (anakin)-[:SPEAKS_WITH]->(beru), - (anakin)-[:SPEAKS_WITH]->(cliegg), - (beru)-[:SPEAKS_WITH]->(owen), - (owen)-[:SPEAKS_WITH]->(padme), - (cliegg)-[:SPEAKS_WITH]->(owen), - (beru)-[:SPEAKS_WITH]->(padme), - (beru)-[:SPEAKS_WITH]->(cliegg), - (cliegg)-[:SPEAKS_WITH]->(padme), - (bail_organa)-[:SPEAKS_WITH]->(obi_wan), - (emperor)-[:SPEAKS_WITH]->(obi_wan), - (obi_wan)-[:SPEAKS_WITH]->(senator_ask_aak), - (bail_organa)-[:SPEAKS_WITH]->(senator_ask_aak), - (bail_organa)-[:SPEAKS_WITH]->(jar_jar), - (senator_ask_aak)-[:SPEAKS_WITH]->(yoda), - (jar_jar)-[:SPEAKS_WITH]->(yoda), - (mace_windu)-[:SPEAKS_WITH]->(senator_ask_aak), - (jar_jar)-[:SPEAKS_WITH]->(mace_windu), - (jar_jar)-[:SPEAKS_WITH]->(senator_ask_aak), - (mace_windu)-[:SPEAKS_WITH]->(padme), - (jar_jar)-[:SPEAKS_WITH]->(orn_free_taa), - (count_dooku)-[:SPEAKS_WITH]->(padme), - (count_dooku)-[:SPEAKS_WITH]->(jango_fett), - (poggle)-[:SPEAKS_WITH]->(sun_rit), - (nute_gunray)-[:SPEAKS_WITH]->(sun_rit), - (nute_gunray)-[:SPEAKS_WITH]->(poggle), - (obi_wan)-[:SPEAKS_WITH]->(sun_rit), - (obi_wan)-[:SPEAKS_WITH]->(poggle), - (nute_gunray)-[:SPEAKS_WITH]->(obi_wan), - (count_dooku)-[:SPEAKS_WITH]->(obi_wan), - (anakin)-[:SPEAKS_WITH]->(sun_rit), - (anakin)-[:SPEAKS_WITH]->(poggle), - (anakin)-[:SPEAKS_WITH]->(nute_gunray), - (anakin)-[:SPEAKS_WITH]->(count_dooku), - (padme)-[:SPEAKS_WITH]->(sun_rit), - (count_dooku)-[:SPEAKS_WITH]->(sun_rit), - (padme)-[:SPEAKS_WITH]->(poggle), - (count_dooku)-[:SPEAKS_WITH]->(poggle), - (count_dooku)-[:SPEAKS_WITH]->(nute_gunray), - (count_dooku)-[:SPEAKS_WITH]->(mace_windu), - (ki_adi_mundi)-[:SPEAKS_WITH]->(plo_koon), - (count_dooku)-[:SPEAKS_WITH]->(yoda), - (padme)-[:SPEAKS_WITH]->(yoda), - (count_dooku)-[:SPEAKS_WITH]->(emperor), - (obi_wan)-[:SPEAKS_WITH]->(odd_ball), - (anakin)-[:SPEAKS_WITH]->(odd_ball), - (anakin)-[:SPEAKS_WITH]->(emperor), - (general_grievous)-[:SPEAKS_WITH]->(obi_wan), - (anakin)-[:SPEAKS_WITH]->(general_grievous), - (anakin)-[:SPEAKS_WITH]->(bail_organa), - (c_3po)-[:SPEAKS_WITH]->(obi_wan), - (c_3po)-[:SPEAKS_WITH]->(emperor), - (bail_organa)-[:SPEAKS_WITH]->(c_3po), - (bail_organa)-[:SPEAKS_WITH]->(padme), - (bail_organa)-[:SPEAKS_WITH]->(fang_zar), - (bail_organa)-[:SPEAKS_WITH]->(mon_mothma), - (bail_organa)-[:SPEAKS_WITH]->(giddean_danu), - (fang_zar)-[:SPEAKS_WITH]->(padme), - (fang_zar)-[:SPEAKS_WITH]->(mon_mothma), - (fang_zar)-[:SPEAKS_WITH]->(giddean_danu), - (mon_mothma)-[:SPEAKS_WITH]->(padme), - (giddean_danu)-[:SPEAKS_WITH]->(padme), - (giddean_danu)-[:SPEAKS_WITH]->(mon_mothma), - (captain_typho)-[:SPEAKS_WITH]->(padme), - (c_3po)-[:SPEAKS_WITH]->(captain_typho), - (clone_commander_gree)-[:SPEAKS_WITH]->(yoda), - (clone_commander_cody)-[:SPEAKS_WITH]->(obi_wan), - (obi_wan)-[:SPEAKS_WITH]->(tion_medon), - (general_grievous)-[:SPEAKS_WITH]->(nute_gunray), - (anakin)-[:SPEAKS_WITH]->(clone_commander_cody), - (clone_commander_cody)-[:SPEAKS_WITH]->(mace_windu), - (clone_commander_cody)-[:SPEAKS_WITH]->(yoda), - (bail_organa)-[:SPEAKS_WITH]->(captain_antilles), - (bail_organa)-[:SPEAKS_WITH]->(qui_gon), - (c_3po)-[:SPEAKS_WITH]->(yoda), - (darth_vader)-[:SPEAKS_WITH]->(emperor), - (c_3po)-[:SPEAKS_WITH]->(captain_antilles), - (camie)-[:SPEAKS_WITH]->(luke), - (biggs)-[:SPEAKS_WITH]->(camie), - (biggs)-[:SPEAKS_WITH]->(luke), - (darth_vader)-[:SPEAKS_WITH]->(leia), - (beru)-[:SPEAKS_WITH]->(luke), - (luke)-[:SPEAKS_WITH]->(owen), - (c_3po)-[:SPEAKS_WITH]->(luke), - (c_3po)-[:SPEAKS_WITH]->(leia), - (leia)-[:SPEAKS_WITH]->(luke), - (beru)-[:SPEAKS_WITH]->(leia), - (luke)-[:SPEAKS_WITH]->(obi_wan), - (leia)-[:SPEAKS_WITH]->(obi_wan), - (motti)-[:SPEAKS_WITH]->(tarkin), - (darth_vader)-[:SPEAKS_WITH]->(motti), - (darth_vader)-[:SPEAKS_WITH]->(tarkin), - (han)-[:SPEAKS_WITH]->(obi_wan), - (han)-[:SPEAKS_WITH]->(luke), - (greedo)-[:SPEAKS_WITH]->(han), - (han)-[:SPEAKS_WITH]->(jabba), - (c_3po)-[:SPEAKS_WITH]->(han), - (leia)-[:SPEAKS_WITH]->(motti), - (leia)-[:SPEAKS_WITH]->(tarkin), - (han)-[:SPEAKS_WITH]->(leia), - (darth_vader)-[:SPEAKS_WITH]->(obi_wan), - (dodonna)-[:SPEAKS_WITH]->(gold_leader), - (dodonna)-[:SPEAKS_WITH]->(wedge), - (dodonna)-[:SPEAKS_WITH]->(luke), - (gold_leader)-[:SPEAKS_WITH]->(wedge), - (gold_leader)-[:SPEAKS_WITH]->(luke), - (luke)-[:SPEAKS_WITH]->(wedge), - (biggs)-[:SPEAKS_WITH]->(leia), - (leia)-[:SPEAKS_WITH]->(red_leader), - (luke)-[:SPEAKS_WITH]->(red_leader), - (biggs)-[:SPEAKS_WITH]->(red_leader), - (biggs)-[:SPEAKS_WITH]->(c_3po), - (c_3po)-[:SPEAKS_WITH]->(red_leader), - (red_leader)-[:SPEAKS_WITH]->(wedge), - (gold_leader)-[:SPEAKS_WITH]->(red_leader), - (biggs)-[:SPEAKS_WITH]->(wedge), - (red_leader)-[:SPEAKS_WITH]->(red_ten), - (biggs)-[:SPEAKS_WITH]->(gold_leader), - (luke)-[:SPEAKS_WITH]->(red_ten), - (han)-[:SPEAKS_WITH]->(rieekan), - (leia)-[:SPEAKS_WITH]->(rieekan), - (c_3po)-[:SPEAKS_WITH]->(derlin), - (han)-[:SPEAKS_WITH]->(zev), - (c_3po)-[:SPEAKS_WITH]->(rieekan), - (ozzel)-[:SPEAKS_WITH]->(piett), - (darth_vader)-[:SPEAKS_WITH]->(piett), - (darth_vader)-[:SPEAKS_WITH]->(ozzel), - (derlin)-[:SPEAKS_WITH]->(leia), - (dack)-[:SPEAKS_WITH]->(luke), - (janson)-[:SPEAKS_WITH]->(wedge), - (luke)-[:SPEAKS_WITH]->(zev), - (darth_vader)-[:SPEAKS_WITH]->(needa), - (needa)-[:SPEAKS_WITH]->(piett), - (luke)-[:SPEAKS_WITH]->(yoda), - (boba_fett)-[:SPEAKS_WITH]->(piett), - (boba_fett)-[:SPEAKS_WITH]->(darth_vader), - (han)-[:SPEAKS_WITH]->(lando), - (lando)-[:SPEAKS_WITH]->(leia), - (c_3po)-[:SPEAKS_WITH]->(lando), - (darth_vader)-[:SPEAKS_WITH]->(lando), - (darth_vader)-[:SPEAKS_WITH]->(han), - (boba_fett)-[:SPEAKS_WITH]->(lando), - (boba_fett)-[:SPEAKS_WITH]->(c_3po), - (c_3po)-[:SPEAKS_WITH]->(darth_vader), - (boba_fett)-[:SPEAKS_WITH]->(han), - (boba_fett)-[:SPEAKS_WITH]->(leia), - (darth_vader)-[:SPEAKS_WITH]->(luke), - (lando)-[:SPEAKS_WITH]->(luke), - (darth_vader)-[:SPEAKS_WITH]->(jerjerrod), - (bib_fortuna)-[:SPEAKS_WITH]->(c_3po), - (c_3po)-[:SPEAKS_WITH]->(jabba), - (jabba)-[:SPEAKS_WITH]->(luke), - (boushh)-[:SPEAKS_WITH]->(jabba), - (boushh)-[:SPEAKS_WITH]->(c_3po), - (boushh)-[:SPEAKS_WITH]->(han), - (boushh)-[:SPEAKS_WITH]->(leia), - (bib_fortuna)-[:SPEAKS_WITH]->(luke), - (bib_fortuna)-[:SPEAKS_WITH]->(jabba), - (han)-[:SPEAKS_WITH]->(mon_mothma), - (admiral_ackbar)-[:SPEAKS_WITH]->(han), - (lando)-[:SPEAKS_WITH]->(mon_mothma), - (admiral_ackbar)-[:SPEAKS_WITH]->(lando), - (admiral_ackbar)-[:SPEAKS_WITH]->(mon_mothma), - (c_3po)-[:SPEAKS_WITH]->(mon_mothma), - (leia)-[:SPEAKS_WITH]->(mon_mothma), - (luke)-[:SPEAKS_WITH]->(mon_mothma), - (admiral_ackbar)-[:SPEAKS_WITH]->(c_3po), - (admiral_ackbar)-[:SPEAKS_WITH]->(leia), - (admiral_ackbar)-[:SPEAKS_WITH]->(luke), - (emperor)-[:SPEAKS_WITH]->(luke), - (lando)-[:SPEAKS_WITH]->(wedge), - (admiral_ackbar)-[:SPEAKS_WITH]->(wedge), - (anakin)-[:SPEAKS_WITH]->(darth_vader), - (anakin)-[:SPEAKS_WITH]->(luke), - (lor_san_tekka)-[:SPEAKS_WITH]->(poe), - (kylo_ren)-[:SPEAKS_WITH]->(lor_san_tekka), - (kylo_ren)-[:SPEAKS_WITH]->(poe), - (captain_phasma)-[:SPEAKS_WITH]->(kylo_ren), - (captain_phasma)-[:SPEAKS_WITH]->(lor_san_tekka), - (captain_phasma)-[:SPEAKS_WITH]->(poe), - (captain_phasma)-[:SPEAKS_WITH]->(finn), - (general_hux)-[:SPEAKS_WITH]->(kylo_ren), - (rey)-[:SPEAKS_WITH]->(unkar_plutt), - (finn)-[:SPEAKS_WITH]->(poe), - (general_hux)-[:SPEAKS_WITH]->(lieutenant_mitaka), - (kylo_ren)-[:SPEAKS_WITH]->(lieutenant_mitaka), - (captain_phasma)-[:SPEAKS_WITH]->(general_hux), - (finn)-[:SPEAKS_WITH]->(rey), - (han)-[:SPEAKS_WITH]->(rey), - (finn)-[:SPEAKS_WITH]->(han), - (bala_tik)-[:SPEAKS_WITH]->(han), - (bala_tik)-[:SPEAKS_WITH]->(rey), - (bala_tik)-[:SPEAKS_WITH]->(finn), - (general_hux)-[:SPEAKS_WITH]->(snoke), - (kylo_ren)-[:SPEAKS_WITH]->(snoke), - (han)-[:SPEAKS_WITH]->(maz), - (finn)-[:SPEAKS_WITH]->(maz), - (maz)-[:SPEAKS_WITH]->(rey), - (han)-[:SPEAKS_WITH]->(poe), - (leia)-[:SPEAKS_WITH]->(poe), - (finn)-[:SPEAKS_WITH]->(leia), - (kylo_ren)-[:SPEAKS_WITH]->(rey), - (poe)-[:SPEAKS_WITH]->(snap), - (admiral_ackbar)-[:SPEAKS_WITH]->(poe), - (c_3po)-[:SPEAKS_WITH]->(poe), - (admiral_statura)-[:SPEAKS_WITH]->(poe), - (han)-[:SPEAKS_WITH]->(snap), - (admiral_ackbar)-[:SPEAKS_WITH]->(snap), - (finn)-[:SPEAKS_WITH]->(snap), - (leia)-[:SPEAKS_WITH]->(snap), - (c_3po)-[:SPEAKS_WITH]->(snap), - (admiral_statura)-[:SPEAKS_WITH]->(snap), - (admiral_statura)-[:SPEAKS_WITH]->(han), - (admiral_ackbar)-[:SPEAKS_WITH]->(finn), - (admiral_ackbar)-[:SPEAKS_WITH]->(admiral_statura), - (c_3po)-[:SPEAKS_WITH]->(finn), - (admiral_statura)-[:SPEAKS_WITH]->(finn), - (admiral_statura)-[:SPEAKS_WITH]->(leia), - (admiral_statura)-[:SPEAKS_WITH]->(c_3po), - (captain_phasma)-[:SPEAKS_WITH]->(han), - (colonel_datoo)-[:SPEAKS_WITH]->(general_hux), - (ello_asty)-[:SPEAKS_WITH]->(poe), - (jess)-[:SPEAKS_WITH]->(snap), - (han)-[:SPEAKS_WITH]->(kylo_ren), - (finn)-[:SPEAKS_WITH]->(kylo_ren), - (jess)-[:SPEAKS_WITH]->(niv_lek), - (niv_lek)-[:SPEAKS_WITH]->(yolo_ziff), - (niv_lek)-[:SPEAKS_WITH]->(poe), - (ello_asty)-[:SPEAKS_WITH]->(niv_lek), - (jess)-[:SPEAKS_WITH]->(yolo_ziff), - (jess)-[:SPEAKS_WITH]->(poe), - (ello_asty)-[:SPEAKS_WITH]->(jess), - (poe)-[:SPEAKS_WITH]->(yolo_ziff), - (ello_asty)-[:SPEAKS_WITH]->(yolo_ziff), - (leia)-[:SPEAKS_WITH]->(rey), - (luke)-[:SPEAKS_WITH]->(rey), - (r2_d2)-[:APPEARS_IN]->(Episode1), - (r2_d2)-[:APPEARS_IN]->(Episode2), - (r2_d2)-[:APPEARS_IN]->(Episode3), - (r2_d2)-[:APPEARS_IN]->(Episode4), - (r2_d2)-[:APPEARS_IN]->(Episode5), - (r2_d2)-[:APPEARS_IN]->(Episode6), - (r2_d2)-[:APPEARS_IN]->(Episode7), - (chewbacca)-[:APPEARS_IN]->(Episode4), - (chewbacca)-[:APPEARS_IN]->(Episode5), - (chewbacca)-[:APPEARS_IN]->(Episode6), - (chewbacca)-[:APPEARS_IN]->(Episode7), - (bb_8)-[:APPEARS_IN]->(Episode7), - (qui_gon)-[:APPEARS_IN]->(Episode1), - (qui_gon)-[:APPEARS_IN]->(Episode3), - (nute_gunray)-[:APPEARS_IN]->(Episode1), - (nute_gunray)-[:APPEARS_IN]->(Episode2), - (nute_gunray)-[:APPEARS_IN]->(Episode3), - (pk_4)-[:APPEARS_IN]->(Episode1), - (pk_4)-[:APPEARS_IN]->(Episode2), - (tc_14)-[:APPEARS_IN]->(Episode1), - (obi_wan)-[:APPEARS_IN]->(Episode1), - (obi_wan)-[:APPEARS_IN]->(Episode2), - (obi_wan)-[:APPEARS_IN]->(Episode3), - (obi_wan)-[:APPEARS_IN]->(Episode4), - (obi_wan)-[:APPEARS_IN]->(Episode5), - (obi_wan)-[:APPEARS_IN]->(Episode6), - (dofine)-[:APPEARS_IN]->(Episode1), - (rune)-[:APPEARS_IN]->(Episode1), - (tey_how)-[:APPEARS_IN]->(Episode1), - (emperor)-[:APPEARS_IN]->(Episode1), - (emperor)-[:APPEARS_IN]->(Episode2), - (emperor)-[:APPEARS_IN]->(Episode3), - (emperor)-[:APPEARS_IN]->(Episode5), - (emperor)-[:APPEARS_IN]->(Episode6), - (captain_panaka)-[:APPEARS_IN]->(Episode1), - (sio_bibble)-[:APPEARS_IN]->(Episode1), - (sio_bibble)-[:APPEARS_IN]->(Episode2), - (jar_jar)-[:APPEARS_IN]->(Episode1), - (jar_jar)-[:APPEARS_IN]->(Episode2), - (jar_jar)-[:APPEARS_IN]->(Episode3), - (tarpals)-[:APPEARS_IN]->(Episode1), - (boss_nass)-[:APPEARS_IN]->(Episode1), - (padme)-[:APPEARS_IN]->(Episode1), - (padme)-[:APPEARS_IN]->(Episode2), - (padme)-[:APPEARS_IN]->(Episode3), - (ric_olie)-[:APPEARS_IN]->(Episode1), - (watto)-[:APPEARS_IN]->(Episode1), - (watto)-[:APPEARS_IN]->(Episode2), - (anakin)-[:APPEARS_IN]->(Episode1), - (anakin)-[:APPEARS_IN]->(Episode2), - (anakin)-[:APPEARS_IN]->(Episode3), - (anakin)-[:APPEARS_IN]->(Episode6), - (sebulba)-[:APPEARS_IN]->(Episode1), - (jira)-[:APPEARS_IN]->(Episode1), - (shmi)-[:APPEARS_IN]->(Episode1), - (shmi)-[:APPEARS_IN]->(Episode2), - (c_3po)-[:APPEARS_IN]->(Episode1), - (c_3po)-[:APPEARS_IN]->(Episode2), - (c_3po)-[:APPEARS_IN]->(Episode3), - (c_3po)-[:APPEARS_IN]->(Episode4), - (c_3po)-[:APPEARS_IN]->(Episode5), - (c_3po)-[:APPEARS_IN]->(Episode6), - (c_3po)-[:APPEARS_IN]->(Episode7), - (darth_maul)-[:APPEARS_IN]->(Episode1), - (kitster)-[:APPEARS_IN]->(Episode1), - (wald)-[:APPEARS_IN]->(Episode1), - (fode_beed)-[:APPEARS_IN]->(Episode1), - (jabba)-[:APPEARS_IN]->(Episode1), - (jabba)-[:APPEARS_IN]->(Episode4), - (jabba)-[:APPEARS_IN]->(Episode6), - (greedo)-[:APPEARS_IN]->(Episode1), - (greedo)-[:APPEARS_IN]->(Episode4), - (valorum)-[:APPEARS_IN]->(Episode1), - (mace_windu)-[:APPEARS_IN]->(Episode1), - (mace_windu)-[:APPEARS_IN]->(Episode2), - (mace_windu)-[:APPEARS_IN]->(Episode3), - (ki_adi_mundi)-[:APPEARS_IN]->(Episode1), - (ki_adi_mundi)-[:APPEARS_IN]->(Episode2), - (yoda)-[:APPEARS_IN]->(Episode1), - (yoda)-[:APPEARS_IN]->(Episode2), - (yoda)-[:APPEARS_IN]->(Episode3), - (yoda)-[:APPEARS_IN]->(Episode5), - (yoda)-[:APPEARS_IN]->(Episode6), - (rabe)-[:APPEARS_IN]->(Episode1), - (bail_organa)-[:APPEARS_IN]->(Episode1), - (bail_organa)-[:APPEARS_IN]->(Episode2), - (bail_organa)-[:APPEARS_IN]->(Episode3), - (general_ceel)-[:APPEARS_IN]->(Episode1), - (bravo_two)-[:APPEARS_IN]->(Episode1), - (bravo_three)-[:APPEARS_IN]->(Episode1), - (captain_typho)-[:APPEARS_IN]->(Episode2), - (captain_typho)-[:APPEARS_IN]->(Episode3), - (senator_ask_aak)-[:APPEARS_IN]->(Episode2), - (orn_free_taa)-[:APPEARS_IN]->(Episode2), - (sola)-[:APPEARS_IN]->(Episode2), - (jobal)-[:APPEARS_IN]->(Episode2), - (ruwee)-[:APPEARS_IN]->(Episode2), - (taun_we)-[:APPEARS_IN]->(Episode2), - (lama_su)-[:APPEARS_IN]->(Episode2), - (boba_fett)-[:APPEARS_IN]->(Episode2), - (boba_fett)-[:APPEARS_IN]->(Episode5), - (jango_fett)-[:APPEARS_IN]->(Episode2), - (owen)-[:APPEARS_IN]->(Episode2), - (owen)-[:APPEARS_IN]->(Episode4), - (beru)-[:APPEARS_IN]->(Episode2), - (beru)-[:APPEARS_IN]->(Episode4), - (cliegg)-[:APPEARS_IN]->(Episode2), - (count_dooku)-[:APPEARS_IN]->(Episode2), - (count_dooku)-[:APPEARS_IN]->(Episode3), - (sun_rit)-[:APPEARS_IN]->(Episode2), - (poggle)-[:APPEARS_IN]->(Episode2), - (plo_koon)-[:APPEARS_IN]->(Episode2), - (plo_koon)-[:APPEARS_IN]->(Episode3), - (odd_ball)-[:APPEARS_IN]->(Episode3), - (general_grievous)-[:APPEARS_IN]->(Episode3), - (fang_zar)-[:APPEARS_IN]->(Episode3), - (mon_mothma)-[:APPEARS_IN]->(Episode3), - (mon_mothma)-[:APPEARS_IN]->(Episode6), - (giddean_danu)-[:APPEARS_IN]->(Episode3), - (clone_commander_gree)-[:APPEARS_IN]->(Episode3), - (clone_commander_cody)-[:APPEARS_IN]->(Episode3), - (tion_medon)-[:APPEARS_IN]->(Episode3), - (captain_antilles)-[:APPEARS_IN]->(Episode3), - (darth_vader)-[:APPEARS_IN]->(Episode3), - (darth_vader)-[:APPEARS_IN]->(Episode4), - (darth_vader)-[:APPEARS_IN]->(Episode5), - (darth_vader)-[:APPEARS_IN]->(Episode6), - (luke)-[:APPEARS_IN]->(Episode4), - (luke)-[:APPEARS_IN]->(Episode5), - (luke)-[:APPEARS_IN]->(Episode6), - (luke)-[:APPEARS_IN]->(Episode7), - (camie)-[:APPEARS_IN]->(Episode4), - (biggs)-[:APPEARS_IN]->(Episode4), - (leia)-[:APPEARS_IN]->(Episode4), - (leia)-[:APPEARS_IN]->(Episode5), - (leia)-[:APPEARS_IN]->(Episode6), - (leia)-[:APPEARS_IN]->(Episode7), - (motti)-[:APPEARS_IN]->(Episode4), - (tarkin)-[:APPEARS_IN]->(Episode4), - (han)-[:APPEARS_IN]->(Episode4), - (han)-[:APPEARS_IN]->(Episode5), - (han)-[:APPEARS_IN]->(Episode6), - (han)-[:APPEARS_IN]->(Episode7), - (dodonna)-[:APPEARS_IN]->(Episode4), - (gold_leader)-[:APPEARS_IN]->(Episode4), - (wedge)-[:APPEARS_IN]->(Episode4), - (wedge)-[:APPEARS_IN]->(Episode5), - (wedge)-[:APPEARS_IN]->(Episode6), - (red_leader)-[:APPEARS_IN]->(Episode4), - (red_ten)-[:APPEARS_IN]->(Episode4), - (gold_five)-[:APPEARS_IN]->(Episode4), - (rieekan)-[:APPEARS_IN]->(Episode5), - (derlin)-[:APPEARS_IN]->(Episode5), - (zev)-[:APPEARS_IN]->(Episode5), - (piett)-[:APPEARS_IN]->(Episode5), - (piett)-[:APPEARS_IN]->(Episode6), - (ozzel)-[:APPEARS_IN]->(Episode5), - (dack)-[:APPEARS_IN]->(Episode5), - (janson)-[:APPEARS_IN]->(Episode5), - (needa)-[:APPEARS_IN]->(Episode5), - (lando)-[:APPEARS_IN]->(Episode5), - (lando)-[:APPEARS_IN]->(Episode6), - (jerjerrod)-[:APPEARS_IN]->(Episode6), - (bib_fortuna)-[:APPEARS_IN]->(Episode6), - (boushh)-[:APPEARS_IN]->(Episode6), - (admiral_ackbar)-[:APPEARS_IN]->(Episode6), - (admiral_ackbar)-[:APPEARS_IN]->(Episode7), - (lor_san_tekka)-[:APPEARS_IN]->(Episode7), - (poe)-[:APPEARS_IN]->(Episode7), - (kylo_ren)-[:APPEARS_IN]->(Episode7), - (captain_phasma)-[:APPEARS_IN]->(Episode7), - (finn)-[:APPEARS_IN]->(Episode7), - (unkar_plutt)-[:APPEARS_IN]->(Episode7), - (rey)-[:APPEARS_IN]->(Episode7), - (general_hux)-[:APPEARS_IN]->(Episode7), - (lieutenant_mitaka)-[:APPEARS_IN]->(Episode7), - (bala_tik)-[:APPEARS_IN]->(Episode7), - (snoke)-[:APPEARS_IN]->(Episode7), - (maz)-[:APPEARS_IN]->(Episode7), - (snap)-[:APPEARS_IN]->(Episode7), - (admiral_statura)-[:APPEARS_IN]->(Episode7), - (yolo_ziff)-[:APPEARS_IN]->(Episode7), - (colonel_datoo)-[:APPEARS_IN]->(Episode7), - (ello_asty)-[:APPEARS_IN]->(Episode7), - (jess)-[:APPEARS_IN]->(Episode7), - (niv_lek)-[:APPEARS_IN]->(Episode7) ----- - -Let's look at some basic information from the database. The following query extracts -all the films that are included in the network. - -[source,cypher,role="runnable backend:graphgist"] ----- -MATCH (m:Movie) -RETURN m.name ----- - -//table - -It seems that the database correctly contains all the seven episodes of Star Wars. - - -== Simple network properties - -Now we can start comparing the individual episodes based on their network properties. Is the original -trilogy different from the prequels in terms of its social network? And how does The Force Awakens -compare to the rest? - -Let's start with looking at the number of characters in each of the episodes. The following -query extracts characters and returns their count aggregated by the movie that they appear in. - -[source,cypher,role="runnable editable backend:graphgist"] ----- -MATCH (m:Movie)<-[:APPEARS_IN]-(character) -RETURN m.name AS movie, count(*) AS characters -ORDER BY m.name; ----- - -//table - -We can immediately see some differences between the movies. The original trilogy (Episodes IV to VI) -has the smallest number of characters. On the other hand, Episode I: The Phantom Menace has the largest number -of characters, almost twice as many. - -How many interactions are there between the characters? In this query, we extract all the links between -two characters that both appear within the same movie and return their count for each movie. This is a -simplification because I'm assuming that if two characters have link between them, then they interact -in every movie where they both appear. - -[source,cypher,role="runnable editable backend:graphgist"] ----- -MATCH (m)<-[:APPEARS_IN]-(character)-[:SPEAKS_WITH]-(character2)-[:APPEARS_IN]->(m) -RETURN m.name AS movie, count(*) AS edges -ORDER BY m.name; ----- - -//table - -The results show a similar story, where the original trilogy has smaller number of links -between the characters and their social networks are smaller. This corresponds to the -tighter and more organized structure of the original films, which have smaller number of -characters that bind the story together more. - - -== Extracting social network relations - -We can also use the database to extract the social network for each of the Star Wars movies. -The following query extracts all the characters that appear in a specific episode and -all the interactions between them. I'm using the Episode VII -as an example: - -[source,cypher,role="runnable editable graph backend:graphgist"] ----- -MATCH network=(m)<-[:APPEARS_IN]-(character1)-[r]-(character2)-[:APPEARS_IN]->(m) -WHERE m.name='Episode VII: The Force Awakens' -RETURN character1, r, character2 ----- - -//graph_result - -We can see that there are parts of the network that correspond to the Dark side characters, -including Snoke, General Hux and others. There is also a cluster of nodes that represent -Resistance pilots, and who interact mainly with each other and with Poe. Let's explore the -network in more detail. - -== Importance of characters in the network - -A basic measure of centrality in a social network is the *degree centrality*. This is -simply the number of connections each node has in the network. -In our Star Wars network, this corresponds to the total number of scenes where each character speaks. -The following query extracts the number of `SPEAKS_WITH` relations for each character and returns -the top 10 results. - -[source,cypher,role="runnable editable backend:graphgist"] ----- -MATCH (ch1)-[:SPEAKS_WITH]-(ch2) -RETURN ch1.name AS name, count(*) AS degree -ORDER BY count(*) DESC LIMIT 10; ----- - -//table - -This result is strongly affected by the large social networks of the prequels. Anakin -comes out at the top as the person that speaks with the largest number of other characters. -And because of the prequels, even Jar Jar made it into the top 10. - -We can instead look at who has the largest degree within the individual films. This query -extracts the characters that speak to each other and appear within the same film, and counts -the number of such connections for each character. I'm using the orignal Episode IV: A New Hope -in the example. - -[source,cypher,role="runnable editable backend:graphgist"] ----- -MATCH (m)<-[:APPEARS_IN]-(ch1)-[:SPEAKS_WITH]-(ch2)-[:APPEARS_IN]->(m) -WHERE m.name='Episode IV: A New Hope' -RETURN ch1.name AS name, count(*) AS degree -ORDER BY count(*) DESC LIMIT 5; ----- - -//table - -Here, Luke Skywalker is the most central character, followed by Leia and the droids. - -We can also visualize the results and look at the specific interactions. -For example, the following query extracts all the -characters that interact with Luke Skywalker, together with the movies that they appear in. - -[source,cypher,role="runnable editable graph backend:graphgist"] ----- -MATCH path=(luke:Person {name: 'LUKE'})-[:SPEAKS_WITH]-(other)-[:APPEARS_IN]-(movie) -RETURN path ----- - -//graph_result - -Here we can see that some of the characters cluster around specific episodes (these are the -characters that appear only the specific episode). Other characters that interact with Luke -across several other episodes appear as more central nodes in the network. - -== Summary - -This GraphGist showed how to do simple social network analysis using the -Star Wars social network that I extracted from the film scripts. We looked at how to -extract and summarize sub-networks for individual episodes, and for specific characters. -Overall, this was my first experience with Neo4j and it was very easy to create the network and -extract interesting information from the database. diff --git a/preview-src/image-borders.adoc b/preview-src/image-borders.adoc deleted file mode 100644 index dc7b4ef0..00000000 --- a/preview-src/image-borders.adoc +++ /dev/null @@ -1,75 +0,0 @@ -= Image display options -:page-theme: docs -// :page-styles: image-border - - -[abstract] --- -Display images with border or box-shadow --- - -- set `:page-styles: image-border` or `:page-styles: image-shadow` in a playbook, _antora.yml_ or in a page header to add border or shadow to all pages in the docset, component, or page. -- set `[.border]` or `[.shadow]` for individual images -- combine border and shadow settings to apply both styles -- use `[.no-border]` or `[.no-shadow]` to override a global setting for a specific image - - -== Border - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! Lorem ipsum dolor sit amet, consectetur adipiscing elit. - ----- -[.border] -image:overview.png[] ----- - -[.border] -image:overview.png[] - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - - -== Shadow - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - ----- -[.shadow] -image:overview.png[] ----- - -[.shadow] -image:overview.png[] - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - -== Border and shadow - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - ----- -[.border.shadow] -image:overview.png[] ----- - -[.border.shadow] -image:overview.png[] - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - -== No styles - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! - -image:overview.png[] - -Mauris eget leo nunc, nec tempus mi? Curabitur id nisl mi, ut vulputate urna. -Quisque porta facilisis tortor, vitae bibendum velit fringilla vitae! \ No newline at end of file diff --git a/preview-src/kb-article.adoc b/preview-src/kb-article.adoc deleted file mode 100644 index 1086fde4..00000000 --- a/preview-src/kb-article.adoc +++ /dev/null @@ -1,84 +0,0 @@ -= How to estimate initial memory configuration -:page-layout: kb-article -:page-theme: kb -:author: Dave Gordon -:neo4j-versions: 2.3,3.0 -:tags: heap, memory, jvm, page-cache, cache -:category: operations - -The initial and eventual memory configuration parameters can be a moving target, based on how your store changes in size and how your workload increases or changes over time. - -This guidance is meant for the initial configuration. - -In order to decide on an appropriate configuration, you need the following information: - -* Amount of physical memory on the machine hosting Neo4j. -* Estimates of the following: -** Number of nodes. -** Number of relationships. -** Average number of properties per node and per relationship. - -A fairly high-level rule of thumb is `Total Physical Memory = Heap + Page Cache + OS Memory`. - -Usually reserving 1-2GB for the OS is sufficient. The heap and page cache are detailed below. - -== First, we need to decide on a good heap size. - -A heap should not be overly large, as that can cause much longer Stop-the-World pauses when a full garbage collection (GC) cycle is needed. -It should also be big enough to allow enough memory for your workload. -On systems with a large amount of physical memory (>56GB), keeping the heap to 16GB and under typically works well. - -[source,cypher] ----- -MATCH (m:Movie) -OPTIONAL MATCH (m)<-[:WORKED_ON]-(a:Animator) -WITH m, a -WHERE m.releaseYear > 1999 AND a IS NOT NULL -RETURN m, collect(a) as animators ----- - -== Second, consider the page cache. - -This is where the store files will be mapped in main memory for quicker access. -The default page-cache size is 50% of the available memory. -A good rule of thumb is Store `size + expected growth + 10%`. -So, for a store that is 5GB in size, and you expect that to double in size in the next year, you would ideally allocate `5GB + 5GB + 1GB = 11GB`. - -[NOTE] -This last section is no longer relevant for Neo4j versions 2.3 and later. - -== Lastly, let's look at the object cache options. - -The object cache is where nodes, relationships, and other objects are mapped to main memory. -By default on Neo4j 2.2.x, this is set to High Performance Cache (hpc). -On small stores (~10GB or smaller), this performs well. -On larger stores, you will probably see better performance turning off the cache (set `cache_type=none`). - -If you are using the object cache and need to tune it further, consider starting with the `cache.memory_ratio` option. -This is on-heap, so it is the percentage of the heap to use for object cache. -The default is 50%, but you can increase this a bit (to as high as 65-70%), especially if the JVM is not using all of its heap consistently. - -== Install - -*Steps:* - -. Navigate to the NEO4J_HOME directory: -+ -[source,shell,role=noheader] ----- -$ cd /var/lib/neo4j/ ----- - -. Get the 3.0 software: -+ -[source,shell,role=noheader] ----- -$ wget http://www.neo4j.com/customer/download/neo4j-enterprise-3.0.4-unix.tar.gz ----- - -. Backup the existing Neo4j 2.3.7 install: -+ -[source,shell,role=noheader] ----- -$ ./neo4j-enterprise-2.3.7/bin/neo4j-backup -to /tmp/neo4j_2.3.7_backup -host 127.0.0.1 ----- diff --git a/preview-src/kb-index.adoc b/preview-src/kb-index.adoc deleted file mode 100644 index 5b2d3109..00000000 --- a/preview-src/kb-index.adoc +++ /dev/null @@ -1,6 +0,0 @@ -= Knowledge Base -// the content of this page will be automatically generated from the catalog -:page-layout: kb-index -:page-theme: kb -:page-component: kb -:page-slug: kb diff --git a/preview-src/labs.adoc b/preview-src/labs.adoc deleted file mode 100644 index 2ea8108b..00000000 --- a/preview-src/labs.adoc +++ /dev/null @@ -1,101 +0,0 @@ -= Neo4j Labs -:description: Incubating the next generation of graph developer tooling. GraphQL and GRANDstack, Algorithms, APOC, Kafka, ETL Tool, neovis.js, and more. -// tag::layout[] -:page-layout: landing -:page-theme: labs -// end::layout[] -// :page-herotitle: Neo4j Labs -// :page-herosubtitle: Incubating the Next Generation of Graph Developer Tooling -:page-toclevels: -1 -:page-disabletracking: - -[.hero] -== Neo4j Labs - -Incubating the Next Generation of + -Graph Developer Tooling - -[.buttons] -* <> -* <> -* <> - -[.secondary.leading] -== What is Neo4j Labs? - -Neo4j Labs is a collection of the latest innovations in graph technology. -These projects are designed and developed by the Neo4j team as a way to test functionality and extensions of our product offerings. -A project typically either graduates to being maintained as a formal Neo4j project or is deprecated with source made available publicly. - -These Labs are supported via the online community. -They are actively developed and maintained, but we don't provide any SLAs or guarantees around backwards compatibility and deprecation. - - -== Current Projects - -=== Graph Algorithms Library - -To enable large scale graph analytics and to support machine learning pipelines, we developed the link:https://neo4j.com/developer/graph-algorithms/[Neo4j Graph Algorithms^] library, which covers many widely used algorithms. -The library offers highly parallelized implementation that works well with large scale graphs. - -[#goals.incremental] -=== xref:grandstack:index.adoc[GraphQL and GRANDstack] -GraphQL has become a comprehensive stack for API development and consolidation. -Our link:https://neo4j.com/labs/grandstack-graphql[GRANDstack^] and Neo4j-GraphQL-js offerings combine the most common tools and frameworks: GraphQL, React, Apollo and Neo4j Database. - - -=== xref:apoc:index.adoc[Awesome Procedures on Cypher (APOC)] - -As the most comprehensive developer toolkit for Neo4j, the xref:apoc:index.adoc[APOC library] provides a wide range of procedures and functions that make your life as a Neo4j user easier. -APOC includes data integration, graph refactoring, data conversion, operational functionality and more. - - -=== xref:halin:index.adoc[Halin Monitoring App] - -The link:https://neo4j.com/labs/halin[Halin Monitoring App] allows you to monitor your Neo4j deployment and identify bottlenecks or incorrect configurations, with insights into currently running queries and workloads. -The app also provides access to metrics and logs. - - -=== xref:streams:index.adoc[Kafka Integration] - -Streaming event data is an integral part of most modern data architectures. -With xref:streams:index.adoc[Neo4j Kafka Integration] you can integrate Neo4j both as a sink or source into your setup. -The integration is available as a Kafka Connect plugin and Neo4j Server extension.. - - -=== xref:etl:index.adoc[ETL Tool] - -Having an easy way of loading data from relational databases into Neo4j is one of the first steps many users take. -The xref:etl:index.adoc[Neo4j-ETL Tool] makes this easy by inferring a graph model from the relational meta model that you can then adapt to fit your needs. -Given that transformation, this tool also handles the actual import for you. - -=== xref:neosemantics:index.adoc[Neosemantics] - -xref:neosemantics:index.adoc[Neosemantics] integrates RDF and Linked Data with Neo4j. -It allows to import a wide variety of RDF formats and to expose Neo4j property graphs as Linked Data. -Ontology and Inference are also partially supported. - - - -=== Other Active Projects - -* link:https://github.com/neo4j-contrib/neovis.js/[Neovis.js^], a graph visualization toolkit for the web -* link:https://github.com/neo4j-contrib/neo4j-spark-connector/[The Neo4j-Spark-Connector^], library to exchange graph data between Neo4j and Apache Spark - -[.secondary] -== Frequently Asked Questions - -=== Are these safe to use in production? -Current Neo4j Labs projects are being actively worked on by our engineers, and may be rough around the edges, with changing APIs, as they push the edge of the envelope. Therefore, we cannot provide official commercial support for these projects or guarantee longevity. However, some Neo4j customers and users still love the functionality of these projects and choose to continue using them in production environments. - -=== How do I contribute? -We welcome contributions for those labs which are open source projects. You'll find links to GitHub repositories - feel free to submit PRs. We've also created a discussion category for Labs on link:https://community.neo4j.com[community.neo4j.com^] - -=== Which Neo4j Labs projects have graduated? -The link:https://hub.docker.com/_/neo4j[Neo4j Docker containers] started off as a Labs project to explore how well Neo4j would run in a containerized environment. They quickly gained popularity and are heavily used by both Neo4j and customers, so we've graduated them to be officially part of the Neo4j release distribution. - -We've also had features originally implemented as plugins and extensions moved into the core product. This includes link:https://neo4j.com/graphconnect-2018/session/neo4j-spatial-mapping[spatial functionality^] and APOC link:https://neo4j.com/docs/operations-manual/3.5/reference/procedures/[meta graph^] plus link:https://neo4j.com/docs/operations-manual/current/performance/index-configuration/fulltext/[full text indexing^]. - -=== Which Neo4j Labs projects have been deprecated? -The MongoDB Doc Manager and Cassandra Connector have both been deprecated. The source is still available on GitHub, but we found most developers could accomplish similiar goals by using APOC, Kafka and other technologies. - diff --git a/preview-src/links.adoc b/preview-src/links.adoc deleted file mode 100644 index 72cb3862..00000000 --- a/preview-src/links.adoc +++ /dev/null @@ -1,39 +0,0 @@ -= Links -:nofooter: -:neo4j-docs-base-uri: https://neo4j.com/docs - -== angle brackets - -<> - - -== xref - -xref:labs.adoc[] - - -[[to-docs]] -== link to neo4j.com/docs - -internal: link:https://neo4j.com/docs[neo4j.com/docs] - -external: link:https://neo4j.com/docs[neo4j.com/docs^] - -attribute: link:{neo4j-docs-base-uri}[neo4j.com/docs] - -attribute (external): link:{neo4j-docs-base-uri}[neo4j.com/docs^] - - -== link to neo4j.com - -internal: link:https://neo4j.com[neo4j.com] - -external: link:https://neo4j.com[neo4j.com^] - - -== link to example.com - -internal: link:https://example.com[example.com] - -external: link:https://example.com[example.com^] - diff --git a/preview-src/lists.adoc b/preview-src/lists.adoc deleted file mode 100644 index 0d0a7239..00000000 --- a/preview-src/lists.adoc +++ /dev/null @@ -1,13 +0,0 @@ -= Lists - -== Bullet point - -. Example 1 -. Example 2 -. Example 2 - -== Numbered - -* Example 1 -* Example 2 -* Example 2 \ No newline at end of file diff --git a/preview-src/neo4j-gds-certify.adoc b/preview-src/neo4j-gds-certify.adoc deleted file mode 100644 index 4cfa965d..00000000 --- a/preview-src/neo4j-gds-certify.adoc +++ /dev/null @@ -1,65 +0,0 @@ -= Become Certified for Neo4j Graph Data Science -:page-layout: training-certification -:page-certification-id: rmq60244152a8a26 -:page-toclevels: -1 - -The Neo4j Graph Data Science Library enables data scientists to execute graph algorithms that operate on the nodes and relationships in a graph. - -== Become Certified in Neo4j Graph Data Science - -Now is the perfect time to show your employer, customers and colleagues that you are an expert in the Neo4j Graph Data Science Library. - -Take the Neo4j Graph Data Science Certification exam right now, and you’ll be done in 60 minutes or less. - -image::https://dist.neo4j.com/wp-content/uploads/20210212123424/Neo4j_GDS.png[width=350px] - -== Frequently Asked Questions - -How much does it cost to take the exam?:: -No cost – it’s completely free! - -What areas are tested in the exam?:: -The Neo4j Graph Data Science Certification exam tests you in the following areas: -+ -- General use of the Neo4j Graph Data Science Library. -- Graph Data Science workflow used during analysis. -- Using specific graph algorithms. - -How long is the exam?:: -The exam includes 40 questions in 60 minutes. - -What score do I need in order to pass?:: -You must score 80% or above in order to be certified. - -Can I retake the exam?:: -Yes, if you fail to achieve an 80% score, you can retake the certification exam later after learning a bit more about the Graph Data Science Library. Note that you can retake the exam after a 24-hour period. - -Will I get a certificate document?:: -Yes, you will get a certificate to print or save that indicates your achievement. - -Where can I learn the required skills?:: -Any of the following are great resources for learning the skills you need for the Neo4j Graph Data Science Certification: -+ --- -These free online training courses teach you how to use Cypher and Neo4j: - -. https://neo4j.com/graphacademy/training-overview-40/enrollment/[Overview of Neo4j 4.x] -. https://neo4j.com/graphacademy/training-querying-40/enrollment/[Querying with Cypher in Neo4j 4.x] -. https://neo4j.com/graphacademy/training-updating-40/enrollment/[Creating Nodes and Relationships in Neo4j 4.x] -. https://neo4j.com/graphacademy/training-best-practices-40/enrollment/[Using Indexes and Query Best Practices in Neo4j 4.x] -. https://neo4j.com/graphacademy/training-importing-data-40/enrollment/[Importing Data with Neo4j 4.x] - -These free online training courses teach you how to use the algorithms and workflow of the Neo4j Graph Data Science Library: - -- https://neo4j.com/graphacademy/training-iga-40/enrollment/[Introduction to Graph Algorithms in Neo4j 4.x] -- https://neo4j.com/graphacademy/training-gdsds-40/enrollment/[Using a Machine Learning Workflow for Link Prediction] -- https://neo4j.com/graphacademy/training-gdsaa-40/enrollment/[Applied Data Science for Web Applications] - -Here are other resources you can use to prepare for the certification exam: - -- https://neo4j.com/docs/graph-data-science/current/[Neo4j Graph Data Science Documentation] -- https://neo4j.com/developer/graph-data-science/[Neo4j Graph Data Science Developer Pages] -- https://neo4j.com/docs/cypher-manual/current/[The Neo4j Cypher Manual] --- - -If you have questions around the Neo4j Certification Program, please send us an email to certification@neo4j.com. diff --git a/preview-src/private-page.adoc b/preview-src/private-page.adoc deleted file mode 100644 index 573196c6..00000000 --- a/preview-src/private-page.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= Private Page -:page-no-index: -:page-no-canonical: diff --git a/preview-src/promos-ad-include.adoc b/preview-src/promos-ad-include.adoc deleted file mode 100644 index 1cfa6c79..00000000 --- a/preview-src/promos-ad-include.adoc +++ /dev/null @@ -1,6 +0,0 @@ -:page-ad-icon: mortarboard -:page-ad-title: Building Neo4j Applications with .NET -:page-ad-description: Learn how to build a movie recommendation website using the Neo4j NET Driver. -:page-ad-link: https://graphacademy.neo4j.com/courses/app-dotnet/?ref=docs-ad-dotnet -:page-ad-underline-role: button -:page-ad-underline: Enroll for free \ No newline at end of file diff --git a/preview-src/promos-include.adoc b/preview-src/promos-include.adoc deleted file mode 100644 index 89e93e86..00000000 --- a/preview-src/promos-include.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[.promo.promo-graphacademy] -==== -Take our free, self-paced courses to learn link:https://graphacademy.neo4j.com/courses/app-typescript/?ref=docs-promo-typescript[how to build type-safe Neo4j applications with TypeScript^] or link:https://graphacademy.neo4j.com/courses/app-nodejs/?ref=docs-promo-typescript[how to build a Neo4j-backed movie recommendation site with Node.js^]. -==== diff --git a/preview-src/promos.adoc b/preview-src/promos.adoc deleted file mode 100644 index b58e650d..00000000 --- a/preview-src/promos.adoc +++ /dev/null @@ -1,52 +0,0 @@ -= Promo Blocks -:author: Neo4j -:category: development -:tags: community, contributions, share -include::preview-src/promos-ad-include.adoc[] - - -For an example ad block in the sidebar, look to the right. -The attributes are set by the `include::` on line 5. - -== Some non-graphacademy promo - -[.promo] -==== -This is something worthy to promote but it doesn't have an icon or anything. -==== - -== One Liner - -[.promo.promo-graphacademy] -==== -New to Neo4j? Take our free introductory -link:#[Neo4j Fundamentals course^]. -==== - -[.promo.promo-graphacademy] -==== -Learn everything about Graph Algorithms and Machine Learning Pipelines with our -link:#[Graph Data Science Fundamentals course^]. -==== - -== Learning Path - -[.promo.promo-graphacademy] -==== -You can learn about this topic and so much more in our link:#[Data Reporting Learning Path^]: - -* link:#[Foo Fundamentals^]. -* link:#[Introduction to Bar^]. -* link:#[Baz for Data Scientists^]. -==== - -== Python Example - -[.promo.promo-graphacademy] -==== -Learn how to use the Neo4j Python Driver to build a Neo4j-backed movie recommendation website in the link:https://graphacademy.neo4j.com/courses/app-python/?ref=docs-promo[free Building Neo4j Applications with Python^] course on link:https://graphacademy.neo4j.com/?ref=docs-promo[Neo4j GraphAcademy^]. -==== - -== Include Example - -include::preview-src/promos-include.adoc[] diff --git a/preview-src/security-docs.adoc b/preview-src/security-docs.adoc deleted file mode 100644 index aafe30b1..00000000 --- a/preview-src/security-docs.adoc +++ /dev/null @@ -1,143 +0,0 @@ -= Neo4j Security -:page-layout: docs-ndl -:page-role: security-docs hub -:page-theme: docs -:page-hide-nav-title: true -// :page-disablefeedback: true -:!toc: -:page-toclevels: -1 - -[.cards] -== Security documentation - -=== Cypher - -[.icon] -image:icons/ndl/deployment-options.svg[] - -[.list] -* link:{docs-home}/cypher-manual/current/clauses/load-csv/[Load CSV] + -* link:https://neo4j.com/developer/kb/protecting-against-cypher-injection/[Cypher injection] + -* link:https://neo4j.com/developer/kb/protecting-against-ssrf/[Server Side Request Forgery (SSRF)] - - -=== Database administration - -[.icon] -image:icons/ndl/deployment-options.svg[] - -[.list] -* link:{docs-home}/operations-manual/current/database-administration/[Database management] + -* link:{docs-home}/operations-manual/current/database-administration/aliases/manage-aliases-standard-databases/[Database alias management] + -* link:{docs-home}/operations-manual/current/tutorial/access-control/[Access control] + -* link:{docs-home}/operations-manual/current/authentication-authorization/[Authentication and authorization] + -* link:{docs-home}/operations-manual/current/security/[Network security] + -* link:{docs-home}/operations-manual/current/docker/security/[SSL encryption in a Neo4j Docker container] + -* link:{docs-home}/operations-manual/current/kubernetes/authentication-authorization/[Authentication and authorization using Helm charts] + -* link:{docs-home}/operations-manual/current/kubernetes/security/[Configuring SSL using Helm charts] - - -=== Neo4j Ops Manager - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:{docs-home}/ops-manager/current/installation/server/[Server installation] + -* link:{docs-home}/ops-manager/current/installation/self-signed-certificate/[Self-Signed Certificate Generation] + -* link:{docs-home}/ops-manager/current/installation/docker/[Docker server security] + -* link:{docs-home}/ops-manager/current/administration/security-manager/[Security manager] + - - -=== Neo4j Aura - -[.icon] -image:icons/ndl/deployment-options.svg[] - -[.list] -* link:{docs-home}/aura/platform/security/secure-connections/[Secure connections] + -* link:{docs-home}/aura/platform/security/secure-connections/#_network_access[Network access] + -* link:{docs-home}/aura/platform/security/secure-connections/#_private_endpoints[Private endpoints] + -* link:{docs-home}/aura/platform/security/secure-connections/#_supported_tls_cipher_suites[TLS cypher suites] + -* link:{docs-home}/aura/platform/security/single-sign-on/[Single Sign-On (SSO)] + -* link:{docs-home}/aura/platform/security/encryption/[Encryption] + -* link:{docs-home}/aura/platform/security/encryption/#_customer_managed_keys[Customer Managed Keys] - - -=== Neo4j Browser - -[.icon] -image:icons/ndl/icon-neo4j.svg[] - -[.list] -* link:{docs-home}/browser-manual/current/operations/dbms-connection/[DBMS encryption] + -* link:{docs-home}/browser-manual/current/operations/credentials-handling/[Browser credentials handling] + -* link:{docs-home}/browser-manual/current/operations/browser-sso/[Browser Single Sign-On] - - -=== Neo4j GraphQL - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:{docs-home}/graphql/current/authentication-and-authorization/[Authentication and Authorization] - - -=== Neo4j HTTP API - -[.icon] -image:icons/ndl/icon-import.svg[] - -[.list] -* link:{docs-home}/http-api/current/authentication-authorization/[Authentication and authorization] - - -=== Neo4j-OGM - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:{docs-home}/ogm-manual/current/reference/#reference:configuration:driver:tsl[Transport Layer Security (TLS/SSL)] + -* link:{docs-home}/ogm-manual/current/reference/#reference:configuration:driver:credentials[Credentials] - - -=== Neo4j Connectors - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:{docs-home}/spark/current/aura/#_connecting_to_auradb_from_spark_on_databricks[Connecting to AuraDB from Spark + -on Databricks] -* link:https://docs.spring.io/spring-data/neo4j/reference/auditing.html[Auditing] + -* link:https://docs.spring.io/spring-data/neo4j/reference/faq.html#faq.multidatabase[Multiple databases configuration] + -* link:https://docs.spring.io/spring-data/neo4j/reference/faq.html#faq.impersonation[User impersonation] -* link:https://dist.neo4j.org/Neo4j-BI-Connector-JDBC-1.0.10-docs.pdf?_ga=2.24062010.1448679670.1660555628-1448477576.1652358840[JDBC security and authentication] + -* link:https://dist.neo4j.org/Neo4j-BI-Connector-ODBC-1.0.1-docs.pdf?_ga=2.94333341.1448679670.1660555628-1448477576.1652358840[ODBC security and authentication] - - -=== Neo4j Labs - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:https://neo4j.com/labs/#_are_these_safe_to_use_in_production[Overview] + -* link:https://neo4j.com/labs/apoc/4.4/installation/#restricted[APOC installation restrictions] + -* link:https://neo4j.com/labs/apoc/4.4/config/[APOC configuration] + -* link:https://neo4j.com/labs/neo4j-helm/1.0.0/networking/[Neo4j-Helm networking and security] + -* link:https://neo4j.com/labs/neo4j-helm/1.0.0/configreference/[Neo4j-Helm configuration reference] - - -=== Neo4j Bloom - -[.icon] -image:icons/ndl/icon-library.svg[] - -[.list] -* link:{docs-home}/bloom-user-guide/current/about-bloom/#_security[Overview] + -* link:{docs-home}/bloom-user-guide/current/advanced-installation/[Advanced installation and configuration] + -* link:{docs-home}/bloom-user-guide/current/bloom-installation/installation-activation/#_bloom_server[Bloom server setup] + -* link:{docs-home}/bloom-user-guide/current/bloom-tutorial/gds-integration/#_using_gds_algorithms_in_bloom[Using GDS algorithms in Bloom] \ No newline at end of file diff --git a/preview-src/sidebar-headings-ad.adoc b/preview-src/sidebar-headings-ad.adoc deleted file mode 100644 index 7505928a..00000000 --- a/preview-src/sidebar-headings-ad.adoc +++ /dev/null @@ -1,14 +0,0 @@ -= Page with ad and subheadings -:page-ad-icon: mortarboard -:page-ad-title: Free, Hands-on training with Neo4j GraphAcademy -:page-ad-description: We're here to guide you on a fun and engaging journey to mastering Neo4j with free, hands-on courses. -:page-ad-link: https://graphacademy.neo4j.com/?ref=promo-generic -:page-ad-underline-role: button -:page-ad-underline: Enroll now - - -== Section 1 -This page has subheadings, so `toc-menu` is generated. - -== Section 2 -This page also has an ad, which should be displayed below the page contents. diff --git a/preview-src/sidebar-headings-no-ad.adoc b/preview-src/sidebar-headings-no-ad.adoc deleted file mode 100644 index f7534b1d..00000000 --- a/preview-src/sidebar-headings-no-ad.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Page with subheadings but no ad - - -== Section 1 -This page has subheadings, so page contents is displayed. - -== Section 2 -There is no ad for this page. diff --git a/preview-src/sidebar-no-headings-ad.adoc b/preview-src/sidebar-no-headings-ad.adoc deleted file mode 100644 index dd839d4f..00000000 --- a/preview-src/sidebar-no-headings-ad.adoc +++ /dev/null @@ -1,11 +0,0 @@ -= Page with ad and no subheadings -:page-ad-icon: mortarboard -:page-ad-title: Free, Hands-on training with Neo4j GraphAcademy -:page-ad-description: We're here to guide you on a fun and engaging journey to mastering Neo4j with free, hands-on courses. -:page-ad-link: https://graphacademy.neo4j.com/?ref=promo-generic -:page-ad-underline-role: button -:page-ad-underline: Enroll now - -This page has no subheadings. - -But we still want the `toc-ad` to be displayed. \ No newline at end of file diff --git a/preview-src/sidebar-no-headings-no-ad.adoc b/preview-src/sidebar-no-headings-no-ad.adoc deleted file mode 100644 index 6bfc72c7..00000000 --- a/preview-src/sidebar-no-headings-no-ad.adoc +++ /dev/null @@ -1,5 +0,0 @@ -= Page with no subheadings and no ad - -This page has no subheadings. - -It has no ad to display so there should be no `` in the HTML. \ No newline at end of file diff --git a/preview-src/tables-no-captions.adoc b/preview-src/tables-no-captions.adoc deleted file mode 100644 index 156b3e14..00000000 --- a/preview-src/tables-no-captions.adoc +++ /dev/null @@ -1,271 +0,0 @@ -= Tables -:nofooter: -:page-ogtitle: This page uses the page-ogtitle attribute to generate a custom title for SEO meta -:page-styles: hide-table-captions - -.No striping -// Alternative to stripes attributes is -// setting role "stripes-none" as [.stripes-none,cols="1,2"]. -[stripes=none,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.All rows -// Alternative to stripes attributes is -// setting role "stripes-all" as [.stripes-all,cols="1,2"]. -[stripes=all,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Odd rows -// Alternative to stripes attributes is -// setting role "stripes-odd" as [.stripes-odd,cols="1,2"]. -[stripes=odd,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Even rows (default) -// Alternative to stripes attributes is -// setting role "stripes-even" as [.stripes-even,cols="1,2"]. -[stripes=even,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Hover -[stripes=hover,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Table with top and bottom frame (topbot) -[frame="topbot"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with no frame (none) -[frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with only sides frame (sides) -[frame="sides"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with default frame (all) -[frame="all"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with no grid (none) -[grid="none", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only columns grid (cols) -[grid="cols", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only rows grid (rows) -[grid="rows", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with default rows and columns grid (all) -[grid="all", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -== Setup and Cypher Refresher - -[frame="none", cols="^.^,<.^"] -|=== -a|image::sandbox.png[Neo4j Sandbox,width=500,align=center] -a| -Neo4j Sandbox is a hosted Neo4j tool that allows you to run private instances of Neo4j without having to install Neo4j locally. You can choose Neo4j Sandbox usecases that come pre-loaded with datasets and your Neo4j Sandbox instances can be accessed over the internet, making them useful for building sample applications. While Neo4j Browser is the primary way to interact with Neo4j instances hosted by Neo4j Sandbox, for this course you will also connect your sandbox instance to a simple web application. -|=== - -== Breaking long text - -Long parameter, var, or option names shouldn't wrap - -.Results -[opts="header",cols="1,1,6"] -|=== -| Name | Type | Description -| nodes | int | The number of nodes considered. -| writeProperty | string | The property name written back to. -| createMillis | int | Milliseconds for loading data. -| computeMillis | int | Milliseconds for running the algorithm. -| writeMillis | int | Milliseconds for writing result data back. -| centralityDistribution | Map | Map containing min, max, mean as well as p50, p75, p90, p95, p99 and p999 percentile values of centrality values. -|=== - -In case a value or long string is used in a link but not formatted as code - -|=== -| text | link -| text | link:example.com[bolt.connections,bolt.messages_received,bolt.messages_started,dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt] -|=== - -The next table includes a large codeblock, which needs to wrap - -.metrics.filter -[cols="<1s,<4"] -|=== -|Description -a|Specifies which metrics should be enabled by using a comma separated list of globbing patterns. Only the metrics matching the filter will be enabled. For example '*check_point*,neo4j.page_cache.evictions' will enable any checkpoint metrics and the pagecache eviction metric. -|Valid values -a|metrics.filter, a ',' separated list with elements of type 'A simple globbing pattern that can use '*' and '?'.'. -|Default value -m|*bolt.connections*,*bolt.messages_received*,*bolt.messages_started*,*dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt,*causal_clustering.core.replication_fail,*check_point.duration,*check_point.total_time,*cypher.replan_events,*ids_in_use.node,*ids_in_use.property,*ids_in_use.relationship,*pool.transaction.*.total_used,*pool.transaction.*.used_heap,*pool.transaction.*.used_native,*store.size*,*transaction.active_read,*transaction.active_write,*transaction.committed*,*transaction.last_committed_tx_id,*transaction.peak_concurrent,*transaction.rollbacks*,*page_cache.hit*,*page_cache.page_faults,*page_cache.usage_ratio,*vm.file.descriptors.count,*vm.gc.time.*,*vm.heap.used,*vm.memory.buffer.direct.used,*vm.memory.pool.g1_eden_space,*vm.memory.pool.g1_old_gen,*vm.pause_time,*vm.thread* - -|=== - -== Table Text Wrap - -Tables showing word-break behavior - -=== Text, links, and inline code - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Table with better column widths: - -[opts="header",cols="2,1,1m,1,5"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Tables with `role=no-break`: - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -== table link target - -A section for table links to point to \ No newline at end of file diff --git a/preview-src/tables-no-toc.adoc b/preview-src/tables-no-toc.adoc deleted file mode 100644 index bb0c5d99..00000000 --- a/preview-src/tables-no-toc.adoc +++ /dev/null @@ -1,281 +0,0 @@ -= Tables with no in-page Contents -:nofooter: -:page-ogtitle: This page uses the page-ogtitle attribute to generate a custom title for SEO meta -:page-toclevels: -1 - -.No striping -// Alternative to stripes attributes is -// setting role "stripes-none" as [.stripes-none,cols="1,2"]. -[stripes=none,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.All rows -// Alternative to stripes attributes is -// setting role "stripes-all" as [.stripes-all,cols="1,2"]. -[stripes=all,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Odd rows -// Alternative to stripes attributes is -// setting role "stripes-odd" as [.stripes-odd,cols="1,2"]. -[stripes=odd,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Even rows (default) -// Alternative to stripes attributes is -// setting role "stripes-even" as [.stripes-even,cols="1,2"]. -[stripes=even,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Hover -[stripes=hover,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.No header -[cols="1,2"] -|=== -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Table with top and bottom frame (topbot) -[frame="topbot"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with no frame (none) -[frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with only sides frame (sides) -[frame="sides"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with default frame (all) -[frame="all"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with no grid (none) -[grid="none", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only columns grid (cols) -[grid="cols", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only rows grid (rows) -[grid="rows", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with default rows and columns grid (all) -[grid="all", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -== Setup and Cypher Refresher - -[frame="none", cols="^.^,<.^"] -|=== -a|image::sandbox.png[Neo4j Sandbox,width=500,align=center] -a| -Neo4j Sandbox is a hosted Neo4j tool that allows you to run private instances of Neo4j without having to install Neo4j locally. You can choose Neo4j Sandbox usecases that come pre-loaded with datasets and your Neo4j Sandbox instances can be accessed over the internet, making them useful for building sample applications. While Neo4j Browser is the primary way to interact with Neo4j instances hosted by Neo4j Sandbox, for this course you will also connect your sandbox instance to a simple web application. -|=== - -== Breaking long text - -Long parameter, var, or option names shouldn't wrap - -.Results -[opts="header",cols="1,1,6"] -|=== -| Name | Type | Description -| nodes | int | The number of nodes considered. -| writeProperty | string | The property name written back to. -| createMillis | int | Milliseconds for loading data. -| computeMillis | int | Milliseconds for running the algorithm. -| writeMillis | int | Milliseconds for writing result data back. -| centralityDistribution | Map | Map containing min, max, mean as well as p50, p75, p90, p95, p99 and p999 percentile values of centrality values. -|=== - -In case a value or long string is used in a link but not formatted as code - -|=== -| text | link -| text | link:example.com[bolt.connections,bolt.messages_received,bolt.messages_started,dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt] -|=== - -The next table includes a large codeblock, which needs to wrap - -.metrics.filter -[cols="<1s,<4"] -|=== -|Description -a|Specifies which metrics should be enabled by using a comma separated list of globbing patterns. Only the metrics matching the filter will be enabled. For example '*check_point*,neo4j.page_cache.evictions' will enable any checkpoint metrics and the pagecache eviction metric. -|Valid values -a|metrics.filter, a ',' separated list with elements of type 'A simple globbing pattern that can use '*' and '?'.'. -|Default value -m|*bolt.connections*,*bolt.messages_received*,*bolt.messages_started*,*dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt,*causal_clustering.core.replication_fail,*check_point.duration,*check_point.total_time,*cypher.replan_events,*ids_in_use.node,*ids_in_use.property,*ids_in_use.relationship,*pool.transaction.*.total_used,*pool.transaction.*.used_heap,*pool.transaction.*.used_native,*store.size*,*transaction.active_read,*transaction.active_write,*transaction.committed*,*transaction.last_committed_tx_id,*transaction.peak_concurrent,*transaction.rollbacks*,*page_cache.hit*,*page_cache.page_faults,*page_cache.usage_ratio,*vm.file.descriptors.count,*vm.gc.time.*,*vm.heap.used,*vm.memory.buffer.direct.used,*vm.memory.pool.g1_eden_space,*vm.memory.pool.g1_old_gen,*vm.pause_time,*vm.thread* - -|=== - -== Table Text Wrap - -Tables showing word-break behavior - -=== Text, links, and inline code - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Table with better column widths: - -[opts="header",cols="2,1,1m,1,5"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Tables with `role=no-break`: - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -== table link target - -A section for table links to point to \ No newline at end of file diff --git a/preview-src/tables.adoc b/preview-src/tables.adoc deleted file mode 100644 index d6de6b90..00000000 --- a/preview-src/tables.adoc +++ /dev/null @@ -1,285 +0,0 @@ -= Tables -:nofooter: -:page-theme: docs -:page-ogtitle: This page uses the page-ogtitle attribute to generate a custom title for SEO meta -// :page-edit-url-body: Custom raise an issue body text -// :page-edit-url-title: Custom raise an issue title text -:page-edit-url-uri: https://github.com/neo4j/docs-cypher/blob/dev/modules/ROOT/pages/queries/index.adoc -:page-custom-canonical: https://neo4j.com/docs/cypher-manual/current/clauses/where/ - -.No striping -// Alternative to stripes attributes is -// setting role "stripes-none" as [.stripes-none,cols="1,2"]. -[stripes=none,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.All rows -// Alternative to stripes attributes is -// setting role "stripes-all" as [.stripes-all,cols="1,2"]. -[stripes=all,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Odd rows -// Alternative to stripes attributes is -// setting role "stripes-odd" as [.stripes-odd,cols="1,2"]. -[stripes=odd,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Even rows (default) -// Alternative to stripes attributes is -// setting role "stripes-even" as [.stripes-even,cols="1,2"]. -[stripes=even,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Hover -[stripes=hover,cols="1,2"] -|=== -| Name | Description - -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.No header -[cols="1,2"] -|=== -| Asciidoctor -| *Awesome* way to write documentation - -| Micronaut -| Low resource usage and fast startup micro services -|=== - -.Table with top and bottom frame (topbot) -[frame="topbot"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with no frame (none) -[frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with only sides frame (sides) -[frame="sides"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - - -.Table with default frame (all) -[frame="all"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with no grid (none) -[grid="none", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only columns grid (cols) -[grid="cols", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with only rows grid (rows) -[grid="rows", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -.Table with default rows and columns grid (all) -[grid="all", frame="none"] -|=== -| Name | Description - -| Asciidoctor -| Awesome way to write documentation - -|=== - -== Setup and Cypher Refresher - -[frame="none", cols="^.^,<.^"] -|=== -a|image::sandbox.png[Neo4j Sandbox,width=500,align=center] -a| -Neo4j Sandbox is a hosted Neo4j tool that allows you to run private instances of Neo4j without having to install Neo4j locally. You can choose Neo4j Sandbox usecases that come pre-loaded with datasets and your Neo4j Sandbox instances can be accessed over the internet, making them useful for building sample applications. While Neo4j Browser is the primary way to interact with Neo4j instances hosted by Neo4j Sandbox, for this course you will also connect your sandbox instance to a simple web application. -|=== - -== Breaking long text - -Long parameter, var, or option names shouldn't wrap - -.Results -[opts="header",cols="1,1,6"] -|=== -| Name | Type | Description -| nodes | int | The number of nodes considered. -| writeProperty | string | The property name written back to. -| createMillis | int | Milliseconds for loading data. -| computeMillis | int | Milliseconds for running the algorithm. -| writeMillis | int | Milliseconds for writing result data back. -| centralityDistribution | Map | Map containing min, max, mean as well as p50, p75, p90, p95, p99 and p999 percentile values of centrality values. -|=== - -In case a value or long string is used in a link but not formatted as code - -|=== -| text | link -| text | link:example.com[bolt.connections,bolt.messages_received,bolt.messages_started,dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt] -|=== - -The next table includes a large codeblock, which needs to wrap - -.metrics.filter -[cols="<1s,<4"] -|=== -|Description -a|Specifies which metrics should be enabled by using a comma separated list of globbing patterns. Only the metrics matching the filter will be enabled. For example '*check_point*,neo4j.page_cache.evictions' will enable any checkpoint metrics and the pagecache eviction metric. -|Valid values -a|metrics.filter, a ',' separated list with elements of type 'A simple globbing pattern that can use '*' and '?'.'. -|Default value -m|*bolt.connections*,*bolt.messages_received*,*bolt.messages_started*,*dbms.pool.bolt.free,*dbms.pool.bolt.total_size,*dbms.pool.bolt.total_used,*dbms.pool.bolt.used_heap,*causal_clustering.core.is_leader,*causal_clustering.core.last_leader_message,*causal_clustering.core.replication_attempt,*causal_clustering.core.replication_fail,*check_point.duration,*check_point.total_time,*cypher.replan_events,*ids_in_use.node,*ids_in_use.property,*ids_in_use.relationship,*pool.transaction.*.total_used,*pool.transaction.*.used_heap,*pool.transaction.*.used_native,*store.size*,*transaction.active_read,*transaction.active_write,*transaction.committed*,*transaction.last_committed_tx_id,*transaction.peak_concurrent,*transaction.rollbacks*,*page_cache.hit*,*page_cache.page_faults,*page_cache.usage_ratio,*vm.file.descriptors.count,*vm.gc.time.*,*vm.heap.used,*vm.memory.buffer.direct.used,*vm.memory.pool.g1_eden_space,*vm.memory.pool.g1_old_gen,*vm.pause_time,*vm.thread* - -|=== - -== Table Text Wrap - -Tables showing word-break behavior - -=== Text, links, and inline code - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Table with better column widths: - -[opts="header",cols="2,1,1m,1,5"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -=== Tables with `role=no-break`: - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| <> | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| <> | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| <> | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `<>` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `<>` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -[role="no-break",opts="header",cols="1,1,1m,1,8"] -|=== -| Name | Type | Default | Optional | Description -| `nodeLabels` | List of String | ['*'] | yes | Filter the named graph using the given node labels. -| `relationshipTypes` | List of String | ['*'] | yes | Filter the named graph using the given relationship types. -| `concurrency` | Integer | 4 | yes | The number of concurrent threads used for running the algorithm. -|=== - -== table link target - -A section for table links to point to \ No newline at end of file diff --git a/preview-src/tiles.adoc b/preview-src/tiles.adoc deleted file mode 100644 index 9acf3f79..00000000 --- a/preview-src/tiles.adoc +++ /dev/null @@ -1,63 +0,0 @@ -= Tiles -:page-layout: tiles -:page-theme: docs -:!toc: - - -Welcome to the Neo4j Docs. -Voluptate minim eu irure sit ullamco ipsum consequat proident. - -link:/developer/get-started/graph-database/[Learn More: What is a Graph Database?^, role="button feature-box_button"] - -== Neo4j Database - -=== Getting Started - -Eiusmod culpa dolore minim veniam aute nisi consectetur. - -* link:./getting-started/current[HTML] -* link:[PDF] - -=== Operations Manual - -Culpa excepteur magna velit ad sit consectetur aute consectetur excepteur qui laborum labore. - -* link:./operations-manual/current[HTML] -* link:[PDF] - -=== Migration Guide - -Nostrud laboris excepteur enim eiusmod fugiat quis fugiat cupidatat fugiat adipisicing consequat ipsum. - -* link:./migration-guide/current[HTML] -* link:[PDF] - - -== Cypher - -=== Cypher Manual 4.0 - -Veniam amet dolor laboris enim. - -* link:./cypher-manual/current[HTML] -* link:[PDF] - -=== Cypher Refcard - -Labore dolore duis deserunt aliqua in pariatur sunt pariatur aliqua nisi pariatur. - -* link:./cypher-refcard/current[HTML] -* link:[PDF] - - -== Drivers & APIs - -=== Neo4j Drivers Manual - -Minim irure veniam eiusmod duis est cupidatat mollit ex ipsum quis minim. - -* link:./drivers-refcard/current[HTML] -* link:./drivers-refcard/current[Java] -* link:./drivers-refcard/current[Javascript] -* link:./drivers-refcard/current[.NET] -* link:./drivers-refcard/current[Python] \ No newline at end of file diff --git a/preview-src/training-enrollment-disabled.adoc b/preview-src/training-enrollment-disabled.adoc deleted file mode 100644 index d03b7b9e..00000000 --- a/preview-src/training-enrollment-disabled.adoc +++ /dev/null @@ -1,16 +0,0 @@ -= Introduction to Neo4j 4.0 [disabled] -:slug: introduction-to-neo4j-40 -:description: Learn about Graph Databases, Neo4j and Cypher – the Graph Query Language. -:page-slug: {slug} -:page-description: {description} -:page-layout: training-enrollment -:page-course-duration: 16 hrs -:page-illustration: https://s3.amazonaws.com/dev.assets.neo4j.com/wp-content/courseLogos/IntroductionToNeo4j-4.0.jpg -:page-course-name: 4.0-intro-neo4j -:page-disable-enrollment: - -image::https://s3.amazonaws.com/dev.assets.neo4j.com/wp-content/courseLogos/IntroductionToNeo4j-4.0_withTitle.jpg[] - -== About the Course - -This course is disabled! diff --git a/preview-src/training-enrollment.adoc b/preview-src/training-enrollment.adoc deleted file mode 100644 index 018f08db..00000000 --- a/preview-src/training-enrollment.adoc +++ /dev/null @@ -1,36 +0,0 @@ -= Introduction to Neo4j 4.0 -:slug: introduction-to-neo4j-40 -:description: Learn about Graph Databases, Neo4j and Cypher – the Graph Query Language. -:page-slug: {slug} -:page-description: {description} -:page-layout: training-enrollment -:page-course-duration: 16 hrs -:page-illustration: https://s3.amazonaws.com/dev.assets.neo4j.com/wp-content/courseLogos/IntroductionToNeo4j-4.0.jpg -:page-course-name: 4.0-intro-neo4j - -image::https://s3.amazonaws.com/dev.assets.neo4j.com/wp-content/courseLogos/IntroductionToNeo4j-4.0_withTitle.jpg[] - -== About the Course - -This online course is a collection of lessons and and hands-on exercises which help you build a good starting knowledge of the Neo4j 4.x DBMS. -It teaches the core functionality for accessing a Neo4j database. -You will learn the foundational knowledge required to start building applications with Neo4j, -including how to read and write data from and to the database using the Cypher language. - -== Prerequisites - -You need not have extensive programming experience to take this course. - -== Duration - -If you perform all of the hands-on exercises in this course, -it will take you two days to complete the course. - -== What you will learn - -* What is a Graph Database -* The Neo4j Graph Platform -* Cypher Queries -* Creating Nodes and Relationships in the Graph -* Indexes and Query Best Practices -* Importing Data diff --git a/preview-src/ui-model.yml b/preview-src/ui-model.yml index 9eecd05e..47314d47 100644 --- a/preview-src/ui-model.yml +++ b/preview-src/ui-model.yml @@ -2,8 +2,7 @@ antoraVersion: '1.0.0' site: url: http://localhost:5252 title: Brand Docs - homeUrl: &home_url /xyz/4.1/index.html - theme: docs + homeUrl: &home_url /xyz/5.2/index.html components: - name: abc title: Project ABC @@ -19,26 +18,26 @@ site: latestVersion: *latest_version_abc - &component name: xyz - title: Project XYZ - url: /xyz/4.2/index.html + title: &component_title Project XYZ + url: /xyz/6.0/index.html versions: - &latest_version_xyz - url: /xyz/4.2/index.html - version: '4.2' - displayVersion: '4.2' + url: /xyz/6.0/index.html + version: '6.0' + displayVersion: '6.0' - &component_version - url: '/4.1' - version: '4.1' - displayVersion: '4.1' - title: 'Component title wraps onto a second line' - - url: '/4.0' - version: '4.0' - displayVersion: '4.0' - - url: '/3.5' - version: '3.5' - displayVersion: '3.5' + title: *component_title + url: '#' + version: '5.2' + displayVersion: '5.2' + - url: '#' + version: '5.1' + displayVersion: '5.1' + - url: '#' + version: '5.0' + displayVersion: '5.0' latestVersion: *latest_version_xyz - - name: 123 + - name: '123' title: Project 123 url: '#' versions: @@ -56,13 +55,14 @@ site: page: url: *home_url home: true - title: Brand’s Hardware & Software Requirements + title: Home component: *component componentVersion: *component_version - version: '4.1' - displayVersion: '4.1' + version: '5.2' + displayVersion: '5.2' module: ROOT - editUrl: http://example.com/project-xyz/blob/master/index.adoc + relativeSrcPath: index.adoc + editUrl: http://example.com/project-xyz/blob/main/index.adoc origin: private: false previous: @@ -78,34 +78,29 @@ page: url: '#' urlType: fragment - content: Brand’s Hardware & Software Requirements - url: /xyz/4.1/index.html + url: /xyz/5.2/index.html urlType: internal versions: - - version: '4.2' - displayVersion: '4.2' - url: '/4.2' - - version: '4.1' - displayVersion: '4.1' - url: '/4.1' - - version: '4.0' - displayVersion: '4.0' - url: '/4.0' - - version: '3.5' - displayVersion: '3.5' + - version: '6.0' + displayVersion: '6.0' + url: '#' + - version: '5.2' + displayVersion: '5.2' + url: '#' + - version: '5.1' + displayVersion: '5.1' + url: '#' + - version: '5.0' + displayVersion: '5.0' missing: true - url: '/3.5' + url: '#' navigation: - root: true - content: Project XYZ - url: '#' - urlType: fragment items: - - content: Quickstart - url: '#' - urlType: fragment + - content: Fundamentals items: - - content: Brand’s Hardware & Software Requirements - url: /xyz/4.1/index.html + - content: Docs Remix + url: fundamentals.html urlType: internal - content: Cu Solet url: '/xyz/4.1/index.html#cu-solet' diff --git a/src/css/docs-ndl.css b/src/css/docs-ndl.css index f1460fe7..2b35f0ff 100644 --- a/src/css/docs-ndl.css +++ b/src/css/docs-ndl.css @@ -15,31 +15,21 @@ } } -body.docs-ndl.hub, -body.docs-ndl.explainer { - background: rgba(var(--colors-neutral-15)); -} - /* nav */ -body.docs-ndl .nav { - background: rgba(var(--colors-neutral-10)); -} - body.docs-ndl.explainer .nav-panel-menu { scrollbar-width: none; } body.docs-ndl .nav-menu .docs-home-link a::before { - content: ""; - width: 4px; - height: 100%; - position: absolute; - left: 0; + position: relative; + display: inline-block; + margin: 0; + content: "→"; + transform: rotate(-180deg); + color: var(--link-font-color); + transition: all 0.2s linear; top: 0; - background-color: rgba(10 97 144 / 1); - background-color: var(--color-docs); - border-radius: 4px; } body.docs-ndl .nav-menu .docs-home-link { @@ -55,24 +45,21 @@ body.docs-ndl .nav-menu .docs-home-link:focus { body.docs-ndl .nav-menu .home-link { width: auto; background: none; + display: flex; + flex-direction: row; + align-items: stretch; box-shadow: 0 1px 0 var(--toolbar-border-color); } -body.docs-ndl .nav-menu .home-link.is-home { - box-shadow: none; -} - -body.docs-ndl .nav-menu .home-link.is-home a { +body.docs-ndl .nav-menu .home-link a { display: flex; - background-color: rgba(var(--colors-baltic-10)); + flex: 1; + align-self: center; + padding: 0.75rem 0 0.75rem 1rem; + /* background-color: rgba(var(--colors-baltic-10)); */ color: rgba(var(--colors-baltic-50)); } -body.docs-ndl .nav-module { - /* background: rgba(var(--colors-neutral-15)); */ - background: rgba(var(--colors-neutral-10)); -} - body.docs-ndl .nav-list:first-child .nav-item:first-child .nav-section-header { border: none; padding-top: 1.5rem !important; @@ -156,10 +143,6 @@ body.docs-ndl.hub .toolbar { display: none; } -body.docs-ndl.explainer .toolbar { - background-color: rgba(var(--colors-neutral-10)); -} - body.docs-ndl .doc a { text-decoration: none; } @@ -622,7 +605,6 @@ body.docs-ndl .cards .sectionbody > div.sect2 { body.docs-ndl .cards.bottom-cards .sectionbody > div.sect2 { flex: 0 1 49%; - border: 0; } body.docs-ndl.explainer .sectionbody > div.sect2 { @@ -684,7 +666,7 @@ body.docs-ndl .cards .sect2 > a, body.docs-ndl .cards:not(.selectable) .sect2 > a, body.docs-ndl .widget:not(.video) { /* box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.06); */ - border: none; + border: 1px solid var(--panel-border-color); border-radius: 1rem; } diff --git a/src/css/docs-remix.css b/src/css/docs-remix.css new file mode 100644 index 00000000..7b6e44c0 --- /dev/null +++ b/src/css/docs-remix.css @@ -0,0 +1,136 @@ +.docs-remix .body { + flex-wrap: wrap; +} + +.docs-remix .navbar a { + text-transform: uppercase; + font-weight: var(--body-font-weight-bold); + font-size: var(--toolbar-font-size); +} + +.docs-remix div.category-tabs { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + flex: 0 0 100%; + align-items: stretch; + background-color: var(--toolbar-background); + box-shadow: 0 1px 0 var(--toolbar-border-color); + position: sticky; + padding: 0 0 0 1rem; + top: var(--navbar-height); + height: var(--category-tabs-height); + z-index: 30; +} + +.docs-remix div.category-tabs ul { + margin: 0; + padding: 0; + display: flex; + gap: 1rem; + font-size: var(--toolbar-font-size); +} + +.docs-remix div.category-tabs ul li { + display: flex; + flex-direction: column; + justify-content: center; +} + +.docs-remix div.category-tabs ul li.is-active { + border-bottom: 2px solid var(--color-docs); + padding-top: 2px; +} + +.docs-remix div.category-tabs ul li a { + padding: 0.5rem; + border-radius: 0.5rem; + color: var(--color-docs); +} + +.docs-remix div.category-tabs ul li a:hover { + background-color: var(--toc_hover-background-color); +} + +.docs-remix .doc { + padding-top: 2rem; +} + +.docs-remix .toolbar { + position: relative; + top: unset; + background: var(--toolbar-background); + box-shadow: none; + margin: 0; + padding: 0; + font-size: var(--toolbar-font-size); + display: block; + height: auto; +} + +.docs-remix .toolbar-wrapper { + display: block; +} + +.docs-remix .nav { + top: calc(var(--navbar-height) + var(--category-tabs-height)); +} + +.docs-remix .nav-container { + padding-top: 2rem; +} + +.docs-remix .nav-menu { + flex-grow: 0; +} + +.docs-remix .nav-menu > .nav-list { + margin-top: 0; +} + +.docs-remix .page-header { + margin-bottom: 2rem; +} + +.docs-remix .breadcrumbs { + padding: 0; +} + +.docs-remix .breadcrumbs ul { + margin: 0; + padding: 0; +} + +.docs-remix .breadcrumbs ul a { + text-decoration: none; +} + +.docs-remix h1 { + margin: 0.5rem 0; + /* flex: 0 0 100%; */ +} + +body.docs-remix .header-label-container > div.labels.wrapped { + margin-bottom: 1rem; +} + +body.docs-remix main > .content { + margin-top: 0; +} + +.docs-remix .page-header > div { + margin: 0.5rem 0; +} + +.docs-remix .page-header > div.labels { + margin: 1rem 0; + display: flex; + gap: 0.25rem; + margin-left: auto; + line-height: var(--doc-line-height); +} + +.docs-remix .nav-panel-versions { + padding: 0; + margin: 0; +} diff --git a/src/css/nav.css b/src/css/nav.css index c9feea0b..84ba9bff 100644 --- a/src/css/nav.css +++ b/src/css/nav.css @@ -271,6 +271,10 @@ html.is-clipped--nav { max-height: calc(50% + var(--drawer-height)); } +.nav-panel-explore.is-active { + z-index: 1; +} + .nav-panel-explore .context { font-size: calc(15 / var(--rem-base) * 1rem); flex-shrink: 0; diff --git a/src/css/neo4j-docs.css b/src/css/neo4j-docs.css index 62177093..06a11e47 100644 --- a/src/css/neo4j-docs.css +++ b/src/css/neo4j-docs.css @@ -147,7 +147,7 @@ span.fabric::after { } .sect-header { - display: flex; + /* display: flex; */ flex-wrap: wrap; align-items: baseline; margin-bottom: 1rem; diff --git a/src/css/site.css b/src/css/site.css index 00106f44..d3d57b50 100644 --- a/src/css/site.css +++ b/src/css/site.css @@ -47,4 +47,5 @@ @import "newsletter.css"; @import "challenges.css"; @import "promo.css"; +@import "docs-remix.css"; @import "research.css"; diff --git a/src/css/vars.css b/src/css/vars.css index 9264b532..d821c13b 100644 --- a/src/css/vars.css +++ b/src/css/vars.css @@ -187,9 +187,9 @@ --panel-border-color: rgba(var(--colors-neutral-20)); --scrollbar-thumb-color: rgba(var(--colors-neutral-15)); /* navbar */ - --navbar-background: rgba(var(--colors-neutral-80)); + --navbar-background: rgba(var(--colors-neutral-10)); --hero-fade: rgba(var(--colors-neutral-50)); - --navbar-font-color: rgba(var(--colors-neutral-15)); + --navbar-font-color: rgba(var(--colors-neutral-80)); --navbar-font-weight: 400; --navbar_hover-background: transparent; --navbar-button-background: var(--color-docs); @@ -210,7 +210,7 @@ --navbar-kb-border: var(--color-kb); /* nav */ - --nav-background: rgba(var(--colors-neutral-15)); + --nav-background: rgba(var(--colors-neutral-10)); --nav-border-color: rgba(var(--colors-neutral-20)); --nav-font-weight: 400; --nav_active-font-weight: 400; @@ -222,7 +222,7 @@ --nav-bullet-color: rgba(var(--colors-neutral-40)); /* toolbar */ - --toolbar-background: var(--panel-background); + --toolbar-background: rgba(var(--colors-neutral-10)); --toolbar-border-color: rgba(var(--colors-neutral-20)); --toolbar-font-color: rgba(var(--colors-neutral-70)); --toolbar-muted-color: rgba(var(--colors-neutral-50)); @@ -383,6 +383,9 @@ --alpha-beta-color: var(--color-black); --alpha-beta-background-color: rgba(var(--colors-marigold-40)); + /* toolbar */ + --toolbar-font-size: calc(16 / var(--rem-base) * 1rem); + /* labels and admonitions */ --label-title-font-size: calc(0.8 * var(--font-size-label)); /* set label font size from ndl */ @@ -397,6 +400,7 @@ --footer-link_hover-font-color: rgba(var(--colors-neutral-20)); /* dimensions and positioning */ + --category-tabs-height: calc(68 / var(--rem-base) * 1rem); --navbar-height: calc(68 / var(--rem-base) * 1rem); --toolbar-height: calc(45 / var(--rem-base) * 1rem); --banner-height: calc(45 / var(--rem-base) * 1rem); diff --git a/src/helpers/fix-nav-path.js b/src/helpers/fix-nav-path.js new file mode 100644 index 00000000..88f22b92 --- /dev/null +++ b/src/helpers/fix-nav-path.js @@ -0,0 +1,18 @@ +'use strict' + +module.exports = (url, page, { data: { root } }) => { + const urlParts = url.split('/').filter((e) => e) + + console.log(urlParts) + + // add docs as the first item if it is missing + if (urlParts[0] !== 'docs') { + urlParts.unshift('docs') + } + + const resolvedUrl = '/' + urlParts.join('/') + + console.log(resolvedUrl) + + return resolvedUrl +} diff --git a/src/helpers/json-parse.js b/src/helpers/json-parse.js new file mode 100644 index 00000000..6761a06b --- /dev/null +++ b/src/helpers/json-parse.js @@ -0,0 +1,14 @@ +'use strict' + +module.exports = (jsonString) => { + /** + * Parses a JSON string and returns the object. + */ + try { + return JSON.parse(jsonString) + } catch (e) { + console.log(jsonString) + console.warn('Failed to parse JSON string in Handlebars:', jsonString) + return {} + } +} diff --git a/src/helpers/json-stringify.js b/src/helpers/json-stringify.js new file mode 100644 index 00000000..542ba382 --- /dev/null +++ b/src/helpers/json-stringify.js @@ -0,0 +1,5 @@ +'use strict' + +module.exports = (obj) => { + return JSON.stringify(obj, null, 2) +} diff --git a/src/helpers/json.js b/src/helpers/json.js deleted file mode 100644 index 0da6b6f1..00000000 --- a/src/helpers/json.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -module.exports = (obj) => JSON.stringify(obj) diff --git a/src/helpers/nav-aggregate.js b/src/helpers/nav-aggregate.js new file mode 100644 index 00000000..1aa2a97b --- /dev/null +++ b/src/helpers/nav-aggregate.js @@ -0,0 +1,79 @@ +'use strict' +module.exports = (nav, additionalNav) => { +// function combineNavs(nav, additionalNav) { + + // all the items in nav should have the same tabIndex value + // in additionalNav, there will be different tabIndex values + // I want to conbine nav and additionalNav into a single nav structure + // so that all items with the same tabIndex are grouped together + + // return additionalNav if nav is empty + if (!nav || !nav.length) { + return + } + + // return nav if additionalNav is empty + if (!additionalNav || !additionalNav.length) { + return nav + } + + additionalNav = JSON.parse(additionalNav) + + const tabIndexMap = new Map() + + // console.log('Original Nav:') + // console.log(JSON.stringify(nav)) + + if (nav[0].items && nav[0].items.length) { + nav[0].items.forEach((item) => { + // console.log('Item:') + // console.log(item) + + const tabIndex = item.tabIndex || 0 + if (!tabIndexMap.has(tabIndex)) { + tabIndexMap.set(tabIndex, []) + } + tabIndexMap.get(tabIndex).push(item) + }) + } + + // console.log('Additional Nav:') + // console.log(JSON.stringify(additionalNav)) + + if (additionalNav[0].items && additionalNav[0].items.length) { + additionalNav[0].items.forEach((item) => { + // console.log('Item:') + // console.log(item) + + const tabIndex = item.tabIndex || 0 + if (!tabIndexMap.has(tabIndex)) { + tabIndexMap.set(tabIndex, []) + } + tabIndexMap.get(tabIndex).push(item) + }) + } + + // sort the tabindex map + const sortedTabIndices = Array.from(tabIndexMap.keys()).sort((a, b) => a - b) + + // turn sortedNavs into one nav object in the same format as the original nav + const combinedNav = [{ + items: [], + root: true, + order: 0, + }] + + if (!sortedTabIndices.length) { + return nav + } + + sortedTabIndices.forEach((tabIndex) => { + const items = tabIndexMap.get(tabIndex) + combinedNav[0].items.push(...items) + }) + + // console.log('Combined Nav:') + // console.log(JSON.stringify(combinedNav, null, 2)) + + return combinedNav +} diff --git a/src/js/01-nav.js b/src/js/01-nav.js index 128ce60f..18f4e30e 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -62,8 +62,6 @@ const url = target.value - // temporarily disable analytics for selector-versions - // because it is now broken // if (window.ga) { // window.ga('send', 'event', 'version-select', 'From: ' + current + ';To:' + next + ';') // } diff --git a/src/js/60-docs-roles.js b/src/js/60-docs-roles.js index 587f630c..f6ef1991 100644 --- a/src/js/60-docs-roles.js +++ b/src/js/60-docs-roles.js @@ -2,7 +2,7 @@ import { createElement } from './modules/dom' import rolesData from './data/rolesData.json' function checkWrapped () { - const labelContainers = document.querySelectorAll('body.docs .header-label-container') + const labelContainers = document.querySelectorAll('body.docs-remix .header-label-container') for (const container of labelContainers) { var child = container.querySelector('.labels') var lineHeight = parseInt(window.getComputedStyle(container).lineHeight, 10) @@ -95,7 +95,7 @@ document.addEventListener('DOMContentLoaded', function () { // ignore inline labels const headings = ['H2', 'H3', 'H4', 'H5', 'H6', 'CAPTION'] - const roleDivs = document.querySelectorAll('body.docs *[class*="label--"]') + const roleDivs = document.querySelectorAll('body.docs-remix *[class*="label--"]') roleDivs.forEach(function (roleDiv) { var roles = roleDiv.classList @@ -140,7 +140,7 @@ document.addEventListener('DOMContentLoaded', function () { // no need to do anything if we found only undefined roles if (labels.length === 0) return - let labelsLocation = (roleDiv.firstElementChild && headings.includes(roleDiv.firstElementChild.nodeName)) ? roleDiv.firstElementChild : roleDiv + // let labelsLocation = (roleDiv.firstElementChild && headings.includes(roleDiv.firstElementChild.nodeName)) ? roleDiv.firstElementChild : roleDiv const labelsDiv = createElement('div', 'labels') for (const label of labels) { @@ -156,15 +156,15 @@ document.addEventListener('DOMContentLoaded', function () { console.log(roleDiv.classList) - if (roleDiv.classList.contains('admonitionblock')) { - labelsLocation = roleDiv.querySelector('td.content') - } + // if (roleDiv.classList.contains('admonitionblock')) { + // labelsLocation = roleDiv.querySelector('td.content') + // } if (roleDiv.nodeName === 'H1' || headings.includes(roleDiv.firstElementChild.nodeName)) { - labelsLocation.append(labelsDiv) - labelsLocation.classList.add('header-label-container') + // labelsLocation.append(labelsDiv) + // labelsLocation.classList.add('header-label-container') } else { - labelsLocation.prepend(labelsDiv) + // labelsLocation.prepend(labelsDiv) roleDiv.classList.add('has-label') } }) diff --git a/src/js/site.js b/src/js/site.js index fd5bcb8e..cce4c567 100644 --- a/src/js/site.js +++ b/src/js/site.js @@ -6,7 +6,7 @@ import './05-mobile-navbar' import './06-code' import './07-runnable-code' import './08-tabs-block' -import './11-feedback' +// import './11-feedback' import './12-fragment-jumper' // import './13-search' import './14-external-links' diff --git a/src/layouts/center-align.hbs b/src/layouts/center-align.hbs deleted file mode 100644 index 37ac540b..00000000 --- a/src/layouts/center-align.hbs +++ /dev/null @@ -1,25 +0,0 @@ - - - -{{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
- -
- {{!-- toolbar for responsive nav --}} -{{> toolbar }} - -
-{{> article}} -
-
-
- - - -{{> footer}} - - diff --git a/src/layouts/cheat-sheet.hbs b/src/layouts/cheat-sheet.hbs deleted file mode 100644 index 5b9cb48b..00000000 --- a/src/layouts/cheat-sheet.hbs +++ /dev/null @@ -1,12 +0,0 @@ - - - -{{> head defaultPageTitle='Untitled'}} - - - -{{> header}} -{{> body}} -{{> footer}} - - diff --git a/src/layouts/docs-home.hbs b/src/layouts/docs-home.hbs deleted file mode 100644 index c0e06460..00000000 --- a/src/layouts/docs-home.hbs +++ /dev/null @@ -1,29 +0,0 @@ - - - -{{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
-{{> nav}} -
- {{!-- toolbar for responsive nav --}} - - -
-{{> article}} -
-
-
- - - -{{> footer}} - - \ No newline at end of file diff --git a/src/layouts/docs-ndl.hbs b/src/layouts/docs-ndl.hbs index 104c31aa..8f8a1dc6 100644 --- a/src/layouts/docs-ndl.hbs +++ b/src/layouts/docs-ndl.hbs @@ -3,23 +3,22 @@ {{> head defaultPageTitle='Untitled'}} - + {{> header}}
-{{> nav-ndl}} -
-{{#unless page.attributes.no-toolbar}}{{> toolbar}}{{/unless}} - -
-{{> article-ndl}} -{{> toc}} -
-
+ + {{> tab-row }} + {{> nav}} +
+ {{#unless page.attributes.no-toolbar}}{{> toolbar}}{{/unless}} +
+ {{> article-ndl}} + {{> toc}} +
+
- - {{> footer}} - + \ No newline at end of file diff --git a/src/layouts/graphgist-category.hbs b/src/layouts/graphgist-category.hbs deleted file mode 100644 index 07bc34fc..00000000 --- a/src/layouts/graphgist-category.hbs +++ /dev/null @@ -1,32 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} -{{> graphgists-header}} - -
-
-
-
-
- {{> breadcrumbs}} -

GraphGists tagged as {{page.attributes.category}}

-
    - {{#each page.attributes.graphgist-pages}} -
  • {{> graphgist-card }}
  • - {{/each}} -
-
-
-
-
-
- -{{> footer}} - - - - diff --git a/src/layouts/graphgist-index.hbs b/src/layouts/graphgist-index.hbs deleted file mode 100644 index f97f834c..00000000 --- a/src/layouts/graphgist-index.hbs +++ /dev/null @@ -1,79 +0,0 @@ - - - - - {{> head defaultPageTitle='Untitled'}} - - - -{{> header}} - - -
-
-
- {{> graphgists-header}} - -
-

Featured GraphGists

-
-
    - {{#each (take page.attributes.featured-pages 6)}} -
  • {{> graphgist-card }}
  • - {{/each}} -
-
-
- -
-

Explore By Use Case

-
-
    - {{#each page.attributes.use-cases}} -
  • - {{this.name}} - {{this.name}} -
  • - {{/each}} -
-
-
- -
-

Explore By Industry

-
-
    - {{#each page.attributes.industries}} -
  • - {{this.name}} - {{this.name}} -
  • - {{/each}} -
-
-
-
-

Create your own GraphGist

-
-
-

- We maintain that Graphs are everywhere. - Have you spotted a novel Graph use case somewhere, or would you like to share your own use case? - You can share your own GraphGist with the Neo4j Community now by visiting the - GraphGist Portal. -

-
- -
-
-
-
-
- -{{> footer}} - - diff --git a/src/layouts/graphgist.hbs b/src/layouts/graphgist.hbs deleted file mode 100644 index 55c1ff19..00000000 --- a/src/layouts/graphgist.hbs +++ /dev/null @@ -1,96 +0,0 @@ - - - - - {{> head defaultPageTitle='Untitled'}} - - - - - {{> header}} - {{> graphgists-header}} - -
-
-
-
-
- {{> breadcrumbs}} -

{{#with (or page.title page.attributes.title)}}{{{this}}}{{/with}}

- -
-
-
-
- {{#if (eq page.layout '404')}} -
-

If you arrived on this page by clicking on a link, please notify the owner of the site that the link is - broken. - If you typed the URL of this page manually, please double check that you entered the address correctly. -

-
- {{else}} - {{{page.contents}}} - {{/if}} - {{> comments}} - {{> feedback}} -
-
-
-
-
- - {{> footer}} - - - - diff --git a/src/layouts/kb-article.hbs b/src/layouts/kb-article.hbs deleted file mode 100644 index b1b9aef5..00000000 --- a/src/layouts/kb-article.hbs +++ /dev/null @@ -1,75 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - - -{{> header}} -{{> kb-header}} - -
-
-
-
-
- {{> breadcrumbs}} -

{{{or page.title 'Page Not Found'}}}

- -
-
-
-
- - {{#if (eq page.layout '404')}} -
-

If you arrived on this page by clicking on a link, please notify the owner of the site that the link is broken. - If you typed the URL of this page manually, please double check that you entered the address correctly.

-
- {{else}} - {{{page.contents}}} - {{/if}} - {{> comments}} - {{> feedback}} -
-
-
-
-
- -{{> footer}} - - - diff --git a/src/layouts/kb-category.hbs b/src/layouts/kb-category.hbs deleted file mode 100644 index 804562de..00000000 --- a/src/layouts/kb-category.hbs +++ /dev/null @@ -1,31 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} -{{> kb-header}} - -
-
-
-
-
- {{> breadcrumbs}} -

Articles tagged as {{page.attributes.category}}

- - {{#each (to-array page.attributes.category-pages)}} - {{> kb-card }} - {{/each}} -
-
-
-
-
- -{{> footer}} - - - - diff --git a/src/layouts/kb-index.hbs b/src/layouts/kb-index.hbs deleted file mode 100644 index cf2c03f1..00000000 --- a/src/layouts/kb-index.hbs +++ /dev/null @@ -1,64 +0,0 @@ - - - - - {{> head defaultPageTitle='Untitled'}} - - - - {{> header}} - {{> kb-header}} - - {{{page.contents}}} - -
-
-
-
-

Promoted Articles

-
- {{#each (kb-promoted)}} -
-

{{{title}}}

- {{#with asciidoc.attributes.description}} -
- {{this}} -
- {{/with}} - -

Read more

- -
- {{#with @root.page.attributes.tags}} - {{#each (tokenize this)}} - {{this}} - {{/each}} - {{/with}} -
-
- {{/each}} -
-
- -
-

Browse By Category

-
- {{#each (kb-categories)}} -
-

{{name}}

- -
- {{/each}} -
-
-
-
-
- - {{> footer}} - - diff --git a/src/layouts/kb-tag.hbs b/src/layouts/kb-tag.hbs deleted file mode 100644 index d4b5c4af..00000000 --- a/src/layouts/kb-tag.hbs +++ /dev/null @@ -1,31 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} -{{> kb-header}} - -
-
-
-
-
- {{> breadcrumbs}} -

Articles tagged as {{page.attributes.tag}}

- - {{#each (to-array page.attributes.tag-pages)}} - {{> kb-card }} - {{/each}} -
-
-
-
-
- -{{> footer}} - - - - diff --git a/src/layouts/landing.hbs b/src/layouts/landing.hbs deleted file mode 100644 index 7610cfa4..00000000 --- a/src/layouts/landing.hbs +++ /dev/null @@ -1,35 +0,0 @@ - - - -{{> head defaultPageTitle='Untitled'}} - - -{{> header}} - - -{{#if page.attributes.herotitle }} -
-
-
- {{#with page.attributes.herotitle}} -

{{{this}}}

- {{/with}} - - {{#with page.attributes.herosubtitle}} -

{{ this }}

- {{/with}} -
-
-
-{{/if}} - -
-
- {{> article}} - {{> toc}} -
-
- -{{> footer}} - - diff --git a/src/layouts/remix.hbs b/src/layouts/remix.hbs new file mode 100644 index 00000000..400469d3 --- /dev/null +++ b/src/layouts/remix.hbs @@ -0,0 +1,12 @@ + + + +{{> head defaultPageTitle='Untitled'}} + + +{{> header}} +

asdjoasdjiajdoaisj

+{{> body}} +{{> footer}} + + diff --git a/src/layouts/tiles.hbs b/src/layouts/tiles.hbs deleted file mode 100644 index 0b9069d7..00000000 --- a/src/layouts/tiles.hbs +++ /dev/null @@ -1,18 +0,0 @@ - - - -{{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
-
-{{> article}} -{{> toc}} -
-
- -{{> footer}} - - \ No newline at end of file diff --git a/src/layouts/training-certification.hbs b/src/layouts/training-certification.hbs deleted file mode 100644 index 4394fb2b..00000000 --- a/src/layouts/training-certification.hbs +++ /dev/null @@ -1,69 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
-
-
- {{#with page.title}} -

{{{this}}}

- {{/with}} -
-
-
- -
-
-
-
-
- {{> breadcrumbs}} -

{{page.attributes.description}}

-
-
-
-
- {{{page.contents}}} -
-
-
-

-
-
-

Error while loading the data, please refresh the page.

-
-
-
-
-
-
-
-
- -
-
-
- Logout -
-
-
- Logout -
- Continue -
-
-
-
-
-
-
-
- -{{> footer}} - - - diff --git a/src/layouts/training-enrollment.hbs b/src/layouts/training-enrollment.hbs deleted file mode 100644 index e6c15f1d..00000000 --- a/src/layouts/training-enrollment.hbs +++ /dev/null @@ -1,70 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
-
-
- {{#with page.title}} -

{{{this}}}

- {{/with}} -
-
-
- -
-
-
-
-
- {{> breadcrumbs}} -

{{page.attributes.description}}

-
-
-
-
- {{{page.contents}}} -
-
-
-

Error while loading the data, please refresh the page.

-
-
-
-
-
-
-
-
- -
-
-
- Logout -
-
-
- Logout -
- {{#with (training-course-index-page page.component.name)}} - Continue - {{/with}} -
-
-
-
-
-
-
-
- -{{> footer}} - - - diff --git a/src/layouts/training-index.hbs b/src/layouts/training-index.hbs deleted file mode 100644 index 42ebaf76..00000000 --- a/src/layouts/training-index.hbs +++ /dev/null @@ -1,63 +0,0 @@ - - - - {{> head defaultPageTitle='Untitled'}} - - -{{> header}} - -
-
-
- {{#with page.title}} -

{{{this}}}

- {{/with}} -
-
-
- -
-
- -
-
- -{{> footer}} - - - diff --git a/src/layouts/training.hbs b/src/layouts/training.hbs index 67cf33cb..31743637 100644 --- a/src/layouts/training.hbs +++ b/src/layouts/training.hbs @@ -8,4 +8,4 @@ {{> body}} {{> footer}} - + \ No newline at end of file diff --git a/src/partials/article-ndl.hbs b/src/partials/article-ndl.hbs index e07aff50..f8e1ecd6 100644 --- a/src/partials/article-ndl.hbs +++ b/src/partials/article-ndl.hbs @@ -29,7 +29,4 @@ If you typed the URL of this page manually, please double check that you entered {{/if}} {{> pagination}} {{> comments}} -{{#if (eq page.layout 'training')}} - {{> training-help}} -{{/if}} diff --git a/src/partials/article.hbs b/src/partials/article.hbs index 485e3249..a8f9d6c0 100644 --- a/src/partials/article.hbs +++ b/src/partials/article.hbs @@ -10,8 +10,13 @@ If you typed the URL of this page manually, please double check that you entered the address correctly.

{{else}} -
-

{{{ page.title }}}

+ {{#with (or page.attributes.labels page.labels)}} @@ -22,72 +27,7 @@ If you typed the URL of this page manually, please double check that you entered
{{/with}} -{{!-- --}} - - -{{#if page.attributes.deprecated-title}} -
- - - - - -
- - -
Important - page not maintained
-
-

- This page is no longer being maintained and its content may be out of date. - For the latest guidance, please visit - - {{{ page.attributes.deprecated-title }}} - . -

-
- -
-
-{{/if}} - {{{page.contents}}} -{{#if (ne page.attributes.certificate undefined)}} -
-

Certificate

-
-
-

- Certificate not available yet.
- Did you complete the quizzes at the end of each section? -

-
-
-

- Congratulations on completing the course!
- Your certificate should automatically download. If it does not, click here. -

-
-
-
-
-
- -
-
-{{/if}} -{{#if (ne page.attributes.quiz undefined)}} - -{{/if}} -{{/if}} {{> pagination}} -{{> comments}} -{{#if (eq page.layout 'training')}} - {{> training-help}} {{/if}} diff --git a/src/partials/body.hbs b/src/partials/body.hbs index 9ab52a65..f799eda8 100644 --- a/src/partials/body.hbs +++ b/src/partials/body.hbs @@ -1,5 +1,6 @@
+ {{> tab-row}} {{> nav}} {{> main}}
diff --git a/src/partials/footer-scripts.hbs b/src/partials/footer-scripts.hbs index 95c1c274..2550047e 100644 --- a/src/partials/footer-scripts.hbs +++ b/src/partials/footer-scripts.hbs @@ -5,9 +5,7 @@ --}} {{#with (assets-path page)}} - {{#if (or (eq @root.page.layout 'training-certification') (eq @root.page.layout 'training-enrollment') (eq @root.page.layout 'training'))}} - - {{/if}} + {{#if (and (eq @root.page.attributes.theme "cheat-sheet") @root.page.attributes.publish)}} diff --git a/src/partials/header-content.hbs b/src/partials/header-content.hbs index 0fa77159..6b733578 100644 --- a/src/partials/header-content.hbs +++ b/src/partials/header-content.hbs @@ -1,83 +1,13 @@
- {{#if (and page.attributes.banner page.attributes.banner-text)}} -
- {{#with page.attributes.banner-text}}{{{this}}}{{/with}} - {{#if page.attributes.banner-link}} - - {{#with (or page.attributes.banner-link-text page.attributes.banner-link)}}{{{this}}}{{/with}} - - {{/if}} -
- {{/if}} -
diff --git a/src/partials/header-end.hbs b/src/partials/header-end.hbs new file mode 100644 index 00000000..daeecdce --- /dev/null +++ b/src/partials/header-end.hbs @@ -0,0 +1,21 @@ + diff --git a/src/partials/main.hbs b/src/partials/main.hbs index 0b82c803..da28f86d 100644 --- a/src/partials/main.hbs +++ b/src/partials/main.hbs @@ -1,9 +1,6 @@
-{{#unless page.attributes.no-toolbar}}{{> toolbar}}{{/unless}} -
{{> article}} {{> toc}}
-
diff --git a/src/partials/nav-explore.hbs b/src/partials/nav-explore.hbs index ccd9ef89..1b14168b 100644 --- a/src/partials/nav-explore.hbs +++ b/src/partials/nav-explore.hbs @@ -1,23 +1,26 @@ -{{#if page.versions.[1]}} -