Superceded by https://github.com/kraison/vivace-graph-v3 Open source Common Lisp graph database / RDF store / Prolog implementation. Supersedes http://github.com/kraison/vivace-graph.
Common Lisp
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
contrib/kraison
LICENSE
README Add license, update TODO and README May 6, 2012
TODO Add license, update TODO and README May 6, 2012
certainty-factors.lisp Add montezuma for full text search Mar 17, 2012
conditions.lisp still working on transactions Jan 28, 2011
constants.lisp add string compression to serializer Feb 11, 2011
data-types.lisp housekeeping + add triple-eql, triple-equal and triple-equalp methods Sep 4, 2011
deserialize.lisp Add montezuma for full text search Mar 17, 2012
full-text-index.lisp Add montezuma for full text search Mar 17, 2012
functor.lisp misc bug fixes and exports Dec 20, 2010
gettimeofday.lisp first commit of exisitng repo Nov 8, 2010
globals.lisp add string compression to serializer Feb 11, 2011
hash-table.lisp read/write locking code. not complete, just an end of day check-in. Jan 20, 2011
index.lisp Add montezuma for full text search Mar 17, 2012
lock.lisp Add montezuma for full text search Mar 17, 2012
montezuma.lisp Add montezuma for full text search Mar 17, 2012
namespaces.lisp first commit of exisitng repo Nov 8, 2010
prolog-functors.lisp Add montezuma for full text search Mar 17, 2012
prologc.lisp Add montezuma for full text search Mar 17, 2012
rw.lisp first commit of exisitng repo Nov 8, 2010
sb-impl.lisp read/write locking code. not complete, just an end of day check-in. Jan 20, 2011
sb-thread.lisp read/write locking code. not complete, just an end of day check-in. Jan 20, 2011
serialize.lisp adjust logging; add keyword for number of locks May 7, 2012
store.lisp adjust logging; add keyword for number of locks May 7, 2012
templates.lisp Add montezuma for full text search Mar 17, 2012
test-scenarios.lisp
transaction.lisp adjust logging; add keyword for number of locks May 7, 2012
triples.lisp Add montezuma for full text search Mar 17, 2012
utilities.lisp Add montezuma for full text search Mar 17, 2012
uuid.lisp Add montezuma for full text search Mar 17, 2012
vg-test.lisp misc concurrency fixes Mar 1, 2011
vivace-graph-v2-package.lisp adjust logging; add keyword for number of locks May 7, 2012
vivace-graph-v2-test-package.lisp fix nasty bug in lookup-triple. add beginnings of test suite. Mar 1, 2011
vivace-graph-v2-test.asd fix nasty bug in lookup-triple. add beginnings of test suite. Mar 1, 2011
vivace-graph-v2-test.lisp misc concurrency fixes Mar 1, 2011
vivace-graph-v2.asd Add montezuma for full text search Mar 17, 2012

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 transaction logging and replay.
I am also working on a native SBCL memory mapped persistence
library that will give me some variation on linear hash tables.

The code checked-in as of 2012/05/06 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
Montezuma


To get you started:
(asdf:oos 'asdf:load-op '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")
  (add-triple "Joe" "likes" "programming lisp")
  (add-triple "Kevin" "likes" "programming lisp")
  (add-triple "Kevin" "likes" "programming perl")
  (add-triple "Kevin" "likes" "programming c"))

(select (?x ?y) (q- ?x "likes" ?y))

(get-triples-list :search-string "programming")

(get-triples-list :s "Kevin")
(get-triples-list :p "is-a")
(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*)