Typedb

TypeDB: the polymorphic database powered by types
Alternatives To Typedb
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Typedb3,5736511 hours ago24December 13, 2018186agpl-3.0Java
TypeDB: the polymorphic database powered by types
Casibase1,152
10 hours ago107October 28, 20238apache-2.0JavaScript
⚡️Open-source LangChain-like AI knowledge database with web UI,and Enterprise SSO⚡️, supports OpenAI, Azure, HuggingFace, OpenRouter, ChatGLM and local models, chat demo: https://ai.casbin.com, admin portal demo: https://ai.casibase.com
Tech Refrigerator502
3 years ago1apache-2.0
🍰 기술 냉장고입니다. 🛒 기술 면접 , 전공 시험 , 지식 함양 등 분명 도움될 거예요! 🤟
Topic Db243114 months ago15November 02, 20228mitPython
TopicDB is a topic maps-based semantic graph store (using SQLite for persistence)
Harika108
a year ago8agpl-3.0TypeScript
Offline-, mobile-first graph note-taking app focused on performance with the knowledgebase of any scale
Cypher.js49
2 months ago1gpl-3.0JavaScript
Cypher graph database for Javascript
Go Graphkb25
a year ago84December 05, 202215apache-2.0Go
A Graph-oriented Knowledge Base written in Go
Modelpolisher23
a year ago15mitJava
ModelPolisher accesses the BiGG Models knowledgebase to annotate SBML models.
Syn Bot Samples21
3 years ago1C#
Sample projects for Syn Bot Framework showcasing applications in different scenarios and platforms
Knowledgebase12
3 years agoPython
This repository intends to provide a knowledgebase for interviews. Good luck all. ❤️
Alternatives To Typedb
Select To Compare


Alternative Project Comparisons
Readme

TypeDB

Factory CircleCI GitHub release Discord Discussion Forum Stack Overflow Stack Overflow

Introducing TypeDB

TypeDB is a polymorphic database with a conceptual data model, a strong subtyping system, a symbolic reasoning engine, and a beautiful and elegant type-theoretic language TypeQL.

Polymorphic databases

Why TypeDB was built

Data frequently exhibits polymorphic features in the form of inheritance hierarchies and interface dependencies. TypeDB was crafted to solve the inability of current database paradigms to natively express these polymorphic features.

Providing full support for polymorphism

In order to fully support polymorphism, a database needs to implement three key components:

The TypeDB database

The schema

TypeDB schemas are based on a modern type system that natively supports inheritance and interfaces, and follows a conceptual data modeling approach, in which user-defined types subtype (based on their function) three root types: entitiesrelations, and attributes.

  • Entities are independent objects,
  • Relations depend on their role interfaces played by either entities or relations,
  • Attributes are properties with a value that can be owned by entities or relations.

Interface and inheritance for these types can be combined in many ways, resulting in highly expressive ways of modeling data.

define

full-name sub attribute, value string;
id sub attribute, value string;
email sub id;
employee-id sub id;

user sub entity,
    owns full-name,
    owns email @unique,
    plays mentorship:trainee;
employee sub user,
    owns employee-id @key,
    plays mentorship:mentor;

mentorship sub relation,
    relates mentor,
    relates trainee;

The query language

The query language of TypeDB is TypeQL. The syntax of TypeQL is fully variablizable and provides native support for polymorphic queries. The language is based on fully declarative and composable patterns, mirroring the structure of natural language.

match $user isa user,
    has full-name $name,
    has email $email;
# This returns all users of any type

match $user isa employee,
    has full-name $name,
    has email $email,
    has employee-id $id;
# This returns only users who are employees

match $user-type sub user;
$user isa $user-type,
    has full-name $name,
    has email $email;
# This returns all users and their type

The inference engine

Any query in TypeDB is semantically validated by TypeDB’s inference engine for consistency with the database schema. This prevents invalid schema updates and data inserts before they can affect the integrity of the database.

TypeDB can also work with data that is not physically stored in the database, but instead logically inferred based on user-specified rules. This enables developers to cleanly separate their source data from their application logic, often allowing for complex systems to be described by combinations of simple rules.

define
rule transitive-team-membership:
    when {
        (team: $team-1, member: $team-2) isa team-membership;
        (team: $team-2, member: $member) isa team-membership;
    } then {
        (team: $team-1, member: $member) isa team-membership;
    };

insert
$john isa user, has email "[email protected]";
$eng isa team, has name "Engineering ";
$cloud isa team, has name "Cloud";
(team: $eng, member: $cloud) isa team-membership;
(team: $cloud, member: $john) isa team-membership;

match
$john isa user, has email "[email protected]";
(team: $team, member: $john) isa team-membership;
# This will return both Cloud and Engineering for $team due to the defined rule

Effective database engineering

TypeDB breaks down the patchwork of existing database paradigms into three fundamental ingredients: types, inheritance, and interfaces. This provides a unified way of working with data across all database applications, that directly impacts development:

Installation and editions

TypeDB editions

  • TypeDB Cloud — multi-cloud DBaaS
  • TypeDB Enterprise — Enterprise edition of TypeDB
  • TypeDB Core — Open-source edition of TypeDB ← This repository

For a comparison of all three editions, see the Deploy page on our website.

Download and run TypeDB Core

You can download TypeDB from the GitHub Releases.

Check our Installation guide to get started.

Compiling TypeDB Core from source

Note: You DO NOT NEED to compile TypeDB from the source if you just want to use TypeDB. See the "Download and Run TypeDB Core" section above.

  1. Make sure you have the following dependencies installed on your machine:

  2. You can build TypeDB with either one of the following commands, depending on the targeted architecture and Operation system:

    $ bazel build //:assemble-linux-x86_64-targz
    $ bazel build //:assemble-linux-arm64-targz
    $ bazel build //:assemble-mac-x86_64-zip
    $ bazel build //:assemble-mac-arm64-zip
    $ bazel build //:assemble-windows-x86_64-zip
    

    Outputs to: bazel-bin/.

  3. If you're on a Mac and would like to run any bazel test commands, you will need to install:

    • snappy: brew install snappy
    • jemalloc: brew install jemalloc

Resources

Developer resources

Useful links

If you want to begin your journey with TypeDB, you can explore the following resources:

Contributions

TypeDB and TypeQL are built using various open-source frameworks and technologies throughout its evolution. Today TypeDB and TypeQL use Speedb, pest, SCIP, Bazel, gRPC, ZeroMQ, and Caffeine.

Thank you!

In the past, TypeDB was enabled by various open-source products and communities that we are hugely thankful to: RocksDB, ANTLR, Apache Cassandra, Apache Hadoop, Apache Spark, Apache TinkerPop, and JanusGraph.

Licensing

This software is developed by Vaticle.
It's released under the GNU Affero GENERAL PUBLIC LICENSE version 3 (AGPL v.3.0). For license information, please see LICENSE.

Vaticle also provides a commercial license for TypeDB Enterprise - get in touch with our team at [email protected].

Copyright (C) 2023 Vaticle.

Popular Database Projects
Popular Knowledge Base Projects
Popular Data Storage Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Database
Knowledge Base
Polymorphism