Hi, On Fri, 2011-08-19 at 01:42 -0700, sourajit basak wrote: > Thanks Dave. > > I think I have run into the reasoner OWA principles which have been > perpetually confusing to me.
You are not alone. The OWA principles are important but they are a different way of thinking about data and many find them confusing at first. > According to the specs, > The owl:allValuesFrom restriction requires that for every instance of > the class that has instances of the specified property, the > values of the property are all members of the class indicated by the > owl:allValuesFrom clause. > > > Which means if I add a min cardinality, it means that PotentialCustomers have > one proposedScheme pointing to individuals from 'Scheme'. Is this correct ? Yes. It doesn't let you infer a PotentialCustomer but it does mean that anything explicitly typed as a PtentialCustomer logically has at least one proposedScheme pointing to a Scheme. > > <owl:Class rdf:about="&v1;PotentialCustomer"> > <rdfs:subClassOf rdf:resource="&v1;Customer"/> > <rdfs:subClassOf> > <owl:Restriction> > <owl:onProperty rdf:resource="&v1;proposedScheme"/> > <owl:minCardinality > rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> > </owl:Restriction> > </rdfs:subClassOf> > <rdfs:subClassOf> > <owl:Restriction> > <owl:onProperty rdf:resource="&v1;proposedScheme"/> > <owl:allValuesFrom rdf:resource="&v1;Scheme"/> > </owl:Restriction> > </rdfs:subClassOf> > </owl:Class> > > Lets assume there is no reasoner and I explicitly created a typed > PotentialCustomer and try to add a 'proposedScheme' value a) which isn't an > instance of Scheme and b) not add the 'proposedScheme' at all. > > > Will Jena throw a validation error ? No. Firstly there is no runtime validation like this at all in Jena. To validate a model you call a reasoner and ask it to validate, so with no reasoner no errors like that are detected. As a piece of RDF it is fine either way. For (b) that wouldn't even be an error for a reasoner - OWA again. Your minCardinality means that there is logically at least one proposedScheme value. Just because your instance doesn't have one yet just means to don't a complete view of the data so there is no inconsistency. A closed world checker would find that issue but not a general reasoner. Dave
