Rule-based approach to conclude owl:intersectionOf

Here is an example of the situation...

# only 5 facts in total
<#X> rdf:type <#A> .
<#Y> rdf:type <#A> , <#B> .
<#Z> rdf:type <#A> , <#C> .

=>

# conclusion of the 5 facts
<#X> rdfs:subClassOf <#Y> , <#Z> .

=>

# further conclusion of the 5 facts
<#X> owl:intersectionOf ( <#Y> <#Z> ) .

I want to express this kind of inference in N3 Rules, but it is not possible (or say it is out of my capability). Then I consider the quantification of Notation 3. It is, however, too confusing to use it as rules. Even it is not specified in the syntax. I want something like..

{ ?I rdf:type ?X , ?Y } => { ?X rdfs:subClassOf ?Y . } .
{ ?X rdfs:subClassOf ?Y . } => { ?X owl:intersectionOf ( ?Y ) . } .

The above 2 rules are not correct, because they miss some quantifications. I know that there are directives @forAll and @forSome. They are universal quantification and existential quantification respectively. However, I don't know how to use them. Maybe I am looking for something that I am not sure..

{ @forAll ?X . @forSome ?Y . ?I rdf:type ?X , ?Y } => { ?X rdfs:subClassOf ?Y . } .
{ @forAll ?X . @forSome ?Y . ?X rdfs:subClassOf ?Y . } => { ?X owl:intersectionOf ( ?Y ) . } .

The above 2 rules attempt to explain the idea, they may not be correct. I think that such kind of quantification facility can make rule-based inference more powerful on reasoning a collection of ontologies and axioms and facts.


Jeremy

Received on Tuesday, 5 April 2005 11:00:01 UTC