- From: Alberto Reggiori <areggiori@webweaving.org>
- Date: Mon, 24 Jun 2002 11:44:34 +0200
- To: Patrick Stickler <patrick.stickler@nokia.com>
- CC: RDF Interest <www-rdf-interest@w3.org>, RDF Logic <www-rdf-logic@w3.org>
Patrick Stickler wrote:
> Note also that unasserted "dark" statements at the RDF-level can be
> asserted at any given higher level where they have meaning in a automated
> and generic fashion.
>
> OWL level assertions can be easily automated using this approach
> by a single rule:
>
> {
> ?x rdf:type rdf:Statement .
> ?x rdf:subject ?s .
> ?x rdf:predicate ?p .
> ?x rdf:object ?o .
> ?p rdf:type owl:OWLPredicate .
> }
> log:implies
> {
> ?s ?p ?o .
> }
>
> Done.
which you can even try to express in XML/RDF syntax as:
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!ENTITY owl "http://www.w3.org/2001/sw/WebOnt/">
<!ENTITY ex "http://example.org/">
<!ENTITY log "http://www.w3.org/2000/10/swap/log#">
]>
<rdf:RDF
xmlns:rdf='&rdf;'
xmlns:owl='&owl;'
xmlns:log='&log;'
xmlns:ex='&ex;'>
<rdf:Statement rdf:ID="&ex;st"
rdf:bagID="context1">
<rdf:subject rdf:resource="&ex;s" />
<rdf:predicate rdf:resource="&ex;p" />
<rdf:object rdf:resource="&ex;o" />
</rdf:Statement>
<owl:OWLPredicate rdf:about="&ex;p" rdf:bagID="#context1"/>
<rdf:Description rdf:about="&ex;s"
rdf:bagID="context2">
<ex:p rdf:resource="&ex;o" />
</rdf:Description>
<rdf:Description rdf:about="#context1">
<log:imples rdf:resource="#context2"/>
</rdf:Description>
</rdf:RDF>
> This, of course, presumes that all OWL predicates are typed
> as owl:OWLPredicate, but that's pretty cheap.
One problem of the above syntax I can see is that the RDF parsing rules forces to
reify statements as soon as rdf:bagID is used, which results in a kind of
"explosion" in triples generation; on the other side the above syntax barely uses
the original XML/RDF specification to insert some kind of contexts "for free" and
can be easily queried with existing RDF query languages :-)
IMO what's needed instead is the possibility to make some parsing rules optionals
i.e. optional reification; the syntax could be in principle left un-touched. Of
course, all this "optionals" can be somehow coded the application self by
triggering some retract() triple methods on useless triples i.e. do not change
existing software ;-)
cheers
Alberto
Received on Monday, 24 June 2002 05:38:03 UTC