Re: Implementing statement grouping, contexts, quads and scopes (was: Re: Out of context, in context, out of subject ????)

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