On 18/03/2013 21:36, Dave Reynolds wrote:
On 18/03/13 21:16, Joshua TAYLOR wrote:
On Mon, Mar 18, 2013 at 4:55 PM, Brian McBride
<[email protected]> wrote:
On 18/03/2013 20:18, Joshua TAYLOR wrote:
Wouldn't the maxCardinality 0 mean that every NewsOrganization isn't
associatedWith *anything*, so there should never be a [newsOrgX
associatedWith foo] to use with [associatedWith domain Person] to
infer [newsOrgX a Person]?
That's true and I've been wondering since my message whether a max
cardinality constraint really does assert that the restriction class
is in
the domain of the property. I'm finding it hard to tell looking at
the Owl
documents.
OK - I was wrong about the ontology being inconsistent. Appologies. :(
However, I think the reasoner is doing that.
I was wrong there too - its more complicated than than. I've attached a
(I think) minimal example based on the presenting ontology which might help.
With the restriction and a
cut down ontology I was seeing classes with owl:Nothing as a super
class.
Eliminating the restriction eliminated the owl:Nothing and produces the
expected answers for the code provided running on the full ontology.
This spurred me to look at some of the relevant rules, and I'm kind of
puzzled by them. E.g., (from owl-fb.rules, line 277):
[maxRec2: (?C owl:equivalentClass max(?P, 0)), (?P rdfs:domain ?D),
(?E owl:disjointWith ?D)
-> (?E owl:equivalentClass ?C)]
That's not quite the situation here however ...
Having been wrong twice already, I'm a bit hesitant here, but I think
this rule does explain what is going on.
Rule restriction4 is:
[restriction4: (?C owl:onProperty ?P), (?C owl:maxCardinality ?X)
-> (?C owl:equivalentClass max(?P, ?X)) ]
so that fires given the minimal example as input with ?C = the anonymous
restriction class (I'll call #anon) and generates
#anon owl:equivalentClass max(#associatedWith, 0)
then maxrec2 fires:
#anon owl:equivalentClass max(#associatedWith, 0)
#associatedWith rdfs:domain #Person .
#Person owl:disjointWith #NewsTopic .
=> #NewsTopic owl:equivalentClass #anon
and maxrec2 fires again
#anon owl:equivalentClass max(#associatedWith, 0)
#associatedWith rdfs:domain #Person .
#Person owl:disjointWith #Event .
=> #Event owl:equivalentClass #anon
And now there is an inconsistency because both #Event and #NewsTopic are
equivalent to #anon and therefore to each other but we also have #Event
and #NewsTopic are disjoint.
Brian
--
Epimorphics Ltd (http://www.epimorphics.com)
Epimorphics Ltd. is a limited company registered in England (number 7016688)
Registered address: Court Lodge, 105 High Street, Portishead, Bristol BS20 6PT,
UK
<!DOCTYPE rdf:RDF [
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<rdf:RDF xmlns="http://blsdev1.vsticorp.com/terrorism#"
xmlns:terror="http://blsdev1.vsticorp.com/terrorism#" xml:base="http://blsdev1.vsticorp.com/terrorism#"
xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<owl:Class rdf:ID="Event">
<owl:disjointWith rdf:resource="#Person" />
</owl:Class>
<owl:Class rdf:ID="NewsOrganization">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#associatedWith" />
<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">0
</owl:maxCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:ID="Killing">
<rdfs:subClassOf rdf:resource="#Event" />
</owl:Class>
<owl:Class rdf:ID="TerrorAttack">
<rdfs:subClassOf rdf:resource="#Killing" />
</owl:Class>
<owl:Class rdf:ID="AircraftHijacking">
<rdfs:subClassOf rdf:resource="#TerrorAttack" />
</owl:Class>
<owl:Class rdf:ID="NewsTopic">
<owl:disjointWith rdf:resource="#Person" />
<owl:disjointWith rdf:resource="#Event" />
</owl:Class>
<owl:ObjectProperty rdf:ID="associatedWith">
<rdfs:domain rdf:resource="#Person" />
</owl:ObjectProperty>
</rdf:RDF>