In my work, over the past year, it has become increasingly clear to me that not only my queries are reused, but prortions of the queries are reused as well. I haven't found any way to call a named subquery from within SPARQL, but in Prolog it is not only possible, but almost expected.
But to be more particular, what I have been needing are whole fragments of consecutive basic graph patterns. So if a query select statement is made up of 30 BGP's, I might need to reuse a consecutive group of 10 of them.
SPARQL, is a great start, historically, but what I'm looking for is a way to create abstraction barriers - just like when I do procedural coding.