W3C home > Mailing lists > Public > public-rif-wg@w3.org > December 2007

Re: RIF XML Syntax and translators

From: Adrian Giurca <giurca@tu-cottbus.de>
Date: Thu, 06 Dec 2007 00:35:31 +0100
Message-ID: <475735C3.8030806@tu-cottbus.de>
To: "David Z. Hirtle" <david.hirtle@gmail.com>
CC: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>

Hi David,
David Z. Hirtle wrote:
> Hi Adrian,
>
>   
>> 1. How was the proposed XML Schema ( see
>> http://www.w3.org/TR/rif-bld/#Specification ) derived from the EBNF for
>> the Presentation Syntax of the RIF-BLD Condition Language
>> http://www.w3.org/TR/rif-bld/#head-10450be66b637feddd430658ce562ef518ca5b05
>> ? There is any normative specification of the mapping from EBNF to XML
>> Schema? or Is the XML Schema normative?
>> Seems that in the Schema appears a number of elements such as <declare>
>> ,  <formula>  and is not clear how they are derived from EBNF
>>     
>
> You may want to look at the following subsections, not only the EBNF one:
>
> 2.1.1.6. XML Syntax
> 2.1.1.7. Translation Between the Presentation and the XML Syntaxes
>
> The latter in particular should make the mapping clear, e.g. showing
> where <declare> and <formula> fit in.
>   
I read them but I don't see why  <formula>, <declare> are necessary. I 
understand the need for  <op> and <object> for example...
However is a pitty  that  the EBNF does not  clarify this in a manner 
similar with OWL abstract syntax. Anyway  we may live also with this 
syntax  if this one is normative. Is it?
>
>   
>> 2. The second question is related with the intended meaning of xs:group
>> which in my opinion is designed to handle collections:
>> For example we have:
>> CONDITION   ::= 'And' ' ( ' CONDITION* ' ) ' |
>>                     'Or' ' ( ' CONDITION* ' ) ' |
>>                     'Exists' Var+ ' ( ' CONDITION ' ) ' |
>>                     ATOMIC
>>
>> which means that And is a CONDITION i.e. any instance of an And is an
>> instance of  CONDITION.
>> If so it might be better to implement as
>>
>>  <xs:element name="CONDITION" abstract="true">
>>   <xs:complexType>
>>    <xs:choice>
>>    <xs:element ref="And"/>
>>    <xs:element ref="Or"/>
>>    <xs:element ref="Exists"/>
>>    <xs:element ref="ATOMIC"/>
>>    </xs:choice>
>>   </xs:complexType>
>>  </xs:element>
>>
>> and then
>>
>>  <xs:element name="And" substitutionGroup="CONDITION">
>>    <xs:complexType>
>>     <xs:sequence>
>>      <xs:element ref="CONDITION" minOccurs="0" maxOccurs="unbounded"/>
>>
>>     </xs:sequence>
>>    </xs:complexType>
>>  </xs:element>
>>
>> etc.
>>
>> In this case roles such as <formula> are not needed.
>>     
>
> I'm not an expert with substitution groups, but they seem to require
> that the substituted-in elements (e.g. And) have the same type as the
> "head" element (in this case, CONDITION), so this probably wouldn't
> work.
>
> http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#SubsGroups
>
>   
You are right. I was in hurry and therefore wrong. Below is the proposed 
design:

    <xs:element name="CONDITION" type="CONDITION.type" abstract="true"/>
    <xs:complexType name="CONDITION.type" abstract="true"/>
    <xs:element name="And" type="And.Type" substitutionGroup="CONDITION"/>
    <xs:complexType name="And.Type">
        <xs:complexContent>
            <xs:extension base="CONDITION.type">
                <xs:sequence>
                    <xs:element ref="CONDITION" minOccurs="0" 
maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="Or" type="Or.Type" substitutionGroup="CONDITION"/>
    <xs:complexType name="Or.Type">
        <xs:complexContent>
            <xs:extension base="CONDITION.type">
                <xs:sequence>
                    <xs:element ref="CONDITION" minOccurs="0" 
maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="ATOMIC" type="ATOMIC.Type" abstract="true" 
substitutionGroup="CONDITION"/>
    <xs:complexType name="ATOMIC.Type" abstract="true">
        <xs:complexContent>
            <xs:extension base="CONDITION.type"/>
        </xs:complexContent>
    </xs:complexType>
....
> In any case, I think using groups is the more tried-and-true method
> for this kind of thing. For example, XHTML uses groups for such
> "content models" (see http://www.w3.org/TR/xhtml-modularization).
>   
I know the document but there is about DTD modularization and it might 
not be the same case for an XMLS.  Following XML Schema recommendation 
the meaning of  xs:group is a container for content. I believe that 
CONDITION is the superclass of And  and that's why I propose the above 
design. Moreover, in this case, supplementary roles such as <formula> 
and <declare> are not necessary.

There are also discrepancies in meaning   such as:
<Frame>
  <object>inst</object>
  <slot>key1 filler1</slot>
   . . .
  <slot>keyn fillern</slot>
</Frame>
Here the content of <object> is the object itself while below the same 
object is content of object/member/lower:
<Frame>
  <object>
    <Member>
      <lower>inst</lower>
      <upper>class</upper>
    </Member>
  </object>
  <slot>key1 filler1</slot>
   . . .
  <slot>keyn fillern</slot>
</Frame>
and later <lower> is used to markup a class (i.e. sub):

<Frame>
  <object>
    <Subclass>
      <lower>sub</lower>
      <upper>super</upper>
    </Subclass>
  </object>
  <slot>key1 filler1</slot>
   . . .
  <slot>keyn fillern</slot>
</Frame>

I guess this come from the goal to avoid attributes. But is usual that 
the same element markup the same content (in case of <upper> for example).
I understand that object/subclass/upper is different from 
object/member/upper but I guess is anyway hard...

Anyway, actually I am interested to know just if the syntax is normative 
otherwise I have to wait


> David
>   
Regards,
Adrian
>
> On Dec 4, 2007 10:14 AM, Adrian Giurca <giurca@tu-cottbus.de> wrote:
>   
>> Dear all,
>> The REWERSE working group I1 has some experience in implementing
>> translators
>> <http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=translators> for
>> interchange. We consider to start building a number of RIF translators
>> but we need help to understand a number of  issues:
>>
>> 1. How was the proposed XML Schema ( see
>> http://www.w3.org/TR/rif-bld/#Specification ) derived from the EBNF for
>> the Presentation Syntax of the RIF-BLD Condition Language
>> http://www.w3.org/TR/rif-bld/#head-10450be66b637feddd430658ce562ef518ca5b05
>> ? There is any normative specification of the mapping from EBNF to XML
>> Schema? or Is the XML Schema normative?
>> Seems that in the Schema appears a number of elements such as <declare>
>> ,  <formula>  and is not clear how they are derived from EBNF
>>
>> 2. The second question is related with the intended meaning of xs:group
>> which in my opinion is designed to handle collections:
>> For example we have:
>> CONDITION   ::= 'And' ' ( ' CONDITION* ' ) ' |
>>                     'Or' ' ( ' CONDITION* ' ) ' |
>>                     'Exists' Var+ ' ( ' CONDITION ' ) ' |
>>                     ATOMIC
>>
>> which means that And is a CONDITION i.e. any instance of an And is an
>> instance of  CONDITION.
>> If so it might be better to implement as
>>
>>  <xs:element name="CONDITION" abstract="true">
>>   <xs:complexType>
>>    <xs:choice>
>>    <xs:element ref="And"/>
>>    <xs:element ref="Or"/>
>>    <xs:element ref="Exists"/>
>>    <xs:element ref="ATOMIC"/>
>>    </xs:choice>
>>   </xs:complexType>
>>  </xs:element>
>>
>> and then
>>
>>  <xs:element name="And" substitutionGroup="CONDITION">
>>    <xs:complexType>
>>     <xs:sequence>
>>      <xs:element ref="CONDITION" minOccurs="0" maxOccurs="unbounded"/>
>>     </xs:sequence>
>>    </xs:complexType>
>>  </xs:element>
>>
>> etc.
>>
>> In this case roles such as <formula> are not needed.
>>
>> -Adrian
>>
>>     
>
Received on Wednesday, 5 December 2007 23:35:58 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:33:44 GMT