Coder Social home page Coder Social logo

jukowski / terminusdb Goto Github PK

View Code? Open in Web Editor NEW

This project forked from terminusdb/terminusdb

0.0 0.0 0.0 8.67 MB

TerminusDB is a distributed database with a collaboration model

Home Page: https://terminusdb.com

License: Apache License 2.0

Shell 0.06% JavaScript 7.23% Python 0.06% Prolog 89.13% Rust 3.31% Makefile 0.06% HTML 0.02% Smarty 0.08% Dockerfile 0.06%

terminusdb's Introduction

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 is available as a standalone server, or you can use online.

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, you can install as a Docker Container. This uses TerminusDB Bootstrap, our Docker wrapper script that makes it easy to set up the container.

Get this repo, cd to it

git clone https://github.com/terminusdb/terminusdb-bootstrap
cd terminusdb-bootstrap

Run the container by using the script (the first time)

./terminusdb-container run

Unable to find image 'terminusdb/terminusdb-server:latest' locally
latest: Pulling from terminusdb/terminusdb-server
8f91359f1fff: Pulling fs layer
939634dec138: Pulling fs layer
f30474226dd6: Pulling fs layer
32a63113e3ae: Pulling fs layer
ae35de9092ce: Pulling fs layer
023c02983955: Pulling fs layer
d9fa4a1acf93: Pulling fs layer
[ ... ]

To stop, attach, etc, see usage

./terminusdb-container

USAGE:
  terminusdb-container [COMMAND]

  help        show usage
  run         run container
  cli         use the terminusdb cli
  stop        stop container
  attach      attach to prolog shell
  exec        execute a command inside the container
  rm          remove volumes

More information in the docs, or in the TerminusDB Bootstrap repository.

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

You can attach this to a database on TerminusX in order to distribute it by setting your remote. First you will need to create a resource from TerminusX. This is analogous to creating a repository on GitHub.

Log into TerminusX, create a new data product, and make sure you have an access token to the team in which we created that data product. Then copy the URL to clone from the data product info page.

If you make a data product called example in the team Terminators. We could then issue the following command using the TerminusDB CLI. You should get an API token from your profile page and replace 'XYZ' with this token.

terminusdb remote add admin/example1 origin 'https://cloud-dev.terminusdb.com/Terminators/example' --token='XYZ'
terminusdb fetch admin/example1 --token='XYZ'
terminusdb push admin/example1 --token='XYZ'

Once completed, you'll have a remote copy of this database.

More on the CLI here

Community

Come visit us on Discord or our forum. On Twitter, we're @TerminusDB.

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 mangement.

Check the Python Client ๐Ÿ. Or the JavaScript Client ๐ŸŒ.

WOQL is a powerful query language which allows you to concisely express complex patterns over arbitrary data structures. 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

terminusdb's People

Contributors

anniepoo avatar cjuko avatar danipmax avatar dependabot[bot] avatar dmytri avatar drkameleon avatar dwinston avatar fms12 avatar francesca-bit avatar gavinmendelgleason avatar gneissone avatar kevinchekovfeeney avatar kittyjose avatar luke-feeney avatar matko avatar oj423 avatar padraic7a avatar pmoura avatar pwin avatar rrooij avatar spl avatar tfidfwastaken avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.