Re: Issues with classification a#b, a##b

Dave Reynolds wrote:

>>> Take a concrete example:
>>>
>>>     :Dave rdf:type :Person .
>>>     :Dave foaf:name  "Dave" .
>>>     :Person rdfs:subClassOf :Animal .
>>>
>>> In Jos's translation this would correspond to RIF Frames:
>>>
>>>     :Dave [rdf:type -> :Person, foaf:name -> "Dave"] /\
>>>                           :Person[rdfs:subClassOf :Animal]
>>>
>>>    ?p # ?t :- ?p[rdf:type -> ?t] .
>>>    ?p ## ?t :- ?p[rdfs:subClassOf -> ?t] .
>>>
> In this case the mappings to # and ## seems to buy us little.

In a way I agree, but only because I would like static declarations such as

FrameType Person##Animal [ name -> xsd:string ]

I'm not sure I can use the rules above because I need to extract the 
'business data model" from the RIF document before I can translate the 
rules.  All this occurs at translation time, which is before the rules 
are executed.

> We risk ending up with a nest of incompatible mappings. Gary, for 
> example, would likely implement #/## by mapping to Java classes

yes

> and would then be unable to translate rules like the above

the problem seems to be that without static declarations I need to run 
the rules in order to translate the data model that I need in order to 
translate the rules...

> and would be unable to work with RDF data. Not a problem for him right 
> now but given Oracle's investment in RDF and OWL it might be a problem 
> in the future. Yet there is no difficulty in using Oracle's rule 
> engine to process RDF data if it weren't for this seemingly artificial 
> requirement to map different class hierarchy concepts to the same #/## 
> machinery.

I have to disagree.  RDF poses great difficulty because of the 
difficulty in extracting a static declaration like the one above.  Our 
UI tools require a data model so that rules can be phrased in structured 
English like

IF *Person.name* = "Dave"
THEN ...

Items marked with *stars* are pick lists in the UI that are driven off 
the data model.
Without a static data model, I'd have to have something generic like

IF  *Frame.property1* =  "rdf:type" and *Frame.value1* = ":Person" and 
*Frame.property2* = "foaf:name" and *Frame.value2* = "Dave"
THEN

This latter mess is unsuitable for a business user (or for me, for that 
matter). 

IMHO, the lack of an explicit static data model for RDF makes it hard to 
build UI tools, and without good UI tools you aren't going to get far in 
the business software marketplace.


-- 


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 Wednesday, 25 July 2007 22:20:57 UTC