Search This Blog

Friday, December 21, 2007

FIQL: The Feed Item Query Language

An initial public draft of "FIQL: The Feed Item Query Language" has
been released. The Feed Item Query Language (FIQL, pronounced "fickle")
is a simple but flexible, URI-friendly syntax for expressing filters
across the entries in a syndicated feed. For example, a query
"title==foo*;(updated=lt=-P1D,title==*bar)" would return all entries
in a feed that meet the following criteria; (1) have a title beginning
with "foo", AND (2) have been updated in the last day OR have a title
ending with "bar". The specification defines an extensible syntax for
FIQL queries, explains their use in HTTP, and defines feed extensions
for discovering and describing query interfaces. On the Atom list,
the author responded to a question "Why not XPath or XQuery or SPARQL
(with an Atom/RDF mapping), or CSS selectors or some subset of one of
those?" In a nutshell, there are two reasons; [i] Those query languages
are optimised for data models that aren't feeds; respectively, XML
Infosets, Infosets again, RDF graphs and CSS cascades. While it's
possible to contort them to fit feeds, they don't really lend themselves
to it. XQuery and SPARQL also present a fairly high barrier to adoption
(if you're not a big XML vendor or a SW-head, respectively ;) Contorting
them so that they're easy to fit into a URL isn't too attractive,
either. [ii] When you expose a query interface, you're allowing people
to consume compute power on your servers. An arbitrary query language
allows arbitrary queries, which is unacceptable when you're working
across administrative domains. FIQL gives you tools to constrain how
queries are shaped. I've been asked this many times, and should probably
add it as a FAQ in an appendix. Certainly there are use cases for using
XQuery, etc. against feeds, but it's also become apparent that there's
a place for something simple, reasonably flexible, and Web-friendly. More Information See also Atom references: Click Here

No comments: