Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Open source Common Lisp graph database / RDF store / Prolog implementation. Supersedes http://github.com/kraison/vivace-graph.
Common Lisp
Pull request Compare This branch is 114 commits ahead, 3 commits behind kraison:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
contrib/kraison
.gitignore
README
TODO
btree-test.lisp
btree.lisp
certainty-factors.lisp
concurrency-bridge.lisp
conditions.lisp
constants.lisp
data-types.lisp
deserialize.lisp
full-text-index.lisp
functor.lisp
gettimeofday.lisp
globals.lisp
hash-table.lisp
index-ht.lisp
index.lisp
lock.lisp
namespaces.lisp
printv.lisp
prolog-functors.lisp
prologc.lisp
rw.lisp
sb-impl.lisp
sb-thread.lisp
serialize.lisp
store.lisp
table.lisp
templates.lisp
test-aux.lisp
test-scenarios.lisp
transaction.lisp
triples.lisp
utilities.lisp
uuid-bridge.lisp
uuid.lisp
vg-test.lisp
vivace-graph-v2-doc-utils.lisp
vivace-graph-v2-docs.lisp
vivace-graph-v2-package.lisp
vivace-graph-v2-test-package.lisp
vivace-graph-v2-test.asd
vivace-graph-v2-test.lisp
vivace-graph-v2.asd

README

A free competitor to Franz's AllegroGraph by Kevin Raison.

At the moment, this code is in a state of rapid flux.  Please don't expect
it to behave consistently from one check-in to another.

The goal is to build a fast, robust, distributed graph database with optional
RDF semantics built-in.  The primary query language is Prolog (based on PAIP),
but I have plans to add Javascript and maybe Sparql at a later date.  
At the moment, persistence is achieved via a call to (dump-triples);  this is going
to change very soon.  I am working on a native SBCL memory mapped persistence
library that will give me some variation on btrees and hashes.  When this is
complete, triples wil be persistent by default.

The code checked-in as of 2010/11/08 works fairly well, but should be
considered alpha quality.  In order to get it working, you will need the
following:

SBCL 1.0.42 or higher: http://www.sbcl.org/platform-table.html
cl-skip-list: http://www.cliki.net/cl-skip-list
bordeaux-threads: http://common-lisp.net/project/bordeaux-threads/
hunchentoot: http://weitz.de/hunchentoot/
cl-json: http://common-lisp.net/project/cl-json/
uuid: http://www.dardoria.net/software/uuid.html
ieee-floats: http://common-lisp.net/project/ieee-floats/
parse-number: http://www.cliki.net/PARSE-NUMBER
cffi: http://common-lisp.net/project/cffi/
local-time: http://common-lisp.net/project/local-time/
date-calc: http://common-lisp.net/project/cl-date-calc/
py-configparser: http://common-lisp.net/project/py-configparser/
js: http://github.com/akapav/js
split-sequence: http://www.cliki.net/SPLIT-SEQUENCE

To get you started:
(push #P"/path/to/vivace-graph-v2/" asdf:*central-registry*)
(quicklisp:quickload 'vivace-graph-v2)
(in-package #:vivace-graph-v2)

(create-triple-store :name "test store" :location "/var/tmp/db")
;;(index-predicate "likes")
(with-graph-transaction (*store*)
  (add-triple "Kevin" "is-a" "human")
  (add-triple "Joe" "is-a" "human")
  (add-triple "Fido" "is-a" "dog")
  (add-triple "Kevin" "likes" "Fido")
  (add-triple "Kevin" "likes" "Joe"))
(select (?x ?y) (q- ?x "likes" ?y))
;; Range query;  this stuff may be broken at this stage.  
;; i will focus on it again very soon
;;(select-flat (?object) (q- "Kevin" "likes" (?object "a" "z")))
;;
(get-triples-list :s "Kevin")
(get-triples-list :p "is-a")
(get-triples-list :p "likes")
(get-triples-list :o "human")

(close-triple-store :store *store*)

(open-triple-store :name "test store" :location "/var/tmp/db")
(index-predicate "likes")
(select (?x ?y) (q- ?x "likes" ?y))
(select-flat (?object) (q- "Kevin" "likes" (?object "a" "z")))
(get-triples-list :s "Kevin")
(get-triples-list :p "is-a")
(close-triple-store :store *store*)


Something went wrong with that request. Please try again.