Tag Archives: java

Building a Dating site with Neo4j – Part Four

In the last post, we created a User model, built the login and registration pages, hooked everything up in our front end framework Jooby and got the ball rolling. I’m no designer so I am borrowing a Application Bootstrap Theme and tweaking that as we go along (if you are a designer, pull requests are welcomed). At this stage a ton of it is just mockup, but we will replace it with real functionality. This is what we have so far:
Continue reading

Tagged , , , , , , , ,

Building a Dating site with Neo4j – Part Three

We started our back end service in the last blog post and created a schema and the ability to create and fetch users. We are going to flip to the front end to make use of these abilities and work on both side by side. The goal this time is to be able to register and sign in a user. If you are a regular reader you know I’m a fan of the Jooby framework, so we’re going to use that again. After creating a shell application, what I want to do is to be able to connect to the API we’re building, so we’ll be using Retrofit to turn our HTTP API into a Java interface.
Continue reading

Tagged , , , , , , ,

Building a Dating site with Neo4j – Part Two

We came up with an idea for a dating site and an initial model in Part One. Next we are going to work on a back end HTTP API, because I’m old school and that’s the way I like it. We will build our HTTP API right into Neo4j using an extension which turns Neo4j from a Server into a Service. Unlike last time where we wrote a clone of Twitter, I don’t really know where I’m going with this, so let’s start with some of the obvious API endpoints and then we can design and build more as we go along. Is this Agile or am I just being an idiot? I can’t tell, so onward we go.
Continue reading

Tagged , , , , , , , ,

Transmuting Documents into Graphs

Alchemy is a philosophical and protoscientific tradition practiced throughout Europe, Africa and Asia. Its aim is to purify, mature, and perfect certain objects. In popular culture we often see the case of shadowy figures trying to turn lead into gold to make themselves immensely rich or to ruin the world economy. In our case we will not be transmuting lead into gold, but documents into graphs which is just as good. In the past, we had used “Alchemy API” but they were purchased by IBM and retired. You can get similar functionality with IBM Watson, but let’s do something else instead. Let’s add Entity Extraction right into Neo4j.
Continue reading

Tagged , , , , , , ,

Replicants

In the movie Blade Runner, “replicants” are engineered biological copies of humans. They are implanted with memories that aren’t real (to them anyway, they are sometimes the recorded memories of other people) in order to provide a sort of replacement to their emotions. The replicants are meant to work in outer space and are illegal on earth. The ones that manage to get to earth are hunted down by Deckard and other blade runners. In order to determine who is a replicant and who is a “real person” blade runners use a “Voight-Kampff” test that measures respiration, heart rate, blushing and eye movement in response to emotionally provocative questions. Today we are going to turn Neo4j into a blade runner and use it to find and retire replicated identities in our data.
Continue reading

Tagged , , , , , , ,

Dynamic Rule Based Decision Trees in Neo4j – Part 2

A couple of weeks ago I showed you how to build a dynamic rule based decision tree in Neo4j. It was pretty simple and used an Expression Evaluator to determine if a set of parameters in an expression was true or false. Based on that answer it decided where to go.

But what if we had more than just true or false? What if we wanted to make our Rule nodes have more than 2 options? Today I am going to show you how to do just that… but please make sure you have read part 1 already.

Continue reading

Tagged , , , , , , , ,

Neptune and Uranus

Last year Microsoft announced “Cosmos DB”, a multi-modal database with graph support. I think multi-modal databases are like swiss army knifes, they can do everything, just not very well. I imagine you would design it to be as good as it can be at its main use case while not losing the ability to do other things. So it’s neither fully optimized for its main thing, nor very good at the other things. Maybe you can do pretty well with two things by making a few compromises, but if you try to do everything…it’s just not going to work out.

Can you imagine John Rambo stalking his enemies with an oversized swiss army knife? Here, let me help with the mental image:
Continue reading

Tagged , , , , , , , ,

Dynamic Rule Based Decision Trees in Neo4j

A few posts ago I showed you how to build a Boolean Logic Rules Engine in Neo4j. What I like about it is that we’ve pre-calculated all our potential paths, so it’s just a matter of matching up our facts to the paths to get to the rule and we’re done. But today I am going to show you a different approach where we are going to have to calculate what is true as we go along a decision tree to see which answer we get to.

Yes, it will be a bit slower than the first approach, but we avoid pre-calculation. It also makes things a bit more dynamic, as we can change the decision tree variables on the fly. The idea is to merge code and data into one, to gain the benefit of agility.

Continue reading

Tagged , , , , , , , , , , ,

Adding gRPC to Neo4j

You are probably sick of me saying it, but one of the things I love about Neo4j is that you can customize it any way you want. Extensions, stored procedures, plugins, custom indexes, custom apis, etc. If you want to do it, then you can do it with Neo4j.

So the other day I was like what about this gRPC thing? Many companies standardize their backend using RESTful APIs, others are trying out GraphQL, and some are using gRPC. Neo4j doesn’t support gRPC out of the box, partially because we have our own custom binary protocol “Bolt”, but we can add a rudimentary version of gRPC support quite easily.
Continue reading

Tagged , , , , , , , ,

Stored Procedure to Import Data

A while back I showed you how to write an extension to import the MaxMind city data set. Today is just a repeat of that exercise but instead of using an extension, we will use a stored procedure.

The documentation spells out how to write your own procedures in Chapter 6 so I’m not going to go over that again, but I do want to point out a few things.
Continue reading

Tagged , , , , , , , , ,