A schema management and documentation tool for graph-shaped knowledge sources. Example.
Alzabo defines a a simple schema format for graph databases or other storage formats. It's semantically close to RDF.
Core:
- Defines an .edn schema format, with semantics similar to RDF.
- Tool to generate HTML documentation from Alzabo schemas
- A Clojurescript applet to do autocompletion over Alzabo schemas (appears as part of HTML doc)
Import:
- Tool to convert the CANDEL schema into Alzabo schema
- Tool to convert OpenAPI YAML format into Alzabo schemas
- Tool to convert GraphQL format into Alzabo schema
Export:
- Tool to generate Datomic schemas from Alzabo format
Schema Generation:
- Tool to generate arbitrary domain schemas
See documentation
Originally developed by Mike Travers at the Parker Institute for Cancer Immunotherapy as part of the CANDEL project.
Released under Apache 2.0 License.
To generate documentation, you need graphviz installed. On the Mac, you can do this with
$ brew install graphviz
lein with-profile library, prod install
From a real terminal (not Emacs)
lein deploy clojars
You will need to supply credentials (user name and authentication token).
You can run these commands with lein run <config> <cmd>.
$ lein run <config> documentation
Generates documentation from the given Alzabo schema file.
$ lein run <config> datomic
Generates a Datomic schema from the given Alzabo schema file.
$ lein run <config> server
Opens the generated documentation in browser..
Add dependency `[hyperphor/alzabo ]
(ns ...
(:require [hyperphor.alzabo.schema :as schema]
[hyperphor.alzabo.datomic :as datomic]
[hyperphor.alzabo.html :as html]))
;; read in a schema file
(let [schema (schema/read-schema <schema.edn>)]
;; write out a Datomic schema
(datomic/write-schema schema "datomic-schema.edn")
;; generate documentation
(html/schema->html schema "public/schema" {}))
Alzabo can generate a complete domain ontology for you using an LLM.:
export OPENAI_API_KEY=<your OpenAI key>
lein repl
(full-demo "model rocketry" "rockets") ; or use your favorint doamin
