On this tutorial, I’ll present you the right way to handle a taxonomy in EDG and publish it to a Neo4j occasion, the place it may be populated with extra knowledge to energy a advice engine. The taxonomy, which is constructed and maintained in TopQuadrant’s EDG, defines the construction. A set of (faux) educational journal articles serves because the occasion knowledge that populates Neo4j. I’ll use a small hierarchy of STEM classes because the taxonomy to arrange the articles. This knowledge is roofed beneath the Inventive Commons CC0 1.0 Common Public Area Dedication.
Word 1: Full disclosure — I work at TopQuadrant, the corporate that makes EDG, so I’m naturally biased towards the instruments I do know properly. Each Neo4j and TopQuadrant’s EDG are business merchandise and never open supply. They every provide free trial variations appropriate for following together with this tutorial: Neo4j gives one free cloud database occasion (with limits on knowledge quantity, reminiscence, and CPU), and TopQuadrant presents a 90-day free trial of EDG Desktop. Additionally, whereas the structure outlined right here has its advantages, it’s not the one strategy, and these aren’t the one distributors able to supporting such a workflow. The professionals and cons of this strategy are listed under.
Word 2: Right here is a video recording of what this demo appears like.
Word 3: All pictures on this publish are created by creator.

What’s the purpose of all of this? The purpose is that loads of that means lives within the taxonomy itself. Every article is tagged with essentially the most particular class that applies, however as a result of the taxonomy encodes mum or dad–youngster relationships, we are able to infer higher-level associations robotically. For instance, if an article is tagged with Mathematical Software program, it’s additionally about Laptop Science and STEM, even when it isn’t explicitly tagged that method. The taxonomy doesn’t simply classify, it permits reasoning over how matters relate, so the information supply solely must document essentially the most related tag, and the hierarchy fills in the remaining.
We’re separating the occasion stage data on what a person article is about from the meta details about the matters themselves and the way they relate to one another.
The explanations you’d need to construct with this sort of structure are:
- Inferencing: Tag with one idea however use the taxonomy to affiliate many different ideas to the content material. As a substitute of tagging an article with Mathematical Software program and Laptop Science, I can simply tag it with Mathematical Software program. The taxonomy is aware of that Mathematical Software program is a department of Laptop Science. The mum or dad idea, Laptop Science, could be inferred primarily based on the taxonomy.
- Aligning a number of methods: I can use one taxonomy to construct a advice engine in Neo4j and a GraphRAG utility in GraphDB. One workforce can use vector-based tagging on content material saved in SharePoint whereas one other makes use of NLP rule-based tagging on content material saved in Adobe Expertise Supervisor (AEM). All of those apps are aligned as a result of they’re all utilizing the identical reference knowledge.
- Change administration: If I need to recategorize Mathematical Software program as a department of Arithmetic relatively than a department of Laptop Science, I simply want to vary its mum or dad within the taxonomy. If I don’t have a separate taxonomy, I’d have to retag each doc tagged with Mathematical Software program. If I’ve a number of downstream apps utilizing the identical record of phrases, this turns into a nightmare. I’d have to retag each entity tagged with Mathematical Software program in each utility and guarantee all the opposite tags related to that doc are appropriate.
- Play to instruments’ strengths: EDG is nice and managing metadata and taxonomies and guaranteeing these issues are aligned and ruled properly. Neo4j and different graph databases are nice at high-performance graph analytics at scale however battle with the metadata administration aspect of issues. With this arrange, we are able to get the very best of each worlds
There are different architectural approaches to constructing one thing like this, after all, and there are drawbacks to the strategy I define right here. A number of the predominant ones embody:
- Overkill for easy use instances: This tutorial makes use of a easy demo, however the structure makes essentially the most sense when your knowledge and use instances are complicated. Most graph databases, together with Neo4j, allow you to outline a schema or primary ontology and signify taxonomies with hierarchical relationships. In case your knowledge is comparatively easy, your taxonomy is simple, or just one workforce wants to make use of it, you could not want this many instruments.
- Skillset and studying curve: Utilizing EDG and Neo4j collectively assumes familiarity with two totally different paradigms: ontology modeling in RDF/SHACL and graph querying in property graphs/Cypher. Many groups are snug with one however not the opposite.
- Extra transferring components: Holding a taxonomy separate from the information you might be tagging means it’s essential to be sure that the tags align with the taxonomy. In the event that they drift, the graph stops becoming collectively cleanly within the database.
- Vendor lock-in: Each Neo4j and EDG are business merchandise so there may be all the time going to be some lock-in and potential migration prices. The requirements underlying EDG (RDF, SHACL, and SPARQL), are open supply requirements from the W3C, which does mitigate general technical lock-in.
Neo4j is a labeled property graph (LPG). EDG is a data graph curation device primarily based in RDF and SHACL. LPGs and RDF are two totally different graph applied sciences that, traditionally, haven’t been suitable. EDG has just lately constructed a Neo4j integration function, nonetheless, which permits customers to construct utilizing each applied sciences.
Under is a visible illustration of how these two applied sciences can work collectively.

At the backside in pink, you have knowledge storage. I’ve this cut up into inner knowledge and exterior knowledge. Inside knowledge is the uncooked knowledge you may be storing in an information lake, a content material administration system (CMS) like SharePoint, or a relational database. There may be exterior datasets you need to combine into your app. These could possibly be public, free knowledge sources like WikiData, higher stage ontologies like gist, or proprietary reference datasets like SNOMED or MedDRA (medical taxonomies).
EDG can then act because the semantic layer between the underlying knowledge and downstream apps. You possibly can handle your ontologies, taxonomies, reference knowledge, and metadata in a single place and push what it’s essential to purposes like Neo4j as wanted. You too can load knowledge immediately out of your underlying knowledge sources into Neo4j or every other utility.
Step 1: Get free variations of EDG and Neo4j
First, we’re going to have to get free variations of those merchandise to mess around with.
For EDG, you’ll have to go to this web site and request a free trial. You’ll get a hyperlink to obtain EDG together with a license in an e mail. After the obtain completes, there may be an executable file within the edg folder, additionally known as edg. Double click on that and it ought to begin operating in your browser. In case you don’t have Java put in, it can immediate you to put in Java first.

EDG will then open in your browser in a brand new tab known as one thing like http://localhost:8083/. However it can say it isn’t registered. Click on on Product Registration after which add the license file that was additionally despatched within the e mail. Then click on “Register Product”.

After importing the license, you may return to the house display by clicking the TopQuadrant emblem within the prime left nook. Now you must be capable of see the principle EDG touchdown web page.

Now we’d like a free model of Neo4j. Go to this hyperlink to get began along with your free trial. In case you don’t have an account already, you will have to make one. After you create a Neo4j account you’ll land on a display like this:

Click on “Create occasion” after which choose the free choice.

If you click on “Create occasion” you’ll be proven your username and password. The username is normally simply “Neo4j” however the password is exclusive, so write it down someplace.
Step 2: Arrange integration
In EDG, within the prime proper nook, click on on the consumer icon (it appears like an individual). Then click on “Server Administration”. It will take you to a display with a bunch of choices. Click on “Product Configuration Parameters”. On the left toolbar you will note a bunch of integration choices. Click on “Neo4j”.

You possibly can configure this to push to a number of Neo4j databases, however for this tutorial we’ll simply level to the Neo4j occasion we simply created. On the correct aspect of the empty Neo4j database line there’s a plus signal. Click on that and you’ll be prompted to enter the Neo4j credentials.

You possibly can identify this configuration something however I selected “neo4jtest1”. The ID must be autofilled by EDG. For the Neo4j database URL, you will have to examine the Neo4j occasion you created in Neo4j. It would look one thing like this: neo4j+s://cd227570.databases.neo4j.io.
Click on “Create and Choose”. Now you will have to enter your password. That is the one which Neo4j gave you whenever you created your Neo4j occasion.

Now we’re all configured.
Step 3: Import taxonomy
Go to my GitHub and obtain this taxonomy. It is a record of STEM matters in a hierarchy i.e. a taxonomy.
Click on “New +” on the prime of the display in EDG then “Import asset collections from TriG or Zip file”. Select the zip file you bought from my GitHub and cargo it into EDG. Click on End. If you go to the taxonomy you must see a hierarchical record of a bunch of various STEM classes.

Step 4: Push taxonomy to Neo4j
Click on the cloud dropdown to handle integrations. Within the dropdown menu you will note the choice to “Hyperlink to Neo4j Database”.

If you click on this it is possible for you to to decide on which Neo4j integration you need to use. Click on the one you created in step 2 above.

After you choose the Neo4j integration, the mixing between this taxonomy and your Neo4j occasion might be created. It would seem like the popup under. Click on the mixing to navigate to it. In my instance under it’s known as “Integration with Neo4j database neo4jtest1”. Then click on “Okay”.

The mixing will now seem within the editor and we are able to change any settings if we wish. You’ll discover subsequent to the cloud dropdown there’s a icon for pushing to built-in methods that appears like a cloud with an arrow on it.

Click on edit after which scroll right down to “included courses”. That is the place we specify which courses in our taxonomy we need to push to this Neo4j occasion. For this tutorial, choose “Idea”. This could embody all the things within the taxonomy. This may occasionally appear pointless, however it is necessary for giant taxonomies with many sorts of courses.

Additionally choose “all the time overwrite” to be “True”. This ensures that once we push, we overwrite no matter is within the Neo4j occasion.

Now click on “Save Adjustments”.
Again within the editor interface, click on the cloud push icon that’s within the prime toolbar now that now we have established a Neo4j integration. A popup ought to seem that appears just like the picture under. If now we have a number of integrations configured with a number of totally different purposes, we’d see all of them right here. For this tutorial, you must simply see the one you made and it must be robotically chosen. Now click on “Okay”.

You must see a progress bar of your ideas getting pushed to Neo4j.

Step 5: Discover knowledge in Neo4j
Now return to your Neo4j Aura occasion. In case you click on Cases on the left toolbar you will note the occasion we created in Step 1. Now you will note that there are Nodes and Relationships in it!

You possibly can click on “Join” after which “Discover” which is able to take you to a visible illustration of your graph.

Under is the visible explorer of Neo4j Aura. You possibly can simply search on the generic time period “Useful resource – BROADER – Useful resource” to see the entire ideas we pushed from EDG together with their mum or dad ideas.

Step 6: Add articles to Neo4j
Obtain an inventory of journal articles from my GitHub right here. It is a quick record of pretend educational journal articles. The concept right here is that we wish the taxonomy to return from EDG however the article metadata to return from someplace else.
Now in Neo4j, click on “Import” on the left toolbar and “New knowledge supply”. A listing of choices will seem. You can import your occasion knowledge from anyplace, however for this tutorial we’ll simply add the csv file immediately. The supply of information doesn’t matter, what issues is that the occasion knowledge is tagged with phrases that come from the taxonomy that we’re managing in EDG. That’s how we are able to align the article metadata with our taxonomy and broader semantic layer.

Add the csv you downloaded from my GitHub. You’ll then be requested the way you need to outline your mannequin. Choose “Generate from schema”.

You’ll see Articles.csv pop up as a node. Click on the node. You’ll have to specify which property you need to use as the first key. There’s a property on this record of articles known as “id” which we’ll use as the first key. To set this as the important thing, click on the important thing icon within the backside proper for the “id” row. Then choose “Run Import”.

You’ll be prompted to enter the password for this occasion, which is the one you wrote down at the start. It would take a second to run however then you’ll get this popup of Import outcomes.

You possibly can see that 15 nodes have been created. The csv file contained 15 articles and every of them turned a node. Now we are able to return to the Discover function and seek for “Articles.csv”. You’ll see Articles present up within the visible in pink alongside the STEM classes in inexperienced. That is nice however they aren’t but linked. To attach the occasion knowledge (articles) to the classes, we have to run a cypher question.

Step 7: Join occasion knowledge with taxonomy
Click on Question within the left toolbar. Within the question field enter:
// 1) Match each imported article node that has a topicUri
MATCH (a:`Articles.csv`)
WHERE a.topicUri IS NOT NULL
// 2) Discover the corresponding Idea by its uri property
MATCH (c:Idea {uri: a.topicUri})
// 3) Create the TAGGED_WITH relationship (idempotent)
MERGE (a)-[:TAGGED_WITH]->(c)
// 4) Return a sanity verify
RETURN rely(*) AS totalTaggedRelationships;
It ought to seem like this:

Then press “Run”. You’ll see proper beneath that question one thing that can say “Created 15 relationships”. That’s a superb signal. Now return to the Explorer. Now seek for “Articles.csv – TAGGED_WITH – Useful resource”. You’ll see that every one of these pink nodes are actually linked to our inexperienced taxonomy!

Step 8: Construct a advice engine
We’re going to run some very primary similarity queries to exhibit the way you’d use the graph we simply constructed for suggestions. First, let’s have a look at an article and which class it’s tagged with. Enter this cypher question into question interface. It will record the classes that the article “Advances in Mathematical Software program Research #7” was tagged with.
MATCH (a:`Articles.csv` {title: 'Advances in Mathematical Software program Research #7'})
MATCH (a)-[:TAGGED_WITH]->(c:Idea)
RETURN a.title AS article, c.prefLabel AS tag, c.uri AS uri
ORDER BY tag;
You must see the next output and the class “Mathematical Software program”.

Suppose we need to discover articles much like this web page turner as a result of we need to suggest them to potential readers. We are able to search for different articles which can be additionally tagged with Mathematical Software program, however we are able to additionally make the most of taxonomical construction now we have in our graph. Mathematical Software program is a subclass of Laptop Science, based on the STEM taxonomy. You possibly can return to EDG to discover the classes and their youngsters. For our advice engine, to seek out articles much like our Mathematical Software program article, we need to discover different articles which can be tagged with Mathematical Software program, however ALSO articles tagged with different branches of laptop science.
We are able to try this with the next cypher question:
// 0) Seed article by its actual label
MATCH (me:`Articles.csv` {title: 'Advances in Mathematical Software program Research #7'})
// 1) get every tagged matter plus its mum or dad
MATCH (me)-[:TAGGED_WITH]->(youngster:Idea)-[:BROADER]->(mum or dad:Idea)
// 2) discover every other article tagged with a sibling beneath that very same mum or dad
MATCH (siblingChild:Idea)-[:BROADER]->(mum or dad)<-[:BROADER]-(youngster)
MATCH (rec:`Articles.csv`)-[:TAGGED_WITH]->(siblingChild)
WHERE rec <> me
// 3) compute advice rating
WITH rec, rely(DISTINCT mum or dad) AS rating
// 4) now pull in all of the direct tags on every really helpful article
OPTIONAL MATCH (rec)-[:TAGGED_WITH]->(t:Idea)
// 5) return title, rating, and full tag record
RETURN
rec.title AS advice,
rating AS sharedParentCount,
gather(DISTINCT t.prefLabel) AS allTaggedTopics
ORDER BY rating DESC, advice
LIMIT 5;
You must get the next outcomes:

There aren’t any different articles tagged with Mathematical Software program, however there are articles tagged with different branches of laptop science. “Advances in Computer systems and Society Research” is an article tagged with the class “Computer systems and Society”. That is really helpful as a result of the graph is aware of that each Computer systems and Society and Mathematical Software program are branches of Laptop Science.
Step 9: Adjusting our taxonomy
I discussed earlier that one cause you’d need to separate your taxonomy out of your graph database is so you can also make adjustments to your taxonomy and simply see the downstream results in your apps. Let’s strive that.
Suppose we need to recategorize Mathematical Software program as a department of Arithmetic relatively than a department of Laptop Science. To do that in our taxonomy, we simply drag and drop the time period within the tree construction in EDG.

Now push the taxonomy again into Neo4j utilizing the identical cloud button.

Now once we return to Neo4j and run the advice algorithm once more, the outcomes are completely totally different. It’s because our unique article was tagged with Mathematical Software program, which we’ve now categorized as a department of Arithmetic. The opposite articles which can be really helpful to us are different articles about math, not laptop science.

Conclusion
This easy demo reveals how a taxonomy can convey construction, flexibility, and intelligence to your knowledge purposes. By separating your taxonomy (in EDG) out of your occasion metadata (in Neo4j), you achieve the flexibility to deduce relationships, align methods, and evolve your mannequin over time, with out having to retag or rebuild downstream apps. The result’s a modular structure that makes your graph smarter as your understanding of the area grows.
In regards to the creator: Steve Hedden is the Head of Product Administration at TopQuadrant, the place he leads the technique for EDG, a platform for data graph and metadata administration. His work focuses on bridging enterprise knowledge governance and AI by ontologies, taxonomies, and semantic applied sciences. Steve writes and speaks often about data graphs, and the evolving function of semantics in AI methods.
















