Every observation is a string, but from a technical point of view observations can be represented by more complex structures as long as their data type is totally ordered, which is the only assumption about the form of observations made on the level of the CCRFs implementation.
this method is also rather flexible and could be used with respect to a language with other tagset structure than the positional one.