A Query is a special form of Interaction.
The server (data owner) specifies exactly which Query Parameters (input variables) a client (data requestor) can use to control the data that the data owner agrees to return. The complete specification of what data are available, how the data will be returned, and what variables can be valued or constrained should be provided by the server for both the query and the response. HL7 v3 supports parameterized queries.
A query doesn't affect the business process of the system that's responding to the request, i.e. it doesn't cause any processing to occur on the receiver's end other than responding to the query. The receiver provides a copy of some piece(s) of information while leaving the original record in place, unchanged.
In terms of Receiver Responsibilities, a query interaction mostly has exactly one receiver responsibility: the response interaction. There are some use-cases where a query results in multiple interactions, each one being an interaction out of a predefined set of interaction types. See Query Transmission Pattern for a description of query transmission patterns.
If there is a need for an interaction that affects the business process of the receiving system one should use an Order (with a focal act in RQO Mood) instead.