   "null sem-impl: simply return input."
   (log/trace (str "null-sem-impl:" (strip-refs input)))
   input)
-  
+
+(defn get-encyc [input k]
+  (get encyc {k (get-in input [k])} {}))
+
 (defn sem-impl [input & [original-input]]
   "expand input feature structures with semantic (really cultural) implicatures, e.g., if human, then not buyable or edible"
   (let [original-input (if original-input original-input


(def encyc
  {
   {:pred :house} {:artifact true
                   :buyable true
                   :place true}

   {:animate true} {:living true}

   {:human true} {:animate true}


    (cond
      (= input :top) input
      true
      (let [activity (get-encyc input :activity)
            animate  (get-encyc input :animate)
            artifact (get-encyc input :artifact)
            buyable  (get-encyc input :buyable)
            city     (get-encyc input :city)

            clothing (if (= (get-in input '(:clothing))
                            true)
