- From: Gary Hallmark <gary.hallmark@oracle.com>
- Date: Fri, 20 Jul 2007 10:11:11 -0700
- To: Dave Reynolds <der@hplb.hpl.hp.com>
- CC: RIF WG <public-rif-wg@w3.org>
Xpath expressions returns a list of nodes, and nodes can be elements, attributes, and typed literal values. So we'd need at minimum some kind of list in RIF (which we've talked about quite a bit), and I don't know what you do about elements and attributes. Forbid them? Introduce an opaque nodeId? My worry is that a big component of a data model is the relationships among the types/classes. I would expect to be able to reason about those relationships using rules. E.g. find the mothers of twins in a family tree expressed in an xml document. I don't know how to do that if all I can do is pick out typed literal values (leaves) from that xml document using an xpath builtin. Dave Reynolds wrote: > > Gary Hallmark wrote: > >> >> You think adding xpath to RIF is easier than adding generic lists and >> frame types? > > > No. But it may be easier than adding a type/class system for typed > frames that is compatible with both RDFS/OWL classes and XMLSchema > complex types without giving an appearance of duplication. > >> Does xpath have a model theory? > > > No, I don't think so, but it is not a logic language so one wouldn't > expect it to. > >> If it did, would it be compatible with RIF's? > > > Doesn't need to be. The Xpath accessors would simply be builtins > working over an opaque datatype, pure side-effect-free functions, no > worries :-) > > Dave > >> >> Christian de Sainte Marie wrote: >> >>> 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 >>> >>> >> > -- Oracle <http://www.oracle.com> Gary Hallmark | Architect | +1.503.525.8043 Oracle Server Technologies 1211 SW 5th Avenue, Suite 800 Portland, OR 97204
Received on Friday, 20 July 2007 17:20:03 UTC