90 likes | 202 Views
This document explores the formal semantics of XQuery 1.0 and XPath 2.0, highlighting the contrasting opinions of famous computer scientists on its readability and utility. It delves into the importance of formal semantics for static analysis, including static typing and soundness theorems, which ensure the correctness of type inference. The text discusses the need for a solid foundation in language design to support future evolutions and addresses comprehensive lessons learned from the formal specification process, emphasizing its strategic advantages for developers and researchers.
E N D
Adventures in Formal Methods at W3C:The XQuery 1.0 and XPath 2.0 Formal Semantics Jerome Simeon, IBM
A Formal Semantics is Controversial • Famous computer scientist #1: << The XQuery Formal Semantics is unreadable, and you should just use english. >> • Famous computer scientist #2: << I couldn’t understand how XQuery works until I read its formal semantics >>
A Formal Semantics is Useful • XQuery 1.0 requirements: A language and an algebra • Relational algebra was a success: simple core design, basis for optimization, countless research advances over 30 years of history • Support for Static Analysis over XQuery 1.0: • Static Typing Feature calculate type of expressions at compile time • Soundness theorem: every XML data processed by an expression will have the type infered (or a subtype) • Deeper understanding of XQuery 1.0 semantics (translation effect): • Numerous bugs in english specification found (notably related to types) • Exposes unnecessary complexity and opportunities for consolidation • Build the language on solid foundations to facilitate future evolutions
XQuery 1.0 and XPath 2.0 Formal Semantics • Formalization using inference rules notations • Notations developed for specifying programming languages
XQuery Processing Model • Formalized & normative: • Normalization of expressions into a smaller “core” grammar (SQ5) • Static typing (SQ6) • Formalized & non-normative: • Dynamic evalution (DQ1) • Formalized & informative: • Schema import (SI1)
Formal Specification: One Example • Read: • To statically type a variable reference (e.g., $foo:x) • Resolve the foo:x name to it expanded name (e.g., {http://example.com}:x) • Lookup the type (Type) bound for that expanded name in the static environment (statEnv) • if the rule cannot be applied (e.g., variable not in the environment), the inference fails and an error is raised.
Lessons Learned • A formal specification is a large investment: • 500+ pages for XQuery 1.0 and XPath 2.0 • Benefits must be clearly understood and resources are needed • Important to know what not to formalize: • In XQuery: Namespace resolution, validate expression (see XML Schema)… • Audience is not everyone: • Reader must invest in understanding the notations • Useful for the working group, for developers, for academics… • Not so useful for most end-users • Benefits are numerous, during the specification, and after: • E.g., fuels growing research activities around XQuery