- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 10 Jan 2007 19:12:17 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4189
Summary: [FS] technical: 8.1.9 Type expansion correct?
Product: XPath / XQuery / XSLT
Version: Proposed Recommendation
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Formal Semantics
AssignedTo: simeon@us.ibm.com
ReportedBy: hrennau@yahoo.de
QAContact: public-qt-comments@w3.org
Disclaimer: Frankly, I mistrust my own reasoning, because such errors as
reported below should have been detected long since. Should my remark stem from
some general misunderstanding, please help me understand my error. Thank you
very much in advance.
---
The contents of “8.1.9 Type expansion” appear to me not correct.
1.) the rule “statEnv |- of type TypeName expands to Type3” is incorrect (?)
2.) a further rule “statEnv |- of type TypeName expands to Type3” should be
included where “extends” is replaced by “restricts” (?)
3.) in the rule “statEnv |- of type xs:untyped expands to Type1 “extends”
should be replaced by “restricts” (?)
ad 1.)
======
8.2.2.1.3: “expands to yields the union of all the type definitions of all type
names derived from the input type name”.
The judgment #2 of the section (8.1.9)
statEnv |- of type TypeName expands to Type3
yields results which do not match this expectation.
Example 1:
Given:
define type T1 { element a }
define type T2 extends T1 { element b }
Sought: Type3 in
“of type T2 expands to Type3”
I would expect:
Type3 = adjusted-version (element a, element b)
But the judgment yields:
Type3 = adjusted-version (element b)
Result obtained as follows:
TypeName = T2
BaseTypeName = T1
Type1 = element b
“Type2 is Type1 extended with union interpretation of TypeName“
=>
Type2 = element b
Type3 = adjusted-version (element b)
Example 2:
Given:
define type T1 { element a }
define type T2 extends T1 { element b? }
define type T3 restricts T2 { element a }
Sought: Type3 in
“of type T2 expands to Type3”
I would expect:
Type3 = adjusted-version (element a | (element a, element b) )
But the judgment yields:
Type3 = adjusted-version { element b? | element a }
Result obtained as follows:
TypeName = T2
BaseTypeName = T1
Type1 = element b?
“Type2 is Type1 extended with union interpretation of TypeName “
=>
Type2 = element b? | element a
Type3 = adjusted-version ( element b? | element a )
Conclusion from examples 1 and 2:
It is not Type1 what should be extended, but Type1’, where Type1’ is
(content-model-of-BaseTypeName,Type1).
ad 2.)
======
Why is there no rule for the case that TypeName resolves to a type definition
which restricts a base type, rather than extend it? I think the rule should be
exactly like the rule presently rendered, only with “extends” replaced by
“restricts”.
ad 3.)
====
The rule
statEnv |- of type xs:untyped expands to Type1
puzzles me… Should not “extends” be replaced by “restricts”? Compare 3.5.1.,
and remark #2.
Received on Wednesday, 10 January 2007 19:12:27 UTC