Putting your data in a graph database is easy. We wanted to make it as easy to query the data. That's why we set out to create the cypher query language. This session introduces cypher shows a lot of examples and explains how it is used.
The Neo4j Graph database was lacking a declarative query language.
We wanted to add a humane query language which is easy to read and understand. It borrows on other languages like SQL and SPARQL but brings it it's own flavor. Cypher uses ASCII ART to describe graph patterns that you're looking for.
We used Scala's parser combinator library in combination with functional approaches and lazy evaluation to develop the Cypher query language.
The talk describes the internals of the Cypher implementation.
Cypher is a declarative query language recently added to the Neo4j graph database. In this talk we explain the motivations for creating this language, describe its current features and design, and dive a little into its implementation. Finally, we discuss the future direction of how we expect the language to evolve.
Warum ist ein Graph - bestehend aus Knoten und Verbindungen (jeweils mit Attributen) eigentlich so gut geeignet, die meisten Domänen ohne Verrenkungen zu modellieren? Warum habe ich bisher noch nie etwas von der etablierten Graphendatenbank Neo4j gehört? Was kann ich denn konkret damit machen? Welche interessanten Anwendungsgebiete gibt es? Das objektorientierte API ist gut und schön, aber ich möchte meine Objekte direkt in den Graphen abbilden, kann ich das? Gibt es Neo4j, mit spannenden Datensets, auch als gehostete Lösung, um direkt zu starten? Was für eine Programmiersprache brauche ich denn für eine ...4j-Datenbank?
Diese und viele andere Fragen wollen wir in der Präsentation beantworten. Von den Grundlagen angefangen, über Beispiele mit Aha-Effekten bis zum kompakten API von Neo4j und den Treibern für viele Programmiersprachen wird alles vorgestellt. Besonders wichtig ist die Mächtigkeit in Bezug auf die einfache Modellierung beliebiger Domänen. Dabei kann das Objekt-Graph-Mapping auf der Basis der von uns entwickelten Spring-Data-Graph Bibliothek noch einmal kräftig punkten. Den Abschluss der Präsentation bildet ein Abstecher zu gehosteten Neo4j-Instanzen, die besonders für PaaS-Provider, wie z.B. Heroku, sehr geeignet sind.
Neo4j is a powerful and expressive tool for storing, querying and manipulating data. However modeling data as graphs is quite different from modeling data under a relational database. In this talk, Michael Hunger will cover modeling business domains using graphs and show how they can be persisted and queried in Neo4j. We'll contrast this approach with the relational model, and discuss the impact on complexity, flexibility and performance.
The Neo4j Graph database was lacking a declarative query language.
We wanted to add a humane query language which is easy to read and understand. It borrows on other languages like SQL and SPARQL but brings it it's own flavor. Cypher uses ASCII ART to describe graph patterns that you're looking for.
We used Scala's parser combinator library in combination with functional approaches and lazy evaluation to develop the Cypher query language.
The talk describes the internals of the Cypher implementation.
Cypher is a declarative query language recently added to the Neo4j graph database. In this talk we explain the motivations for creating this language, describe its current features and design, and dive a little into its implementation. Finally, we discuss the future direction of how we expect the language to evolve.
Warum ist ein Graph - bestehend aus Knoten und Verbindungen (jeweils mit Attributen) eigentlich so gut geeignet, die meisten Domänen ohne Verrenkungen zu modellieren? Warum habe ich bisher noch nie etwas von der etablierten Graphendatenbank Neo4j gehört? Was kann ich denn konkret damit machen? Welche interessanten Anwendungsgebiete gibt es? Das objektorientierte API ist gut und schön, aber ich möchte meine Objekte direkt in den Graphen abbilden, kann ich das? Gibt es Neo4j, mit spannenden Datensets, auch als gehostete Lösung, um direkt zu starten? Was für eine Programmiersprache brauche ich denn für eine ...4j-Datenbank?
Diese und viele andere Fragen wollen wir in der Präsentation beantworten. Von den Grundlagen angefangen, über Beispiele mit Aha-Effekten bis zum kompakten API von Neo4j und den Treibern für viele Programmiersprachen wird alles vorgestellt. Besonders wichtig ist die Mächtigkeit in Bezug auf die einfache Modellierung beliebiger Domänen. Dabei kann das Objekt-Graph-Mapping auf der Basis der von uns entwickelten Spring-Data-Graph Bibliothek noch einmal kräftig punkten. Den Abschluss der Präsentation bildet ein Abstecher zu gehosteten Neo4j-Instanzen, die besonders für PaaS-Provider, wie z.B. Heroku, sehr geeignet sind.
Neo4j is a powerful and expressive tool for storing, querying and manipulating data. However modeling data as graphs is quite different from modeling data under a relational database. In this talk, Michael Hunger will cover modeling business domains using graphs and show how they can be persisted and queried in Neo4j. We'll contrast this approach with the relational model, and discuss the impact on complexity, flexibility and performance.
Introduction to graph databases, Neo4j and Spring Data - English 2015 EditionAleksander Stensby
English edition of my introduction to Neo4j and Spring Data talk - updated in February 2015 for the latest changes in Neo4j and Spring Data. The talk gives an introduction to graph databases, Neo4j and its query language Cypher. In addition, the talk covers Spring Data Neo4j.
Understanding Graph Databases with Neo4j and CypherRuhaim Izmeth
Inroduction of Grapgh database concepts, explained by comparing the widely popular relational databases and the the sql query language. Neo4j and cypher is used to describe how graph databases work in real life
Mark and Wes will talk about Cypher optimization techniques based on real queries as well as the theoretical underlying processes. They'll start from the basics of "what not to do", and how to take advantage of indexes, and continue to the subtle ways of ordering MATCH/WHERE/WITH clauses for optimal performance as of the 2.0.0 release.
Building a Graph-based Analytics PlatformKenny Bastani
Meetup is a valuable source of data for understanding trends around products or brands. Meetup does not support an analytics package to track group statistics overtime unless you are an administrator of a group. There are no third-party tools or websites that analyze Meetup trends to understand how communities grow.
In this talk I will present a graph-based analytics platform that uses the Meetup.com API to collect and analyze membership statistics over time.
This talk will cover:
How to poll and import periodic data from the Meetup.com API into Neo4j using Node.js.
How to track meetup group growth over time using a Neo4j graph database using Node.js.
How to apply tags to meetup groups and report combined growth of all groups over time.
How to build an interactive documented analytics API to support applications using Node.js and Neo4j.
How to build a business dashboard to visualize time-based statistics and reports using a Node.js based REST API that queries Neo4j.
Neo4j Use Cases - Graphdatenbanken im EinsatzNeo4j
Wenn es an der Zeit ist eine Datenbank für Ihr Projekt auszuwählen, gibt es inzwischen eine verwirrende Anzahl von Auswahlmöglichkeiten. Woher wissen Sie, wann Ihr Projekt gut für eine relationale Datenbank ist, oder ob einer der vielen NoSQL-Optionen eine bessere Wahl darstellt?
In diesem Webinar betrachten wir wann Neo4j zum Einsatz kommen sollte und wo die Vorzüge darin liegen. Dies wird anhand von Kundenbeispielen mit konkreten Einsatzszenerien erläutert.
Complex hierarchical relationships between entities can only be mapped with difficulty in a relational database and demanding queries are usually quite slow.
Graph databases are optimized for exactly these kinds of relationships and can provide high-performance results even with huge amounts of data. Moreover, not only the entities that are stored in the database, have attributes, but also their relationships. Queries can look at entities as well as their relationships.
Get to know the basics of graph databases, using Neo4j as an example, and see how it is used C# projects.
Building Cloud Native Architectures with SpringKenny Bastani
Cloud-native architectures are an emerging practice of software development and delivery. This deck was presented at the Pivotal Cloud Native roadshow and teaches developers how to build modern cloud-native applications using the popular JVM-based application framework: Spring Boot. You'll be provided with a walk through from the monolith application architecture into the more modern microservices architecture. Two open source reference architectures are introduced for building cloud-native microservices. Learn the basics of cloud native platforms and also the approaches for integrating and strangling legacy systems.
https://pivotal.io/event/pivotal-cloud-native-roadshow
Big Graph Analytics on Neo4j with Apache SparkKenny Bastani
In this talk I will introduce you to a Docker container that provides you an easy way to do distributed graph processing using Apache Spark GraphX and a Neo4j graph database. You'll learn how to analyze big data graphs that are exported from Neo4j and consequently updated from the results of a Spark GraphX analysis. The types of analysis I will be talking about are PageRank, connected components, triangle counting, and community detection.
Database technologies have evolved to be able to store big data, but are largely inflexible. For complex graph data models stored in a relational database there may be tedious transformations and shuffling around of data to perform large scale analysis.
Fast and scalable analysis of big data has become a critical competitive advantage for companies. There are open source tools like Apache Hadoop and Apache Spark that are providing opportunities for companies to solve these big data problems in a scalable way. Platforms like these have become the foundation of the big data analysis movement.
Speakers
Webinar: Stop Complex Fraud in its Tracks with Neo4jNeo4j
Financial Services firms are having difficulty with traditional fraud prevention measures that focus on discrete data points such as specific accounts, individuals, devices or IP addresses. However, today’s sophisticated fraudsters escape detection by using sophisticated techniques like card testing, masquerading as a legitimate merchant, skimming cards at vulnerable merchants, forming fraud rings comprised of stolen and synthetic identities, etc.
To uncover such fraud rings, it is essential to look beyond individual data points to the connections that link them. Big Data Platforms and Data Science teams have been deployed to get rid of this menace but it takes weeks and months to uncover these patterns leading to high risk levels and inability to catch the fraudsters before they move on.
Join this webinar to find out why enterprise organizations use Neo4j to augment their existing fraud detection capabilities to combat a variety of financial crimes – and doing so in real-time.
Relational databases were conceived to digitize paper forms and automate well-structured business processes, and still have their uses. But RDBMS cannot model or store data and its relationships without complexity, which means performance degrades with the increasing number and levels of data relationships and data size. Additionally, new types of data and data relationships require schema redesign that increases time to market.
A native graph database like Neo4j naturally stores, manages, analyzes, and uses data within the context of connections meaning Neo4j provides faster query performance and vastly improved flexibility in handling complex hierarchies than SQL.
This webinar explains why companies are shifting away from RDBMS towards graphs to unlock the business value in their data relationships.
OrientDB vs Neo4j - Comparison of query/speed/functionalityCurtis Mosters
This presentation gives an overview on OrientDB and Neo4j. It also compares some specific querys, their speed and the overall functionality of both databases.
The querys might not be optimized in both cases. At least they have the same outcome and are both written as querys. For sure in Neo4j you should do this in Java code. But that is way harder to write, so this presentation is more like a direkt comparision instead of really getting the best results.
Also it's done with real data and at the end round about 200 GB of data.
Looming Marvelous - Virtual Threads in Java Javaland.pdfjexp
Nowadays we have 2 options for concurrency in Java:
* simple, synchronous, blocking code with limited scalability that tracks well linearly at runtime, or.
* complex, asynchronous libraries with high scalability that are harder to handle.
Project Loom aims to bring together the best aspects of these two approaches and make them available to developers.
In the talk, I'll briefly cover the history and challenges of concurrency in Java before we dive into Loom's approaches and do some behind-the-scenes implementation. To manage so many threads reasonably needs some structure - for this there are proposals for "Structured Concurrency" which we will also look at. Some examples and comparisons to test Loom will round up the talk.
Project Loom is included in Java 19 and 20 as a preview feature, it can already be tested how well it works with our applications and libraries.
Spoiler: Pretty good.
Easing the daily grind with the awesome JDK command line toolsjexp
Included in the JDK installation are a lot of handy tools for Java developers, from java, jshell and jcmd to jfr and jdeprscan. These allow you to analyze a running JVM, generate JRE's, run Java source code and much more. In this talk I would like to present a number of these tools with practical examples and thus expand the toolbox of the participants. With the command line tools, many tasks can be automated and executed more efficiently, leaving more time for the exciting things in developer life.
Today, we have 2 options for concurrency in Java:
Simple, synchronous, blocking code with limited scalability that tracks well linearly at runtime, or
complex, asynchronous libraries with high scalability, which are harder to handle
Project Loom aims to bring together the best aspects of these two approaches and make them available to developers.
In the talk, I'll briefly discuss the history and challenges of concurrency in Java before we dive into Loom's approaches and look a bit behind the scenes.
Project Loom is included since Java 17 as a preview feature, it can already be tested to see how well it works with our applications and libraries. Spoiler: Pretty good.
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxjexp
I was there when Cypher was invented in 2012
and have been using it ever since. The language is
extremely powerful and easy to learn. But to truly
master it, you need to understand how it works
internally and how the database executes your
queries. In this session, you'll learn to look behind
the scenes at execution plans with PROFILE and
EXPLAIN and which specific clauses, expressions,
structures, and operations help you minimize
Cypher and database operations. After this talk,
you should be able to speed up your Cypher
statements quite a bit.
The newly released Neo4j Connector for Apache Spark can be used to read and write data between the two systems.
In this demo I show how to use the investigative Data from the FinCEN files to have a full pipeline up an running.
Notebook is in https://github.com/jexp/fincen
How Graphs Help Investigative Journalists to Connect the Dotsjexp
The Journalists of the ICIJ used graph technology to understand the relationships between the leaked pieces of information in the Panama and Paradise Papers.
NBC News applied graph algorithms to the messages and follower networks of Russian Twitter trolls to gain further insights.
The Trumpworld organizational data correlated with US bills and government contracts offers starting points for further investigations.
New tools like graph databases allow data journalists to understand the intricate networks of the criminal, economic and political world better as those three examples show. Each journalist adding new connections helps others to validate their stories. They say "It's like magic".
Join Michael for a look behind the scenes of graph based data ingestion, analysis and investigation.
We will use the open source graph database Neo4j, data visualization and graph algorithms to read between the lines.
Introduction to graph databases, Neo4j and Spring Data - English 2015 EditionAleksander Stensby
English edition of my introduction to Neo4j and Spring Data talk - updated in February 2015 for the latest changes in Neo4j and Spring Data. The talk gives an introduction to graph databases, Neo4j and its query language Cypher. In addition, the talk covers Spring Data Neo4j.
Understanding Graph Databases with Neo4j and CypherRuhaim Izmeth
Inroduction of Grapgh database concepts, explained by comparing the widely popular relational databases and the the sql query language. Neo4j and cypher is used to describe how graph databases work in real life
Mark and Wes will talk about Cypher optimization techniques based on real queries as well as the theoretical underlying processes. They'll start from the basics of "what not to do", and how to take advantage of indexes, and continue to the subtle ways of ordering MATCH/WHERE/WITH clauses for optimal performance as of the 2.0.0 release.
Building a Graph-based Analytics PlatformKenny Bastani
Meetup is a valuable source of data for understanding trends around products or brands. Meetup does not support an analytics package to track group statistics overtime unless you are an administrator of a group. There are no third-party tools or websites that analyze Meetup trends to understand how communities grow.
In this talk I will present a graph-based analytics platform that uses the Meetup.com API to collect and analyze membership statistics over time.
This talk will cover:
How to poll and import periodic data from the Meetup.com API into Neo4j using Node.js.
How to track meetup group growth over time using a Neo4j graph database using Node.js.
How to apply tags to meetup groups and report combined growth of all groups over time.
How to build an interactive documented analytics API to support applications using Node.js and Neo4j.
How to build a business dashboard to visualize time-based statistics and reports using a Node.js based REST API that queries Neo4j.
Neo4j Use Cases - Graphdatenbanken im EinsatzNeo4j
Wenn es an der Zeit ist eine Datenbank für Ihr Projekt auszuwählen, gibt es inzwischen eine verwirrende Anzahl von Auswahlmöglichkeiten. Woher wissen Sie, wann Ihr Projekt gut für eine relationale Datenbank ist, oder ob einer der vielen NoSQL-Optionen eine bessere Wahl darstellt?
In diesem Webinar betrachten wir wann Neo4j zum Einsatz kommen sollte und wo die Vorzüge darin liegen. Dies wird anhand von Kundenbeispielen mit konkreten Einsatzszenerien erläutert.
Complex hierarchical relationships between entities can only be mapped with difficulty in a relational database and demanding queries are usually quite slow.
Graph databases are optimized for exactly these kinds of relationships and can provide high-performance results even with huge amounts of data. Moreover, not only the entities that are stored in the database, have attributes, but also their relationships. Queries can look at entities as well as their relationships.
Get to know the basics of graph databases, using Neo4j as an example, and see how it is used C# projects.
Building Cloud Native Architectures with SpringKenny Bastani
Cloud-native architectures are an emerging practice of software development and delivery. This deck was presented at the Pivotal Cloud Native roadshow and teaches developers how to build modern cloud-native applications using the popular JVM-based application framework: Spring Boot. You'll be provided with a walk through from the monolith application architecture into the more modern microservices architecture. Two open source reference architectures are introduced for building cloud-native microservices. Learn the basics of cloud native platforms and also the approaches for integrating and strangling legacy systems.
https://pivotal.io/event/pivotal-cloud-native-roadshow
Big Graph Analytics on Neo4j with Apache SparkKenny Bastani
In this talk I will introduce you to a Docker container that provides you an easy way to do distributed graph processing using Apache Spark GraphX and a Neo4j graph database. You'll learn how to analyze big data graphs that are exported from Neo4j and consequently updated from the results of a Spark GraphX analysis. The types of analysis I will be talking about are PageRank, connected components, triangle counting, and community detection.
Database technologies have evolved to be able to store big data, but are largely inflexible. For complex graph data models stored in a relational database there may be tedious transformations and shuffling around of data to perform large scale analysis.
Fast and scalable analysis of big data has become a critical competitive advantage for companies. There are open source tools like Apache Hadoop and Apache Spark that are providing opportunities for companies to solve these big data problems in a scalable way. Platforms like these have become the foundation of the big data analysis movement.
Speakers
Webinar: Stop Complex Fraud in its Tracks with Neo4jNeo4j
Financial Services firms are having difficulty with traditional fraud prevention measures that focus on discrete data points such as specific accounts, individuals, devices or IP addresses. However, today’s sophisticated fraudsters escape detection by using sophisticated techniques like card testing, masquerading as a legitimate merchant, skimming cards at vulnerable merchants, forming fraud rings comprised of stolen and synthetic identities, etc.
To uncover such fraud rings, it is essential to look beyond individual data points to the connections that link them. Big Data Platforms and Data Science teams have been deployed to get rid of this menace but it takes weeks and months to uncover these patterns leading to high risk levels and inability to catch the fraudsters before they move on.
Join this webinar to find out why enterprise organizations use Neo4j to augment their existing fraud detection capabilities to combat a variety of financial crimes – and doing so in real-time.
Relational databases were conceived to digitize paper forms and automate well-structured business processes, and still have their uses. But RDBMS cannot model or store data and its relationships without complexity, which means performance degrades with the increasing number and levels of data relationships and data size. Additionally, new types of data and data relationships require schema redesign that increases time to market.
A native graph database like Neo4j naturally stores, manages, analyzes, and uses data within the context of connections meaning Neo4j provides faster query performance and vastly improved flexibility in handling complex hierarchies than SQL.
This webinar explains why companies are shifting away from RDBMS towards graphs to unlock the business value in their data relationships.
OrientDB vs Neo4j - Comparison of query/speed/functionalityCurtis Mosters
This presentation gives an overview on OrientDB and Neo4j. It also compares some specific querys, their speed and the overall functionality of both databases.
The querys might not be optimized in both cases. At least they have the same outcome and are both written as querys. For sure in Neo4j you should do this in Java code. But that is way harder to write, so this presentation is more like a direkt comparision instead of really getting the best results.
Also it's done with real data and at the end round about 200 GB of data.
Looming Marvelous - Virtual Threads in Java Javaland.pdfjexp
Nowadays we have 2 options for concurrency in Java:
* simple, synchronous, blocking code with limited scalability that tracks well linearly at runtime, or.
* complex, asynchronous libraries with high scalability that are harder to handle.
Project Loom aims to bring together the best aspects of these two approaches and make them available to developers.
In the talk, I'll briefly cover the history and challenges of concurrency in Java before we dive into Loom's approaches and do some behind-the-scenes implementation. To manage so many threads reasonably needs some structure - for this there are proposals for "Structured Concurrency" which we will also look at. Some examples and comparisons to test Loom will round up the talk.
Project Loom is included in Java 19 and 20 as a preview feature, it can already be tested how well it works with our applications and libraries.
Spoiler: Pretty good.
Easing the daily grind with the awesome JDK command line toolsjexp
Included in the JDK installation are a lot of handy tools for Java developers, from java, jshell and jcmd to jfr and jdeprscan. These allow you to analyze a running JVM, generate JRE's, run Java source code and much more. In this talk I would like to present a number of these tools with practical examples and thus expand the toolbox of the participants. With the command line tools, many tasks can be automated and executed more efficiently, leaving more time for the exciting things in developer life.
Today, we have 2 options for concurrency in Java:
Simple, synchronous, blocking code with limited scalability that tracks well linearly at runtime, or
complex, asynchronous libraries with high scalability, which are harder to handle
Project Loom aims to bring together the best aspects of these two approaches and make them available to developers.
In the talk, I'll briefly discuss the history and challenges of concurrency in Java before we dive into Loom's approaches and look a bit behind the scenes.
Project Loom is included since Java 17 as a preview feature, it can already be tested to see how well it works with our applications and libraries. Spoiler: Pretty good.
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxjexp
I was there when Cypher was invented in 2012
and have been using it ever since. The language is
extremely powerful and easy to learn. But to truly
master it, you need to understand how it works
internally and how the database executes your
queries. In this session, you'll learn to look behind
the scenes at execution plans with PROFILE and
EXPLAIN and which specific clauses, expressions,
structures, and operations help you minimize
Cypher and database operations. After this talk,
you should be able to speed up your Cypher
statements quite a bit.
The newly released Neo4j Connector for Apache Spark can be used to read and write data between the two systems.
In this demo I show how to use the investigative Data from the FinCEN files to have a full pipeline up an running.
Notebook is in https://github.com/jexp/fincen
How Graphs Help Investigative Journalists to Connect the Dotsjexp
The Journalists of the ICIJ used graph technology to understand the relationships between the leaked pieces of information in the Panama and Paradise Papers.
NBC News applied graph algorithms to the messages and follower networks of Russian Twitter trolls to gain further insights.
The Trumpworld organizational data correlated with US bills and government contracts offers starting points for further investigations.
New tools like graph databases allow data journalists to understand the intricate networks of the criminal, economic and political world better as those three examples show. Each journalist adding new connections helps others to validate their stories. They say "It's like magic".
Join Michael for a look behind the scenes of graph based data ingestion, analysis and investigation.
We will use the open source graph database Neo4j, data visualization and graph algorithms to read between the lines.
Who doesn't know him, the office hero, who sat in the office late into the evening and repaired production? The fact that perhaps another colleague sat on the sofa at home and had an equal share in this success is unfortunately not so appreciated in most company cultures. But why is that? Because we are not used to working at home? Because we think that you are not so productive at home? Because you have family, garden or other activities at home? Michael has been working for distributed companies for a long time, but has also worked in offices for a long time. He will take you on his journey through different working environments and tell you what worked well for him.
The JVM is already a runtime for many languages. With the optimizing Graal compiler added to Java 11 and the language implementations in Truffle for Ruby, Python, JavaScript, and R it becomes possible to run them natively on the JVM, even exchanging data between them.
Michael Hunger explains the concepts behind Truffle and Graal and uses a practical example to show how you can use Python and JavaScript for “stored procedures” in a JVM-based database.
He demonstrates how to optimize the startup time of your application and container images by precompiling it to machine-code and examines its limits and the difference it makes. But nothing is perfect—Michael discusses the limitations and compares performances for the full picture.
Presentation at OSCON, PDX 2019.
https://conferences.oreilly.com/oscon/oscon-or/public/schedule/detail/76092
Neo4j Graph Streaming Services with Apache Kafkajexp
In this presentation we give an high level overview of the Neo4j-Kafka integration and the Confluent partnership.
Providing change-data-capture and ingestion capabilities as Neo4j Extension and the Kafka Connect Neo4j Sink on Confluent Hub allows you to integrate real-time streaming with graph querying and analytics.
How Graph Databases efficiently store, manage and query connected data at s...jexp
Graph Databases try to make it easy for developers to leverage huge amounts of connected information for everything from routing to recommendations. Doing that poses a number of challenges on the implementation side. In this talk we want to look at the different storage, query and consistency approaches that are used behind the scenes. We’ll check out current and future solutions used in Neo4j and other graph databases for addressing global consistency, query and storage optimization, indexing and more and see which papers and research database developers take inspirations from.
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Libraryjexp
APOC has become the de-facto standard utility library for Neo4j. In this talk, I will demonstrate some of the lesser known but very useful components of APOC that will save you a lot of work. You will also learn how to combine individual functions into powerful constructs to achieve impressive feats
This will be a fast-paced demo/live-coding talk.
Video: https://neo4j.com/graphconnect-2018/session/neo4j-utility-library-apoc-pearls
Unicorn images by TeeTurtle.com (Unstable Unicorns is a fun game & cool t-shirts)
Code we've written once has to be kept readable, maintainable, understandable and extensible for many years. Good code is not self-serving but the foundation for working together.
Refactoring can help you to keep the quality of the relevant parts of our systems high.
The technique is really easy (almost too easy) - improve the naming, structure, and responsibility in small steps that don't change behavior and run your tests after each step.
18 years ago I got hooked on Refactoring when Martin Fowler's first book came out. I've been using it since then on a daily basis on many different projects. Since then a lot has changed, especially with the help of modern IDEs with their automated refactorings and intentions.
Now he asked me to help review the 2nd edition. Our discussions reminded me that each generation of developers should be taught this crucial skill. That's why I want to give an overview of core refactorings and code-smells but also demonstrate the tips and tricks of today's tools that make this task so much easier.
Plus a sneak preview of the upcoming book.
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...jexp
Highlighting the progress in Neo4j 3.3 and 3.4 especially
Neo4j Desktop, Graph Algorithms, NLP, Date-Time, Geospatial, and performance.
Also featuring the new visualization tool Neo4j Bloom.
GraphQL - The new "Lingua Franca" for API-Developmentjexp
Three years ago, with the release of the GraphQL specification, Facebook took a fresh stab at the topic of "API design between remote services and applications." The key aspects of GraphQL provide a common, schema-based, domain-specific language and flexible, dynamic queries at interface boundaries.
In the talk, I'd like to compare GraphQL and REST and showcase benefits for developers and architects using a concrete example in application and API development, data source and system integration.
Not only, is our data is getting not just more complex but also more connected. In order not to lose sight of the web of information, but to use it as a source of new insights and opportunities, technologies such as graph databases can help.
For both analytical and transactional use cases, they allow efficient storage, retrieval, and processing of networked data without loss of detail. In this talk, we want to get to know existing tools and techniques for graph data processing.
We recently released the Neo4j graph algorithms library.
You can use these graph algorithms on your connected data to gain new insights more easily within Neo4j. You can use these graph analytics to improve results from your graph data, for example by focusing on particular communities or favoring popular entities.
We developed this library as part of our effort to make it easier to use Neo4j for a wider variety of applications. Many users expressed interest in running graph algorithms directly on Neo4j without having to employ a secondary system.
We also tuned these algorithms to be as efficient as possible in regards to resource utilization as well as streamlined for later management and debugging.
In this session we'll look at some of these graph algorithms and the types of problems that you can use them for in your applications.
Despite the “Graph” in the name, GraphQL is mostly used to query relational databases, object models or APIs. But it is really easy to support GraphQL endpoints from graph databases too. In this talk, I’ll demonstrate how we implemented a GraphQL extension for the Neo4j graph database. It uses the GraphQL schema definition map arbitrary GraphQL queries into single graph queries and runs them against the data in the Graph database. Using directives in the schema, we added some cool features that are transparent to the end user like computed fields and auto-generated mutations and query types. That allows you to create GraphQL APIs of some complexity without writing a single line of code.
I will show how to use the Neo4j-GraphQL extension, by creating an endpoint for the Game of Thrones dataset, and how we then can use our well-known tools (GraphiQL, apollo-client, graphql-cli, voyager) to interact with it.
Despite the “Graph” in the name, GraphQL is mostly used to query relational databases or object models. But it is really well suited to querying graph databases too. In this talk, I’ll demonstrate how I implemented a GraphQL endpoint for the Neo4j graph database and how you would use it in your app.
The world around us is full of connected information. Neo4j was originally developed to solve two complex "network" problems in a document management system, as it was too hard to manage rich connection information efficiently in traditional and new "NOSQL" databases.During this meetup, we will talk about the technology, and about the journey that a couple of technologists from Malmö took. You will learn* how Neo Technology grew from just the three founders in to a global database company with use-cases in every domain imaginable.* how focusing on customer and community feedback allows us to provide a solution for managing connected data to everyone, not just the large internet companies.
Of course we will also introduce the graph model, it's whiteboard friendlyness and how you get started with Neo4j and it's easy and powerful query language Cypher. We'll also compare the graph and relational data model to see how they differ in shape and capabilities. Finally we discuss the foundations that enable Graph databases to provide higher join performance, faster development processes and more inclusive software for all stakeholders. With use-cases from Gaming, Dating and Finance we'll see how to apply the graph capabilities to these domains to realize new functionality or opportunities that were not possible before.
Finally, if there's a question you've always wanted to ask/discuss, we'll have plenty of time for that at the end of Michael's presentation.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
11. We're talking about a
Property Graph
Em Joh
il a n
knows knows
Alli Tob Lar
Nodes
son ias knows s
knows
And And knows
knows rea rés
s
knows knows knows
Pet Miic
Mc knows Ian
er knows a
a
knows knows
De Mic
lia h ael
Relationships
Properties (each a key+value)
+ Indexes (for easy look-ups)
7
14. (Neo4j) -[:IS_A]-> (Graph Database)
Lucene
Sharding 1 M/s
Master/
Index
LS
Slave
TRAVERSA
HIG
TES
H_A
VA RA
G
IL. TE
IN
PROVIDES ACID
Server RUN
S_A LI TX
S CE
NS
ED
_L
ES_T
Ruby IK
RU
JS E
MySQL
S
_A
NS
SC AL
O
Clojure
_O
NS
.net
RU
N Mongo
34bn
embedded Heroku
Nodes 9
17. What is Cypher?
๏Pattern-Matching Query Language
๏Humane language
๏Expressive
๏Declarative: Say what you want, not how
๏borrows from well known query langs
๏Aggregation, Ordering, Limit
๏Update the Graph
12
18. Something new? Why?
๏ Existing Neo4j query mechanisms were not simple enough
• Too verbose (Java API)
• Too prescriptive (Gremlin)
๏ SQL: Unable to express paths
• these are crucial for graph-based reasoning
• Neo4j is schema/table free
๏ SPARQL: designed for a different data model
• namespaces
• properties as nodes
13
19. A Graph
Can‘t see the Patterns for the Trees
http://maxdemarzi.com/2012/02/13/visualizing-a-network-with-cypher/
14
20. It‘s all about Patterns
A
B C
We want to find this Pattern!
15
43. How does it work?
// lookup starting point in an index
start n=node:People(name = ‘Andreas’)
And
rea
s
28
44. How does it work?
// lookup starting point in an index
then traverse to find results
start n=node:People(name = ‘Andreas’)
match (n)--()--(foaf) return foaf
And
rea
s
28
48. Cypher: START + RETURN
๏ START <lookup> RETURN <expressions>
๏ START binds terms using simple look-up
•directly using known ids
•or based on indexed Property
๏ RETURN expressions specify result set
30
49. Cypher: START + RETURN
๏ START <lookup> RETURN <expressions>
๏ START binds terms using simple look-up
•directly using known ids
•or based on indexed Property
๏ RETURN expressions specify result set
// lookup node id 0, return that node
start n=node(0) return n
// lookup node in Index, return that node
start n=node:Person(name="Andreas") return n
// lookup all nodes, return all name properties
start n=node(*) return n.name
30
51. Cypher: MATCH
๏ START <lookup> MATCH <pattern> RETURN <expr>
๏ MATCH describes a pattern of nodes+relationships
•node terms in optional parenthesis
•lines with arrows for relationships
31
52. Cypher: MATCH
๏ START <lookup> MATCH <pattern> RETURN <expr>
๏ MATCH describes a pattern of nodes+relationships
•node terms in optional parenthesis
•lines with arrows for relationships
// lookup 'n', traverse any relationship to some 'm'
start n=node(0) match (n)--(m) return n,m
// any outgoing relationship from 'n' to 'm'
start n=node(0) match n-->m return n,m
// only 'KNOWS' relationships from 'n' to 'm'
start n=node(0) match n-[:KNOWS]->m return n,m
// from 'n' to 'm' and capture the relationship as 'r'
start n=node(0) match n-[r]->m return n,r,m
// from 'n' outgoing to 'm', then incoming from 'o'
start n=node(0) match n-->m<--o return n,m,o
31
54. Cypher: RETURN
๏ RETURN <expressions>, aggregation(expr) as alias
๏ RETURN nodes, rels, properties
๏ RETURN expressions of functions and operators
๏ RETURN aggregation functions on the above
32
55. Cypher: RETURN
๏ RETURN <expressions>, aggregation(expr) as alias
๏ RETURN nodes, rels, properties
๏ RETURN expressions of functions and operators
๏ RETURN aggregation functions on the above
// aggregate on n, count the m‘s
start n=node(0) match n--m return n,count(*)
// alias n.name as name
start n=node(0) return n.name as name
// aggregate m‘s into list
start n=node(*) match n--m return n,collect(m)
// filter m‘s by name
start n=node(*) match n--m return n,filter(x in collect(m):
m.name ˜= /A.*/) as a_block
32
57. Cypher: WHERE
๏ START <lookup> [MATCH <pattern>]
WHERE <condition> RETURN <expr>
๏ WHERE filters nodes or relationships
•uses expressions to constrain elements
33
58. Cypher: WHERE
๏ START <lookup> [MATCH <pattern>]
WHERE <condition> RETURN <expr>
๏ WHERE filters nodes or relationships
•uses expressions to constrain elements
// lookup all nodes as 'n', constrained to name 'Andreas'
start n=node(*) where n.name='Andreas' return n
// filter nodes where age is less than 30
start n=node(*) where n.age<30 return n
// filter using a regular expression
start n=node(*) where n.name =~ /Tob.*/ return n
// filter for a property exists
start n=node(*) where has(n.name) return n
33
60. Cypher: CREATE
๏ CREATE <node>[,node or relationship] RETURN <expr>
•create nodes with optional properties
•create relationship (must have a type)
34
61. Cypher: CREATE
๏ CREATE <node>[,node or relationship] RETURN <expr>
•create nodes with optional properties
•create relationship (must have a type)
// create an anonymous node
create n
// create node with a property, returning it
create n={name:'Andreas'} return n
// lookup 2 nodes, then create a relationship and return it
start n=node(0),m=node(1) create n-[r:KNOWS]-m return r
// lookup nodes, then create a relationship with properties
start n=node(1),m=node(2) create n-[r:KNOWS {since:2008}]->m
34
63. Cypher: CREATE UNIQUE
๏ CREATE UNIQUE node-[rel]->(node {prop : value})
•„fixes“ the graph
•starts at bound nodes, properties rels and nodes by
comparing types and
tries to find
•if not found creates them
35
64. Cypher: CREATE UNIQUE
๏ CREATE UNIQUE node-[rel]->(node {prop : value})
•„fixes“ the graph
•starts at bound nodes, properties rels and nodes by
comparing types and
tries to find
•if not found creates them
// create a new relationship
start n=.., m=.. create unique n-[:KNOWS]->m
// create a new node AND relationship
start n=... create unique n-[:TAGGED]->(tag {name:“neo“})
// matches the tag node by name only creates new relationship
start n=... create unique n-[:TAGGED]->(tag {name:“neo“})
35
66. Cypher: SET
๏ SET [<node property>] [<relationship property>]
•update a property on a node or relationship
•must follow a START
36
67. Cypher: SET
๏ SET [<node property>] [<relationship property>]
•update a property on a node or relationship
•must follow a START
// update the name property
start n=node(0) set n.name='Peter'
// update many nodes, using a calculation
start n=node(*) set n.size=n.size+1
// match & capture a relationship, update a property
start n=node(1) match n-[r]-m set r.times=10
36
69. Cypher: DELETE
๏ DELETE [<node>|<relationship>|<property>]
•delete a node, relationship or property
•toall relationships must be deleted first
delete a node,
37
70. Cypher: DELETE
๏ DELETE [<node>|<relationship>|<property>]
•delete a node, relationship or property
•toall relationships must be deleted first
delete a node,
// delete a node
start n=node(5) delete n
// remove a node and all relationships
start n=node(3) match n-[r]-() delete n, r
// remove a property
start n=node(3) delete n.age
37
72. START user = node(1)
MATCH user -[user_skill]-> skill
RETURN skill, user_skill
SELECT skills.*, user_skill.*
FROM users
JOIN user_skill ON users.id = user_skill.user_id
JOIN skills ON user_skill.skill_id = skill.id WHERE users.id = 1
39
73. Example:
Old, Influential Friends
START me = node(...)
MATCH (me) - [f:FRIEND] - (old_friend)
- [:FRIEND ] - (fof)
WHERE ({today}-f.begin) > 365*10
WITH old_friend, collect(fof.name) as names
WHERE length(names) > 100
RETURN old_friend, names
ORDER BY old_friend.name ASC
f:FRIEND :FRIEND
me friend fof
74. Example:
Simple Recommendation
START me = node(...)
MATCH (me) -[r1:RATED ]->(thing)
<-[r2:RATED ]- (someone)
-[r3:RATED ]->(cool_thing)
WHERE ABS(r1.stars-r2.stars) <= 2
AND r3.stars > 3
RETURN cool_thing, count(*) AS cnt
ORDER BY cnt DESC LIMIT 10
r1:RATED thing r2:RATED
me so
TED
r 3: RA
cool
thing 41
81. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
46
82. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
46
83. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
46
84. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
• Good Relationships
46
85. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
• Good Relationships
๏ Get Neo4j
46
86. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
• Good Relationships
๏ Get Neo4j
• http://neo4j.org/download
46
87. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
• Good Relationships
๏ Get Neo4j
• http://neo4j.org/download
• http://addons.heroku.com/neo4j/
๏ Participate
• http://groups.google.com/group/neo4j
• http://neo4j.meetup.com
46
88. How to get started?
๏ Documentation
• docs.neo4j.org - tutorials+reference
• http://console.neo4j.org
• Neo4j in Action
• Good Relationships
๏ Get Neo4j
• http://neo4j.org/download
• http://addons.heroku.com/neo4j/
๏ Participate
• http://groups.google.com/group/neo4j
• http://neo4j.meetup.com
• a session like this one ;)
46
97. But there is more
๏Visualize & query Method, Field
dependencies
๏Collaborative filtering (co-usage)
๏Ranking
๏God classes
๏Paths between classes
55
98. Welcome to Class-Graph
๏take a JAR
๏put it under ASM
๏scan it superfast
๏pull everything into Neo4j
๏add categories, indexes
๏Have Fun
http://github.com/jexp/class-graph 56
100. Interactive Hands-On Session
๏Lots of tasks
๏use Cypher to solve them
http://neo4j.org/resources/cypher
๏be creative, work together
๏ask !
๏Server http://bit.ly/innoq-neo4j
๏just the beginning
58
103. Task: Subclasses of Number?
•Return just the name
•Order them alphabetically
60
104. Task: Subclasses of Number?
START n=node:types(name="java.lang.Number")
MATCH n<-[:SUPER_TYPE]-s
RETURN s.name
ORDER BY s.name;
•Return just the name
•Order them alphabetically
60
105. Task: Which Methods does it have / how many
•Find the top 5 classes with the most members
61
106. Task: Which Methods does it have / how many
START n=node:types(name="java.lang.Number")
MATCH n-[:METHOD_OF|FIELD_OF]->m
RETURN m;
•Find the top 5 classes with the most members
61
107. Task: Calculate the fan-out of
java.lang.StringBuilder
•Calculate fan-in
•Which class has the highest fan-out
•What about package-level? 62
108. Task: Calculate the fan-out of
java.lang.StringBuilder
START o=node:types(name="j.l.StringBuilder")
MATCH o-[:FIELD_OF]->f-[:FIELD_TYPE]->tf,
o-[:METHOD_OF]->m-[:PARAM_TYPE]->tp,
m-[:RETURN_TYPE]->tr
RETURN o,count(distinct tf)
+ count(distinct tp)
+ count(distinct tr) as fan_out;
•Calculate fan-in
•Which class has the highest fan-out
•What about package-level? 62
110. Task: Find longest Inheritance Path
start c=node:types(name="java.lang.Object")
match path=p<-[:SUPER_TYPE*]-c
return extract(n in nodes(path) : n.name),
length(path) as len
order by len desc
limit 5;
63
111. Task: Find the class that used IOException
most often
64
112. Task: Find the class that used IOException
most often
START ex=node:types(name="java.io.IOException"
MATCH ex<-[:THROWS]-m<-[:METHOD_OF]-c
RETURN c, count(*)
ORDER BY count(*)
LIMIT 5;
64
113. Task: Which other classes did classes that
threw IOException use most often?
•What could be a source of IOExceptions
65
114. Task: Which other classes did classes that
threw IOException use most often?
START ex=node:types(name="java.io.IOException")
MATCH ex<-[:THROWS]-m<-[:METHOD_OF]-c,
mbr<-[:METHOD_OF|FIELD_OF]-c,
mbr-[:FIELD_TYPE|PARAM_TYPE|
RETURN_TYPE|THROWS]->other_type
WHERE other_type.name =~ /.+[.].+/
RETURN other_type.name, count(*)
ORDER BY count(*) desc
LIMIT 10;
•What could be a source of IOExceptions
65
115. Task: Find a class you like and add a field with
your name and some type
66
116. Task: Find a class you like and add a field with
your name and some type
START c=node:types(name="void"),
t=node:types(name="java.lang.reflect.Proxy")
CREATE c-[:FIELD_OF]->(field {name:“Michael“})
-[:FIELD_TYPE]->t;
66
117. Task: Delete the most annoying class and all its
methods, fields and their relationships
67
118. Task: Delete the most annoying class and all its
methods, fields and their relationships
START c=node:types(name="java.awt.List"),
MATCH c-[r1:FIELD_OF|METHOD_OF]->mbr-[r2]-()
c-[r]-()
DELETE c,mbr,r1,r2,r;
67
Editor's Notes
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
There existed a number of different ways to query a graph database. This one aims to make querying easy, and to produce queries that are readable.\n\nWe looked at alternatives - SPARQL, SQL, Gremlin and other...\n
There existed a number of different ways to query a graph database. This one aims to make querying easy, and to produce queries that are readable.\n\nWe looked at alternatives - SPARQL, SQL, Gremlin and other...\n
There existed a number of different ways to query a graph database. This one aims to make querying easy, and to produce queries that are readable.\n\nWe looked at alternatives - SPARQL, SQL, Gremlin and other...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
There existed a number of different ways to query a graph database. This one aims to make querying easy, and to produce queries that are readable.\n\nWe looked at alternatives - SPARQL, SQL, Gremlin and other...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
There existed a number of different ways to query a graph database. This one aims to make querying easy, and to produce queries that are readable.\n\nWe looked at alternatives - SPARQL, SQL, Gremlin and other...\n
\n
\n
3rd minute\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
5th minute\n
\n
Life-Console\n&#x2022;In Memory GDBs in Web Session\n&#x2022;Set up with mutating Cypher (or Geoff)\n&#x2022;Executes Cypher (also mutating)\n&#x2022;Visualizes Graph & Query Results (d3)\n&#x2022;Multiple Cypher Versions\n&#x2022;Share: short link, tweet, yUML\n&#x2022;Embeddable <iframe>\n&#x2022;Live Console for Docs\n