      #(add-triple! g %)
      '[[toxi author fabric]
        [fabric type project]
-       [toxi type person]])
+       [knows type symmetric-prop]
+       [knows domain person]
+       [author domain person]
+       ;;[noah knows toxi]
+       ])
     ;;(debug :inf-vertices (get-in inf1 [:query :result :id]) (get-in inf1 [:inf :id]))
     {:g        g
      :ctx      ctx

        all (:result (add-query! g :all [nil nil nil]))
        num-projects (add-counter! g projects)
        num-types (add-counter! g types)
        inf1 (add-rule! g :knows [nil 'knows nil] (fn [[s p o]] [[s 'type 'person] [o 'type 'person] [o 'knows s]]))
        pq (:qvar-result (add-param-query! g :pq '[?s knows ?o]))
        jq (:qvar-result (add-join-query! g '[[?p author ?prj] [?prj type project] [?p type person]]))
        ctx (f/async-context {:graph g :processor f/eager-vertex-processor :timeout nil})]


(defn add-join-query!
  [g [a b & more]]
  (if b
    (reduce
     (fn [acc p]
       (add-join! g acc (add-param-query! g (keyword (gensym)) p)))
     (add-join! g
                (add-param-query! g (keyword (gensym)) a)
                (add-param-query! g (keyword (gensym)) b))
     more)
    (add-param-query! g (keyword (gensym)) a)))

(defn collect-inference
  [g production]
