 (ns hangman.triples
   (:refer-clojure :exclude [])
   (:require [clojure.pprint :as pp])
-  (:require [clojure.string :as str])
   (:require [clojure.core.reducers :as r])
-  (:require [clojure.tools.logging :as log])
   (:require [hangman.util  :as util])
   (:require [clj-uuid :as uuid])
-  (:use     [clj-tuple])
-  (:use     [print.foo]))
-
+  (:use     [clj-tuple]))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SELECT (Context-Aware Query)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defprotocol GraphQuery

    {} triples))


;;;;
;;; The following index implementation creates a set for the innermost
;;; index rather than a map.  It is included for reference and is not
;;; currently in use. 
;;;;

;; (defn make-index [triples key1 key2 key3]
;;   (reduce (fn [i0 triple]
;;             (let [i1 (or (i0 (key1 triple)) {})
;;                   i2 (or (i1 (key2 triple)) #{})]
;;               (assoc i0
;;                 (key1 triple)
;;                 (assoc i1
;;                   (key2 triple)
;;                   (conj i2 (key3 triple))))))
;;     {} triples))


(defn add-index [g key1 key2 key3]
  (->Graph (id g)
    (assoc (indices g)
