Skip to content

terminusdb/terminusdb

Repository files navigation

TerminusDB Logo

CI Issues

TerminusDB is a distributed database with a collaboration model.

It is designed to be like git, but for data. If you are reading this, give this repo a star.

The building blocks of the model are -

  • Revision Control: commits for every update
  • Diff: differences between commits can be interpreted as patches between states
  • Push/Pull/Clone: communicate diffs between nodes using push / pull / clone
  • Query: You can query any state of the database at any commit.

TerminusDB allows you to link JSON documents in a knowledge graph through a document API.

TerminusDB Version 11

TerminusDB 11 features a new Rustified storage backend that reduces storage overhead and latency, improves search performance, and simplifies interchange. TerminusDB 11 also comes with some exciting features to make building easier and faster -

  • GraphQL - Use GraphQL as a proper graph query language with deep link discover and path queries
  • Added @unfoldable document flag to frames - Making data curation easier by unfolding subdocuments within a frame to add all relevant data in one place
  • Add @metadata to frames - Include additional metadata to document frames including data formatted as Markdown.

Installation Guide

Get it from the Snap Store

The easiest way to install TerminusDB as a developer is by using the Snap. It does not provide a daemon and is mainly intended for developers that want to try TerminusDB.

For deployments, or if you want to use the local dashboard:

  1. Add the following to a .env file in the source directory:
OPENAI_KEY=YOUR_OPENAI_KEY_HERE
# And optionally specify number of pages for the vector database
# for instance
BUFFER_AMOUNT=120000
  1. docker compose up

You should be able to view TerminusDB running by default at localhost:6363

If you're installing TerminusDB on Windows with Docker, our friends at DFRNT wrote this comprehensive guide.

You can also install TerminusDB from the Source Code.

TerminusDB CLI

A simple example creating a person with friends can be created as follows:

terminusdb db create admin/example1
terminusdb doc insert --graph_type=schema admin/example1 <<EOF
{ "@id" : "Person",
  "@type" : "Class",
  "name" : "xsd:string",
  "occupation" : "xsd:string",
  "friends" : { "@type" : "Set",
                "@class" : "Person" }}
EOF
terminusdb doc insert admin/example1 --message='adding Gavin' <<EOF
{ "@type" : "Person","name" : "Gavin", "occupation" : "Coder"}
EOF

Community

Come visit us on Discord

Documentation

Check out our documentation site for more information: TerminusDB documentation website.

We are working hard to improve our docs - if you see an issue, please open an issue in the documentation repo.

White paper on our delta-encoding approach to data management.

Check the Python Client 🐍. Or the JavaScript Client 🌐.

WOQL is a powerful query language that allows you to express complex patterns over arbitrary data structures concisely. What makes it so expressive and easy to use is the radical simplicity of the core underlying concepts.

Changes in this Version

Release Notes

Copyright

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0