- From: Christian de Sainte Marie <csma@ilog.fr>
- Date: Tue, 17 Jul 2007 15:26:43 +0200
- To: Gary Hallmark <gary.hallmark@oracle.com>
- CC: RIF WG <public-rif-wg@w3.org>
Gary,
Gary Hallmark wrote:
> The statement for this action reads "Show how to use XML Schema for App
> Data Model".
> This begs the question: what is an "App Data Model"? I believe that we
> must define such a thing in RIF, and only then can we define a mapping
> between XML Schema (or relational databases, or OWL, or RDFS, etc.) and
> this RIF Data Model (RDM).
During F2F6, in Innsbruck, there seemed to be broad agreement that RIF
should not invent its own data model/schema language, as Dave and Paul
point out.
The action to "show how to use an XML schema for ADM" was seen as
necessary because it was felt that, although several participants
(including myself) contented that being able to use a data model
specified in an XML Schema (or DTD) was a requirement, nobody seemed to
have a precise idea of what it meant.
As I understand it, there are basically two places where we may need the
reference to an external, or application data model:
1. when specifying the type of a variable beyond the builtin types (and
of a slot if we decide that RIF should allow type checking);
2. when navigating a data source, that is, to specify data accessors.
As regards case 1, I suppose that a QName is all we need (in addition to
the metadata that will tell us what this ruleset requires, e.g. a data
model represented by an XML schema, the URI of that schema etc).
As regards case 2, as I understand it, it is the 'op' property of an
UNITERM that specifies the path to the data to be accessed, where the
'args' give the context.
E.g., suppose that the data model is specified by the XML Schema in [1],
and that there is a rule that says (informally) (taken from the MISMO
POC [2]:
Forall ?R: Root()
If ?R.division="wholesale" and ?R.occupancy="Investors"
Then r.occupancyAdjustment = 0.95d
The RIF XML could be (probably not compliant with Sandro's proposed
rules, but that is not the purpose):
<Ruleset xmlns:mismo="(the URL in [1]">
...
<Rule>
<Forall>
<declare>
<Var>
<name>?R</name>
<type>mismo:root</type>
</Var>
</declare>
<if>
<And>
<Equal>
<side>
(*) Here we would like something like an XPath expr
selecting the "division" element where the value of ?R is the context
</side>
<side>"wholesale"</side>
...
(*) E.g. <Uniterm><op>mismo:division</op><arg>?R</arg></Uniterm>, where
the arg could itself be another uniterm if we needed to navigate deeper;
or a single 'op' could be a complete XPath expression; etc. The slotted
syntax may be more appropriate for that case, btw.
The question is: if there is a standard way, associated to the data
model, to navigate the source - e.g. XPath if the data model is an DTD
or XML Schema,etc -, should that be the syntax for accessors (and thus
the syntax for accessor 'op's or slots may vary depending on the data
model? Or does RIF need to define a RIF "data source navigation
language" that works for, e.g., XML-S, RDF-S OWL, etc?
Christian
[1]
http://anonsvn.labs.jboss.com/labs/jbossrules/contrib/apocrif/jrules/src/test/resources/xsd/mismo.xsd
[2]
http://anonsvn.labs.jboss.com/labs/jbossrules/contrib/apocrif/jrules/src/test/resources/irl/mismo2.irl
Received on Tuesday, 17 July 2007 13:27:10 UTC