Preserves: An Expressive Data Language