Everything is a Node in FactEngine, bar Edges

In defense of graphs within graphs — and/or hypergraphs

Victor Morgante
4 min readFeb 3, 2023

For those of you familiar with FactEngine Query Language (FEQL), you may have noticed that every piece of data is considered as if it were a node in a graph database. Take the following FEQL query for instance:

The FEQL query is asking to show a list of employees that are based in the country, UK, from the underlying database.

But do we know whether ‘Country’ is a table in a relational database, or a node type in a graph database or a column in a relational database or a property in a graph database?

We don’t, and for the large part we do not really care, other than that it pays to be aware of the underlying data model in the database, unless we query some sort of vector database or neural database devoid of an underlying schema.

I.e. FactEngine Query Language is, in some respects, schema/database agnostic, until such time that a query must be written in the underlying database query language (SQL, Cypher, TypeQL, other).

The realities are though, that unless working with a vector or neural database over unstructured data it pays to be aware of the underlying schema.

Let us take the Northwind database from Microsoft. Here is the property graph schema for Northwind:

--

--