I am looking for a way within any of the common chess packages to search for a specific maneuver, such as a rook capturing a protected. bishop. I've heard of CQL, but have never used it. I am curious if it supports something like this.

1 Answer 1


Chess Query Language does do this very well. The following short .cql file works like a charm to find all games in input.pgn in which one side is up an exchange (while allowing a difference in the number of pawns for each side) for 4 straight moves (picked so as to rule out, say, situations in which an equal sequence of trades happens to begin with a rook taking a minor piece, or other such temporary pseudo-sacrifices).

    :pgn input.pgn
    :output output.pgn
        (position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
        (position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
        (position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
        (position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)

Standard point values for pieces are used, so the :powerdifference [Rr] -5 -5 condition means that Black has one more rook than White, while :powerdifference [BbNn] 3 3 guarantees that White has exactly one more minor piece than Black. The :flipcolor at the end does the same search with the roles reversed. By default, CQL inserts a "MATCH" comment in the games of the resulting output.pgn at the positions that warrant their inclusion, so you can quickly locate the exchange sacs.

  • awesome, sounds like kind of thing I was looking for CQL-wise. Do you use CQL implementation from rbnn.com/cql ?
    – Joe
    Dec 31, 2012 at 6:27
  • @Joe, yes, that's the one I used.
    – ETD
    Dec 31, 2012 at 11:51
  • 2
    Great answer, I didn't know such a thing existed.
    – Tony Ennis
    Dec 31, 2012 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.