Hi Jack,
I just answered a similar question on the Neo4j mailing list and put my answer on StackOverflow. See:
Repeated here in your terms:
TU.out('knows').out('owns').in('owns').filter{it == TU}.back(2)
Here is what the expression says:
1. Start at vertex TU.
2. Find TU's friends.
3. Find what TU's friends own.
4. Find who else owns those same items.
5. Filter out those people who are not TU.
6. Go back 2 steps to the items that are co-owned with TU.
HTH,
Marko.