Question: What are semantics of %Q and %{} in Ruby? What is difference between them?

Answer: 
No, there is no functional difference. Some might argue that %Q{} is a little clearer, but both are interpolated strings (just like using double quotes).
There are in effect the same. Both follow double-quoted string semantics