diff options
Diffstat (limited to 'src/clojure/contrib/datalog.clj')
-rw-r--r-- | src/clojure/contrib/datalog.clj | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/clojure/contrib/datalog.clj b/src/clojure/contrib/datalog.clj deleted file mode 100644 index 93e132de..00000000 --- a/src/clojure/contrib/datalog.clj +++ /dev/null @@ -1,64 +0,0 @@ -;; Copyright (c) Jeffrey Straszheim. All rights reserved. The use and -;; distribution terms for this software are covered by the Eclipse Public -;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can -;; be found in the file epl-v10.html at the root of this distribution. By -;; using this software in any fashion, you are agreeing to be bound by the -;; terms of this license. You must not remove this notice, or any other, -;; from this software. -;; -;; datalog.clj -;; -;; A Clojure implementation of Datalog -;; -;; straszheimjeffrey (gmail) -;; Created 2 March 2009 - - -;;; Please see the example.clj file in the datalog folder - - -(ns - #^{:author "Jeffrey Straszheim", - :doc "A Clojure implementation of Datalog"} - clojure.contrib.datalog - (:use clojure.contrib.datalog.rules - clojure.contrib.datalog.softstrat - clojure.contrib.datalog.database) - (:use [clojure.set :only (intersection)] - [clojure.contrib.except :only (throwf)])) - -(defstruct work-plan - :work-plan ; The underlying structure - :rules ; The original rules - :query ; The original query - :work-plan-type) ; The type of plan - -(defn- validate-work-plan - "Ensure any top level semantics are not violated" - [work-plan database] - (let [common-relations (-> work-plan :rules (intersection (-> database keys set)))] - (when (-> common-relations - empty? - not) - (throwf "The rules and database define the same relation(s): %s" common-relations)))) - ; More will follow - -(defn build-work-plan - "Given a list of rules and a query, build a work plan that can be - used to execute the query." - [rules query] - (struct-map work-plan - :work-plan (build-soft-strat-work-plan rules query) - :rules rules - :query query - :work-plan-type ::soft-stratified)) - -(defn run-work-plan - "Given a work plan, a database, and some query bindings, run the - work plan and return the results." - [work-plan database query-bindings] - (validate-work-plan work-plan database) - (evaluate-soft-work-set (:work-plan work-plan) database query-bindings)) - - -;; End of file |