Ah, this is a different thread, so I created a new one. This is
rather unusual, and I'm not clear on why you'd want to do this. The
normal suggestion is to add the restriction in Composer. That's
really easy and most flexible, as the ontology designer has control of
what "inverse restrictions" should be applied (this seems to be a real
outlier case).
However, it seems what you really want is to state is that when a
classification is found for :hasPart, the inverse should appear
for :isPartOf. If that's the case, declaring {:isPartOf
owl:inverseOf :hasPart} will do what you need. I'm assuming in this
case that you want to end state to be:
?auto a :Auto .
?wheel a :Wheel .
?auto :hasPart ?wheel .
?wheel :isPartOf ?auto .
If that's not the kind of inference you're looking for, then some more
detail on what your goals are would be useful for understanding what
you are asking.
-- Scott
On 7/15/11 3:46 PM, Leonard Jacuzzo wrote:
> Hi Scott,
> cls-svf1 is not what I am after.
>
> Compare
> # cls-svf1
> CONSTRUCT {
> ?u a ?x .
> }
> WHERE {
> ?x owl:someValuesFrom ?y .
> ?x owl:onProperty ?p .
> ?u ?p ?v .
> ?v a ?y .
> }
> To what I wrote:
>
> > CONSTRUCT {?this rdfs:subClassOf ?restriction .
> > ?restriction rdf:type owl:Restriction .
> > ?restriction owl:onProperty :isPartOf .
> > ?restriction owl:someValuesFrom ?Var . }
> >
> > WHERE {
> >
> > ?var rdfs:subClassOf ?restriction1 .
> > ?restriction1 rdf:type owl:Restriction .
> > ?restriction1 owl:onProperty :hasPart .
> > ?restriction1 owl:someValuesFrom ?this .
> > }
> What I want to do is to create a restriction on one property from a
> restriction on another. In this case I started with 'haspart' being
> restricted to WHEEL and end up with isPart being restricted to auto. Where
> Wheel is a subclass of the latter restriction and Auto is a subclass of the
> former restriction.
>
> Maybe I can explain it better with some thought.
>
> Thanks again, I am having fun.
> LFJ
> On Fri, Jul 15, 2011 at 4:23 PM, Scott Henninger <[email protected]>
> wrote:
>
> See comments inline:
>
> > Hi Scott,
> > Thanks for this. It did not work for me. How is your inferencing
> configured?
>
> I have TopSPIN configured for inferencing. What didn't work? The
> queries do use some SPARQL 1.1 features that may not be in earlier
> versions of TBC. Upgrading to 3.5.x will work, as will replacing IF
> with smf:if and COALESCE with smf:firstBound.
>
> >
> > Also, your rule seems to be constructing a restriction. How does the
> inferencing work such that an individual is classified as a teenager? Does
> the reasoner construct the restriction and then determine that Since the
> individual is a person, and a member of the restriction class, and teenager
> is the intersection of Person and The Restriction, the individul is therefore
> a teenager?
>
> A restriction creates an unnamed node (bnode) that represents a
> class. In the case of an equivalentClass restriction on a class, the
> restriction is an equivalentClass meaning that all members of the
> restriction are also members of the class. E.g. suppose we have:
> :Teenager a owl:Class .
> <restr> owl:equivalentClass :Teenager
>
> The restriction, such as "Person and (hasAge only xsd:integer[>= 13 ,
> <= 19])" is applied to the class defined by the restriction. Since it
> is an equivalent class with :Teenager, then all members of the
> restriction are members of :Teenager, and vice-versa.
>
> >
> > I am trying to get a handle on how SPIN works to perform inferences
> based on OWL semantics. Maybe a more general rule would be better.
>
> On its own, it doesn't. SPIN is a different way to accomplish
> inferences. It is based on SPARQL, and as such has no inherent
> interactions with OWL (it is rdf-based). However, one of the OWL 2
> profiles, OWL 2 RL, is defined such that a triple-based rule engine
> can implement it directly. SPARQL, using CONSTRUCT, is one such
> engine. When you choose OWL2 RL in the Ontology Home Profile, a set
> of rules implementing OWL 2RL profile are applied when you run
> inferences.
>
> In effect, this imports TopBraid/SPIN/owlrl-all.rdf. For a listing of
> these rules, see http://topbraid.org/spin/owlrl-all.html. Compare
> these to the standard,
> http://www.w3.org/TR/owl2-profiles/#Reasoning_in_OWL_2_RL_and_RDF_Graphs_using_Rules,
> and you'll see this is a direct implementation the profile.
>
> So, as a simpler example, see the cas-sco rule:
>
> CONSTRUCT { ?x a ?c2 .}
> WHERE {
> ?c1 rdfs:subClassOf ?c2 .
> ?x a ?c1 .
> }
>
> This is the classic subclassOf inference. If ?x is a member of ?c1
> and ?c1 is a subClassOf ?c2, then ?x is a member of ?c2.
>
> >
> > So instead of classifying an individual, I tried to do some class level
> reasoning. For example, If I have a class such as Automobile and it is
> defined as a subclass of the restriction on 'Haspart' to some value wheel,
> how would a rule that resulted in "wheel isPartOF some Automobile.
> >
> > So I want to go from
> >
> > Auto :subClassOf {hasPart some Wheel}
> >
> > To
> >
> > Wheel :subClassOf {isPartOf some Automobile}
>
> someValuesOf restrictions on someValesOf are already included in OWL 2
> RL, so you don't need to re-implement them. See cls-svf1 and cls-
> svf2.
>
> -- Scott
>
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en