Update...
as @TomJack writes, Datomic supports an alternate map-based syntax which will make your query easier.
(let [attributes [:name :height :weight :age]
valnames (map #(symbol (str "?" (name %))) attributes)
x-terms (map #(vector '?x %1 %2) attributes valnames)
query {:find valnames
:where (cons ['?x :id '?id] x-terms)}]
(q query (db conn)))