New ACM paper, free-tier cloud, and open-source license

TypeDB Lectures

Technical lectures on the foundations and applications of TypeDB & TypeQL

The Polymorphic Data Model With Types

A big challenge in the field of knowledge representation formalisms is the large variety of data that we encounter on a daily basis. For this reason, many different data models, each with their own specific modeling paradigm, have emerged over the past decades. Among the most prominent such data models, one finds, for instance, the relational model, the document model, the triplestore/RDF data model, the graph model, and others.

In practice, real-world needs rarely fit perfectly into a single such model, and instead, data often exhibits characteristics that extend and interpolate between multiple different data models. One way this issue has been previously addressed is by turning to ‘multi-model’ approaches. These, however, require the modeler to carefully ensure interoperability between the models in use.

TypeDB follows a different approach: instead of providing many different modeling paradigms, it provides a single, highly expressive model, that is natively compatible with many of the models listed above. TypeDB’s model is based on a polymorphism-enhanced conceptual approach: which, as in traditional conceptual data models, structures data into three natural categories of ‘entities’ (independent object types), ‘relations’ (dependent object types), and ‘attributes’ (dependent or independent value types), but in addition, provides native facility for expressing inheritance and interface polymorphism of these types.

In this lecture, we will learn how to think in TypeDB’s polymorphic data model. In particular, we will touch on:

  • The key ingredients of the polymorphic entity-relation-attribute model.
  • How other models can be easily translated into TypeDB’s model.
  • How to put polymorphism to efficient use in your everyday life.
Watch now

Fundamental TypeDB lectures

Learn about the fundamental philosophy behind TypeDB and TypeQL.