

ACTION-349: Use case for membership formulae

From: Dave Reynolds <der@hplb.hpl.hp.com>
Date: Tue, 20 Nov 2007 18:54:50 +0000
Message-ID: <47432D7A.10709@hplb.hpl.hp.com>
To: RIF <public-rif-wg@w3.org>

This note is intended to satisfy ACTION-349.

** Use case

At F2F7 we discussed how XML data models might be accessed from RIF, in 
particular that one could map a class of XML instance data to RIF Frames 

In that proposal the xs:complexType corresponding to an element was 
recorded as part of the frame by use of the rif:instanceOf (#) property. 
  This is needed in cases where the element or element type might be 
open and a rule needs to match on the actual element type.

For example. Consider a purchase order schema in which the item 
description is open (xs:any) to any of some set of known complex types 
(restrict the xs:any to a namespace containing the legal element names 
and associated xs:complexType definitions for known item types). For 
example we might have two item types eg:SoftwareType and eg:HardwareType 
with associated elements eg:software and eg:hardware.

An example instance document might be:

   <eg:Order id="#42">
       <eg:software> .... </eg:software>

   <eg:Order id="#43">
       <eg:hardware> .... </eg:hardware>

Suppose all software is delivered electronically and we want to write a 
rule to check if an order needs a physical shipment it might be 
something like:

"If the order's item is of type hardware then it is a physical shipment"

This would look something like:

    Forall ?item ?order (
       eg:physicalShipment^^rif:iri(?order) :-
       And (
          ?order # eg:OrderType^^rif:iri [ eg:item^^rif:iri -> ?item],
          ?item # eg:HardwareType^^rif:iri

Note that this is a completely artificial example.

** Discussion

1. This use case simply requires there be some known property which 
relates an "object" to the corresponding xs:complexType. It doesn't 
require that that same property be used elsewhere, it could be just part 
of the XML Schema mapping and need not be #/rif:instanceOf. In 
particular there's no reason from this use case to use the same property 
to represent other type relationships such as rdf:type.

2. This use case also depends on how we decide to handle XML mapping. 
The proposal we discussed at F2F7 was based on treating XML data as a 
serialization of some underlying object model and so reused XML/data 
binding approaches. These tend to equate xs:complexTypes with object types.

However, we could take a different approach to XML. For example we could 
map the raw DOM tree to RIF Frames. In that case there wouldn't be any 
distinguished type relationship at all.

On reflection I personally don't regard this as a compelling use case 
for rif:instanceOf (due to point 1). However, as best as I can recall 
this is the sort of thing we were discussing at the time I landed the 


P.S. As a side-note, it would be a good idea for someone more familiar 
with XML Schema data models (and how they are used in commercial rule 
languages) to take over progressing ISSUE-37, though I see that it is 
not critical path.


Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Tuesday, 20 November 2007 18:55:14 GMT
