We explore the reasons why.

Invalid Object-Role Model. Image by author.

The invalid Object-Role Model (ORM) above contains an Objectified Fact Type with two Link Fact Types. It is ambiguous as to which link fact type relates to the first role of the Parenthood objectified fact type and is an invalid Object-Role Model given that there are two link fact types off the Parenting and Person object types with both having the same Fact Type Readings.

If you were to assume that the rightmost link fact type relates to the the rightmost role of the Parenthood objectified fact type and the leftmost link fact type relates to the left hand role…


Knowledge Graph Business Language Sub-Queries Made Easy

Photo by Myke Simon on Unsplash. Royaly free image.

My business is called FactEngine, which is an initiative to radically change the way people think of databases and knowledge graph query languages.

Imagine that you wanted to book a seat at a cinema that uses a database to track those bookings. If you wanted to find that seat you should just be able to ask:


Bioinformatics and rules-based knowledge representation

Object-Role Model with Transitive Ring Constraint and Derived Fact Type/Rule. Image by author.

The picture above shows a transitive relationship expressed within an Object-Role Model (ORM), and rules expressed within a derived fact type.

Transitive Relationships

In some data science exercises, transitive relationships are required. Transitive relationships in Object-Role Modeling are expressed by the symbol below:


Where hypergraph/relational databases definitely have the edge

Three views of the same model. Entity Relationship, Graph and Object-Role Modeling. Image by author.

I was doing some research into how dedicated graph databases handle uniqueness constraints over relations/edges and was surprised by what I found…

Let us say we had a dedicated graph database with Person nodes and Car nodes and with a schema where Persons drive Car is a type of relation.
How do you limit a Person node to ‘driving’ one Car node in that schema’s graph database?


Putting value on relationships.

A Property Graph Schema. Image by author.

I have been working with databases as graph databases for a little while now and have looked seriously at the directed graph concept of graphs. My view is that directed graphs are a rather primitive way of looking at graphs.

The image above is a Property Graph Schema for a simple order management database. Orders are placed by People and each order contains Items in a certain Quantity. Order, Person and Item are nodes/vertices in a graph of graph theory joined by edges/relationships. Directed Graphs are graphs where each edge/relationship has a direction, as below:


SQLite like you have never seen it before

Recursive Graph Query over a Relational Database. Image by author.

FactEngine (www.factengine.ai) is an initiative to radically change the way people look at databases. The essence of the initiative is to reveal how all databases can be viewed as multi-model databases (graph or relational). As the first of its kind it is hard to talk of the science without referencing the initiative. But let’s get to the science…

Dedicated Graph databases are somewhat famous now for working under/over a property graph schema, which looks like the following:


Boston and FactEngine can now be used as a database

Version 5.5 of the Boston Object-Role Modeling conceptual modelling tool marks the first time a database can be created, modified and queried over using Object-Role Modeling and a hypergraph query language.

Object-Role Modeling (ORM) was first formalised as a conceptual modelling language for database analysis and design in 1989 as output of Terry Halpin’s doctoral thesis. Originally called Niam (Natural-language Information Analysis Method), ORM was viewed as a separate from but necessary for the manifestation of a well structured database. When Halpin moved to Microsoft to work with their database teams in the 1990s, there was a glimmer of hope…


Why hypergraph databases have the edge

An Implied Ternary Relationship in a Property Graph Schema. Image by author.

Dedicated graph databases that operate over directed graphs handle ternary or greater (n-ary) relationships quite poorly even though n-ary relationships manifest in many serious data modelling exercises. Take the diagram above for example, where each Stocked Item represents a Part in a Bin in a Warehouse. The ternary relationship is implied by a series of three binary relationships (as directed graphs) as in Stocked Item is for Part.

To help visualise the scenario, picture a warehouse that stocks items (parts) that a storeman has to pack and pick from, as below:


An implementation of Four-Layer Metamodel Architecture

A State Transition Diagram. Image by author.

State Transition Diagrams capture the states of a Value Type and the events (as transitions) that cause the values of a Value Type to change from one state to another.

If you’ve been following my articles for a while now you will have seen Object-Role Models morphing to Entity Relationship Diagrams (ERDs) and Property Graph Schemas (PGSs) (as below). This is all very interesting and reaffirms that if you have an Object-Role Model (ORM) you automatically have an ER diagram or a PGS.


You already have a Knowledge Graph

Knowledge Representation Layer Architecture. Image by author.

The FactEngine initiative (www.factengine.ai) is designed to radically rethink the notion of a database and give you the tools to work with the technology you already have to build your knowledge graph…because you already have one.

The architecture is one of ranging a knowledge representation model over your existing database, no matter what that database is. In this manner you get to keep your existing database and work with a model representing a knowledge graph as if you had migrated to one purpose built. …

Victor Morgante

Founder, FactEngine. Architect, data scientist and independent researcher

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store