There is nothing more fascinating and utterly mind-bending than traversing a graph. Those who succumb to this data processing pattern euphorically suffer from graph pathology.
This is a case study of the Graph Addict.
The Gremlin traversal machine is composed of three components: a graph, a traversal, and a set of traversers. Learn how these components interact to enable distributed, vendor-agnostic, OLTP/OLAP-based graph computing.
This talk was presented live at DataStax's Support Summit in Carmel, CA (April 2017) and Engineering Summit in Las Vegas, NV (May 2017).
Presented at JAX London 2013
Clojure is the most interesting new language on the horizon, but many developers suffer from the Blub Paradox when they see the Lisp syntax. This talk introduces Clojure to developers who haven’t been exposed to it yet, focusing on the things that truly set it apart from other languages.
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFabio Collini
Kotlin is a first-class language for Android development since Google I/O 2017. And it’s here to stay!
Thanks to Android Studio it’s really easy to introduce Kotlin in an existing project, the configuration is trivial and then we can convert Java classes to Kotlin using a Alt+Shift+Cmd+K. But the new syntax is the just beginning, using Kotlin we can improve our code making it more readable and simpler to write.
In this talk we’ll see how to use some Kotlin features (for example data classes, collections, coroutines and delegates) to simplify Android development comparing the code with the equivalent “modern” Java code. It’s not fair to compare Kotlin code with plain Java 6 code so the Java examples will use lambdas and some external libraries like RxJava and AutoValue.
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFabio Collini
Kotlin is a first-class language for Android development since Google I/O 2017. And it’s here to stay!
Thanks to Android Studio it’s really easy to introduce Kotlin in an existing project, the configuration is trivial and then we can convert Java classes to Kotlin using a Alt+Shift+Cmd+K. But the new syntax is the just beginning, using Kotlin we can improve our code making it more readable and simpler to write.
In this talk we’ll see how to use some Kotlin features (for example data classes, collections, coroutines and delegates) to simplify Android development comparing the code with the equivalent “modern” Java code. It’s not fair to compare Kotlin code with plain Java 6 code so the Java examples will use lambdas and some external libraries like RxJava and AutoValue.
The Gremlin traversal machine is composed of three components: a graph, a traversal, and a set of traversers. Learn how these components interact to enable distributed, vendor-agnostic, OLTP/OLAP-based graph computing.
This talk was presented live at DataStax's Support Summit in Carmel, CA (April 2017) and Engineering Summit in Las Vegas, NV (May 2017).
Presented at JAX London 2013
Clojure is the most interesting new language on the horizon, but many developers suffer from the Blub Paradox when they see the Lisp syntax. This talk introduces Clojure to developers who haven’t been exposed to it yet, focusing on the things that truly set it apart from other languages.
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFabio Collini
Kotlin is a first-class language for Android development since Google I/O 2017. And it’s here to stay!
Thanks to Android Studio it’s really easy to introduce Kotlin in an existing project, the configuration is trivial and then we can convert Java classes to Kotlin using a Alt+Shift+Cmd+K. But the new syntax is the just beginning, using Kotlin we can improve our code making it more readable and simpler to write.
In this talk we’ll see how to use some Kotlin features (for example data classes, collections, coroutines and delegates) to simplify Android development comparing the code with the equivalent “modern” Java code. It’s not fair to compare Kotlin code with plain Java 6 code so the Java examples will use lambdas and some external libraries like RxJava and AutoValue.
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFabio Collini
Kotlin is a first-class language for Android development since Google I/O 2017. And it’s here to stay!
Thanks to Android Studio it’s really easy to introduce Kotlin in an existing project, the configuration is trivial and then we can convert Java classes to Kotlin using a Alt+Shift+Cmd+K. But the new syntax is the just beginning, using Kotlin we can improve our code making it more readable and simpler to write.
In this talk we’ll see how to use some Kotlin features (for example data classes, collections, coroutines and delegates) to simplify Android development comparing the code with the equivalent “modern” Java code. It’s not fair to compare Kotlin code with plain Java 6 code so the Java examples will use lambdas and some external libraries like RxJava and AutoValue.
A visual tour of the corresponding GraphDay 2017 article -- https://doi.org/10.5281/zenodo.583293.
A propositional axiom is stated -- "everything is a graph." The entailments of this axiom are discussed and problems are presented that don't lend themselves to an easy representation as vertices and edges.
Abstract: The universal graph is a theoretical construct capturing the idea that every aspect of reality can be modeled as a graph composed of vertices and edges and, as such, reality is a graph. From the physical world of atoms, people, and galaxies to the mental planes of thoughts, words, and knowledge, there exists a universal graph hosting all such structures. While this idea is enticing, there are still strides to be made in coming to terms with a reality that is not composed of atoms bound by spacetime, but instead, a graph composed of vertices united by edges.
Помните легендарные Java Puzzlers? Да-да, те самые, с Джошом Блохом и Нилом Гафтером? Ну, по которым ещё книжку написали? Так вот, в Groovy всё ещё веселее.
В смысле — задачки ещё более странные, и ответы ещё более поразительные. Этот доклад для вас, Groovy-разработчики, мы покажем вам настоящие, большие и красивые подводные камни! И для вас, Java-разработчики, потому что таких вещей на Java-подобном синтакисе вы точно никогда не видели! И для вас, PHP-разработчики… хотя, нет, не для вас :)
Всем точно будет весело — ваши ведущие Женя и Барух будут зажигать, шутить, спорить, бросаться футболками в публику, и самое главное — заставят вас офигевать от Groovy.
Test-Driven Development is presented as the one and only way to write code. Some people consider you not a professional software developer if you do not use it.
Uncle Bob uses TDD to solve the Primes Kata with just three lines of code. These three lines were justified by only seven tests.
However, tests have one big problem: tests can only prove the presence of bugs, not their absence. So how does TDD help you writing correct programs?
Prof. E.W. Dijkstra, winner of the Turing Award, developed a formal way of deriving and proving algorithms.
Formal proofs are constructed with pre- or postconditions. Rules to prove the postcondition of a single assignment and a single if-statement are shown. Using an invariant and a bound function the postcondition of a while-loop can be proved. Using these simple rules a solution of the Primes Kata is derived.
The formal proof of the correctness for these three lines make one thing clear: seven tests are not sufficient to prove this algorithm!
Do not fear very detailed and formal mathematical proofs. The derivations are presented in a practical and informal way.
A short talk on what makes Functional Programming - and especially Haskell - different.
We'll take a quick overview of Haskell's features and coding style, and then work through a short but complete example of using it for a Real World problem.
http://lanyrd.com/2011/geekup-liverpool-may/sdykh/
Video: https://www.youtube.com/watch?v=SfrEThI_m7g
Source code: https://github.com/Alotor/2015-greach-groovy-dsls
Behind each good Groovy library or framework there is a good DSL (Domain Specific Language). And this is not by chance, one of the most exciting features of Groovy is its amazing syntax flexibility and metaprogramming capabilities that allow us do things in a highly expressive manner through DSLs.
In this talk I’ll explain the basics of doing DLS’s with Groovy. What you’ll need to start and what to investigate deeper. Also, we’ll check some of the most well known ones libraries like Spock, Gradle or Grails so you can use their techniques in your own Groovy projects.
This talk was part tongue in cheek, part serious, but entirely fun and given twice as a lightning talk - once at Europython & once at the ACCU python uk 05. It presents a generic python like language parser which does actually work. Think of it as an alternative to brackets in Lisp!
The Actor Model describes precisely what it means for computation to be distributed: encapsulated and isolated behaviors process messages that are sent asynchronously between them. Akka’s implementation of this model has been widely successful, but for a long time it had the restriction that Actor interactions were not statically type-checked. With the addition of the akka-typed module we have finally found a formulation that brings Actor messaging to the same type-safety as normal method invocation—if not beyond—while being simple and intuitive. In this presentation we will look at why this addition has taken so long, how it works, and what we can express with it.
Actor-skeptics beware: this may shift your world-view!
Speaker: André Spiegel
Many applications require processes that load large amounts of data into MongoDB. It is easy to get these processes wrong, resulting in hours or days of loading time when it could be done in minutes. This talk identifies common mistakes and pitfalls and shows design patterns that can dramatically improve performance. The patterns introduced here can be used with any tool or programming language.
A visual tour of the corresponding GraphDay 2017 article -- https://doi.org/10.5281/zenodo.583293.
A propositional axiom is stated -- "everything is a graph." The entailments of this axiom are discussed and problems are presented that don't lend themselves to an easy representation as vertices and edges.
Abstract: The universal graph is a theoretical construct capturing the idea that every aspect of reality can be modeled as a graph composed of vertices and edges and, as such, reality is a graph. From the physical world of atoms, people, and galaxies to the mental planes of thoughts, words, and knowledge, there exists a universal graph hosting all such structures. While this idea is enticing, there are still strides to be made in coming to terms with a reality that is not composed of atoms bound by spacetime, but instead, a graph composed of vertices united by edges.
Помните легендарные Java Puzzlers? Да-да, те самые, с Джошом Блохом и Нилом Гафтером? Ну, по которым ещё книжку написали? Так вот, в Groovy всё ещё веселее.
В смысле — задачки ещё более странные, и ответы ещё более поразительные. Этот доклад для вас, Groovy-разработчики, мы покажем вам настоящие, большие и красивые подводные камни! И для вас, Java-разработчики, потому что таких вещей на Java-подобном синтакисе вы точно никогда не видели! И для вас, PHP-разработчики… хотя, нет, не для вас :)
Всем точно будет весело — ваши ведущие Женя и Барух будут зажигать, шутить, спорить, бросаться футболками в публику, и самое главное — заставят вас офигевать от Groovy.
Test-Driven Development is presented as the one and only way to write code. Some people consider you not a professional software developer if you do not use it.
Uncle Bob uses TDD to solve the Primes Kata with just three lines of code. These three lines were justified by only seven tests.
However, tests have one big problem: tests can only prove the presence of bugs, not their absence. So how does TDD help you writing correct programs?
Prof. E.W. Dijkstra, winner of the Turing Award, developed a formal way of deriving and proving algorithms.
Formal proofs are constructed with pre- or postconditions. Rules to prove the postcondition of a single assignment and a single if-statement are shown. Using an invariant and a bound function the postcondition of a while-loop can be proved. Using these simple rules a solution of the Primes Kata is derived.
The formal proof of the correctness for these three lines make one thing clear: seven tests are not sufficient to prove this algorithm!
Do not fear very detailed and formal mathematical proofs. The derivations are presented in a practical and informal way.
A short talk on what makes Functional Programming - and especially Haskell - different.
We'll take a quick overview of Haskell's features and coding style, and then work through a short but complete example of using it for a Real World problem.
http://lanyrd.com/2011/geekup-liverpool-may/sdykh/
Video: https://www.youtube.com/watch?v=SfrEThI_m7g
Source code: https://github.com/Alotor/2015-greach-groovy-dsls
Behind each good Groovy library or framework there is a good DSL (Domain Specific Language). And this is not by chance, one of the most exciting features of Groovy is its amazing syntax flexibility and metaprogramming capabilities that allow us do things in a highly expressive manner through DSLs.
In this talk I’ll explain the basics of doing DLS’s with Groovy. What you’ll need to start and what to investigate deeper. Also, we’ll check some of the most well known ones libraries like Spock, Gradle or Grails so you can use their techniques in your own Groovy projects.
This talk was part tongue in cheek, part serious, but entirely fun and given twice as a lightning talk - once at Europython & once at the ACCU python uk 05. It presents a generic python like language parser which does actually work. Think of it as an alternative to brackets in Lisp!
The Actor Model describes precisely what it means for computation to be distributed: encapsulated and isolated behaviors process messages that are sent asynchronously between them. Akka’s implementation of this model has been widely successful, but for a long time it had the restriction that Actor interactions were not statically type-checked. With the addition of the akka-typed module we have finally found a formulation that brings Actor messaging to the same type-safety as normal method invocation—if not beyond—while being simple and intuitive. In this presentation we will look at why this addition has taken so long, how it works, and what we can express with it.
Actor-skeptics beware: this may shift your world-view!
Speaker: André Spiegel
Many applications require processes that load large amounts of data into MongoDB. It is easy to get these processes wrong, resulting in hours or days of loading time when it could be done in minutes. This talk identifies common mistakes and pitfalls and shows design patterns that can dramatically improve performance. The patterns introduced here can be used with any tool or programming language.
This talk argues that the future of data query/analytic languages will be all about embedding the language into the native programming language of the developer. As an example of this style, the Gremlin graph traversal language is presented. Gremlin can be represented in any programming language that supports function composition and function nesting. The language representation is then compiled to Gremlin bytecode to ultimately be executed by the/a Gremlin graph traversal machine. This enables both the Gremlin language and machine to be agnostic to the execution language.
This presentation was given on January 17, 2016 at the GraphDay conference in Austin, Texas. The slides demonstrate the use of wave dynamics in graph structures. Moreover, they demonstrate how to implement quantum processes on graph structures.
There is an associated article available at http://arxiv.org/abs/1511.06278 (Quantum Walks with Gremlin).
ACM DBPL Keynote: The Graph Traversal Machine and LanguageMarko Rodriguez
Learn about Apache TinkerPop's Gremlin traversal machine and language. Presented as the keynote for ACM's Database Programming Languages conference in Pittsburgh Pennsylvania on October 27, 2015.
A presentation of Apache TinkerPop's Gremlin language with running examples over the MovieLens dataset. Presented August 19, 2015 at NoSQL NOW in San Jose, California.
Faunus is a graph analytics engine built atop the Hadoop distributed computing platform. The graph representation is a distributed adjacency list, whereby a vertex and its incident edges are co-located on the same machine. Querying a Faunus graph is possible with a MapReduce-variant of the Gremlin graph traversal language. A Gremlin expression compiles down to a series of MapReduce-steps that are sequence optimized and then executed by Hadoop. Results are stored as transformations to the input graph (graph derivations) or computational side-effects such as aggregates (graph statistics). Beyond querying, a collection of input/output formats are supported which enable Faunus to load/store graphs in the distributed graph database Titan, various graph formats stored in HDFS, and via arbitrary user-defined functions. This presentation will focus primarily on Faunus, but will also review the satellite technologies that enable it.
Who am I and why do I feel that the world is not infinitely perfect? Which technologies should I use to rectify this situation? Enter the graph and the graph traversal.
A graph is a data structure composed of vertices/dots and edges/lines. A graph database is a software system used to persist and process graphs. The common conception in today's database community is that there is a tradeoff between the scale of data and the complexity/interlinking of data. To challenge this understanding, Aurelius has developed Titan under the liberal Apache 2 license. Titan supports both the size of modern data and the modeling power of graphs to usher in the era of Big Graph Data. Novel techniques in edge compression, data layout, and vertex-centric indices that exploit significant orders are used to facilitate the representation and processing of a single atomic graph structure across a multi-machine cluster. To ensure ease of adoption by the graph community, Titan natively implements the TinkerPop 2 Blueprints API. This presentation will review the graph landscape, Titan's techniques for scale by distribution, and a collection of satellite graph technologies to be released by Aurelius in the coming summer months of 2012.
Gremlin is a graph traversal language that connects to various graph databases/frameworks.
* Neo4j [http://neo4j.org]
* OrientDB [http://orientechnologies.com]
* DEX [http://www.sparsity-technologies.com/dex]
* OpenRDF Sail [http://openrdf.org]
* JUNG [http://jung.sourceforge.net]
This lecture addresses the state of Gremlin as of the 0.9 (April 16, 2011).
This tutorial/lecture addresses various aspects of the graph traversal language Gremlin. In particular, the presentation focuses on Gremlin 0.7 and its application to graph analysis and manipulation.
Relational databases are perhaps the most commonly used data management systems. In relational databases, data is modeled as a collection of disparate tables. In order to unify the data within these tables, a join operation is used. This operation is expensive as the amount of data grows. For information retrieval operations that do not make use of extensive joins, relational databases are an excellent tool. However, when an excessive amount of joins are required, the relational database model breaks down. In contrast, graph databases maintain one single data structure---a graph. A graph contains a set of vertices (i.e. nodes, dots) and a set of edges (i.e. links, lines). These elements make direct reference to one another, and as such, there is no notion of a join operation. The direct references between graph elements make the joining of data explicit within the structure of the graph. The benefit of this model is that traversing (i.e. moving between the elements of a graph in an intelligent, direct manner) is very efficient and yields a style of problem-solving called the graph traversal pattern. This session will discuss graph databases, the graph traversal programming pattern, and their use in solving real-world problems.
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Marko Rodriguez
A graph is a data structure that links a set of vertices by a set of edges. Modern graph databases support multi-relational graph structures, where there exist different types of vertices (e.g. people, places, items) and different types of edges (e.g. friend, lives at, purchased). By means of index-free adjacency, graph databases are optimized for graph traversals and are interacted with through a graph traversal engine. A graph traversal is defined as an abstract path whose instance is realized on a graph dataset. Graph databases and traversals can be used for searching, scoring, ranking, and in concert, recommendation. This presentation will explore graph structures, algorithms, traversal algebras, graph-related software suites, and a host of examples demonstrating how to solve real-world problems, in real-time, with graphs. This is a whirlwind tour of the theory and application of graphs.
A Perspective on Graph Theory and Network ScienceMarko Rodriguez
The graph/network domain has been driven by the creativity of numerous individuals from disparate areas of the academic and the commercial sector. Examples of contributing academic disciplines include mathematics, physics, sociology, and computer science. Given the interdisciplinary nature of the domain, it is difficult for any single individual to objectively realize and speak about the space as a whole. Any presentation of the ideas is ultimately biased by the formal training and expertise of the individual. For this reason, I will simply present on the domain from my perspective---from my personal experiences. More specifically, from my perspective biased by cognitive and computer science.
This is an autobiographical lecture on my life (so far) with graphs/networks.
A graph is a structure composed of a set of vertices (i.e.~nodes, dots) connected to one another by a set of edges (i.e.~links, lines). The concept of a graph has been around since the late 19th century, however, only in recent decades has there been a strong resurgence in the development of both graph theories and applications. In applied computing, since the late 1960s, the interlinked table structure of the relational database has been the predominant information storage and retrieval paradigm. With the growth of graph/network-based data and the need to efficiently process such data, new data management systems have been developed. In contrast to the index-intensive, set-theoretic operations of relational databases, graph databases make use of index-free traversals. This presentation will discuss the graph traversal programming pattern and its application to problem-solving with graph databases.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
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.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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.
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!
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.
Mission to Decommission: Importance of Decommissioning Products to Increase E...
The Pathology of Graph Databases
1. The Pathology of Graph Databases
Marko A. Rodriguez
Graph Systems Architect
http://markorodriguez.com
http://twitter.com/twarko
http://tinkerpop.com
TinkerPop
WindyCityDB - Chicago, Illinois – June 25, 2011
2. Abstract
There is nothing more fascinating and utterly mind-
bending than traversing a graph. Those who
succumb to this data processing pattern euphorically
suffer from graph pathology.
This is a case study of the Graph Addict.
Gremlin G = (V, E)
What is presented is as of Gremlin 1.1 (Released July 15, 2011)
3. What you are about to see may disturb you.
It has infected
Neo4j, OrientDB, DEX, RDF Sail, TinkerGraph, and ReXster.
reXster
...it will infect others.
77. 2
created created
1 3
g.v(1).out('created').in('created')
78. 2
created created
1 3
g.v(1).out('created').in('created').except([g.v(1)])
79. 2
created created
1 3 name=stephen
g.v(1).out('created').in('created').except([g.v(1)]).name
80. 2
created created
1 3 name=stephen
g.v(1).out('created').in('created').except([g.v(1)]).name.back(1)
81. 2
created created
1 collaborator 3 name=stephen
g.v(1).out('created').in('created').except([g.v(1)]).name.back(1).
sideEffect{g.addEdge(g.v(1),it,'collaborator')}
82. 2
created created
1 collaborator 3 name=stephen
g.v(1).out('created').in('created').except([g.v(1)]).name.back(1).
sideEffect{g.addEdge(g.v(1),it,'collaborator')}.filter{false}
158. irl."
ag
w like
thro
ou
ks="Y
thin
thinks="No pony!"
thi
n ks
="Y
ou
're
fat
."
thinks="Get a real job."
9
thinks="You suck."
child
1
g.v(1).inE('child').filter{TextAnalysis.isMean(it.thinks)}.outV.loop(3){true}
159. irl."
ag
w like
thro
ou
ks="Y
thin
thinks="No pony!"
thi
n ks
="Y
ou
're
fat
."
thinks="Get a real job."
9
thinks="You suck."
child
1
g.v(1).inE('child').filter{TextAnalysis.isMean(it.thinks)}.outV.loop(3){true}
170. t
name=neo4j 8
imports
5 name=blueprints
imports imports
x imports
2 imports 6 name=pipes
imports
imports
created
7 name=gremlin
1
g.v(1).out('created').as('x')
171. t
name=neo4j 8
imports
5 name=blueprints
imports imports
x imports
2 imports 6 name=pipes
imports
imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports')
172. t
name=neo4j 8
imports
y
5 name=blueprints
imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports').as('y')
173. x y
v[2] v[5]
t v[2] v[6]
v[2] v[7]
name=neo4j 8
imports
y
5 name=blueprints
imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports').as('y').table(t)
174. x y
v[2] v[5]
t v[2] v[6]
v[2] v[7]
name=neo4j 8
imports
y
5 name=blueprints
v[5] imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
t.get(0,1)
175. x y
v[2] v[5]
t v[2] v[6]
v[2] v[7]
name=neo4j 8
imports
y
5 name=blueprints
v[2] imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
t.get(0,'x')
176. x y
v[2] v[5]
t v[2] v[6]
v[2] v[7]
name=neo4j 8
imports
y
5 name=blueprints
v[5]
v[6] imports
v[7]
y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
t.getColumn('y')
177. x y
v[2] v[5]
t v[2] v[6]
v[2] v[7]
name=neo4j 8
imports
y
5 name=blueprints
[x, y] imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
t.getColumnNames()
178. t
name=neo4j 8
imports
5 name=blueprints
imports imports
imports
2 imports 6 name=pipes
imports
imports
created
7 name=gremlin
1
t = new Table()
181. t
name=neo4j 8
imports
5 name=blueprints
imports imports
x imports
2 imports 6 name=pipes
imports
imports
created
7 name=gremlin
1
g.v(1).out('created').as('x')
182. t
name=neo4j 8
imports
5 name=blueprints
imports imports
x imports
2 imports 6 name=pipes
imports
imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports')
183. t
name=neo4j 8
imports
y
5 name=blueprints
imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports').as('y')
184. x y
2 blueprints
t 2 pipes
2 gremlin
name=neo4j 8
imports
y
5 name=blueprints
imports y imports
x imports
2 imports 6 name=pipes
imports y imports
created
7 name=gremlin
1
g.v(1).out('created').as('x').out('imports').as('y').table(t){it.id}{it.name}