> --8<---------------cut here---------------end--------------->8---
>
> * Subtree
> :PROPERTIES:
> :DUMMY: Value
> :END:
>
> #+NAME: get-property
> #+BEGIN_SRC emacs-lisp :var prop="prop"
> (car (org-property-values prop))
> #+END_SRC
>
> #+BEGIN_SRC shell :noweb yes
>
> echo <<get-property(prop="DUMMY")>>
>
> #+END_SRC
>
> #+RESULTS:
> : Value
>
> --8<---------------cut here---------------end--------------->8---
>

It seems org-property-values gets the property value for the buffer - it ends up getting the property value from the last subtree in the buffer. I solved this by using either (org-entry-get nil prop) or (car (org-entry-get-multivalued-property nil prop)) instead of (car (org-property-values prop)). 

Thanks again!
-Joon