Re: an LDP ontology -- Was: MothersLovers - an OWL restriction question

Uli,

That's correct, but I wouldn't call it a 'trick'.  'lovesMotherOf' is an
obvious name for the property chain you describe.  x lovesMotherOf y if x
loves z and z isMotherOf y (z inverse(hasMother) y).   Restricting this
property to Self does what Henry wants: x lovesMOtherOf x if this is
restricted to Self.

Due to the Open World Assumption, as you say, declaring someone a member of
this class won't produce an instance of z isMotherOf x if one doesn't
already exist.

Brian


On Fri, Mar 14, 2014 at 1:37 PM, Uli Sattler <
Ulrike.Sattler@manchester.ac.uk> wrote:

> Hi Henry and Brian,
>
> if i understand Henry's motivating example correctly, you want a class
> expression that describes those people who love their mothers, i.e., they
> are related by the 'loves' to their mothers, i.e., there is a person who
> they are related to by both the 'loves' property and the 'hasMother'
> property.
>
> If this is correct, here is a trick:
>
> - specify a sub-property chain axiom, saying that "loves o isMotherOf" is
> a Subpropertychain of "P" (notice I use the *inverse* of 'hasMother' here -
> so every MotherLover should be P-related to themselves - and possibly also
> to other things)
>
> - define "MotherLover" as an EquivalentClass of "P some self"
>
> ...that should do it in the following sense: if you happen to have a known
> person who loves their mother, they will be returned if you ask for
> instances of "MotherLover"...
>
> It doesn't quite work, however, in the following sense: if you *declare*
> somebody to be an instance of MotherLover, then they won't necessarily have
> to love their mother (they will only be P-related to themselves - the
> subpropertychain is only an implication, not a bi-implication...)
>
> All the best, cheers, Uli
>
> On 14 Mar 2014, at 15:45, "henry.story@bblfish.net" <
> henry.story@bblfish.net>
>  wrote:
>
> >
> > On 14 Mar 2014, at 15:40, Brian Ulicny <bulicny@vistology.com> wrote:
> >
> >> I think you are looking for a SELF-restriction here:
> >>
> >>
> http://www.w3.org/2007/OWL/wiki/New_Features_and_Rationale#F4:_Self_Restriction
> >>
> >> This is not part of OWL 2 RL, but you can easily write a rule for this.
> >
> > Thanks Brian,
> >
> >   that's how I started, then I had doubts, and paddled back. I just
> checked the formal definition
> > on the owl-direct-semantics [1] page and as I read it, it seems to say
> that something
> > has an owl:hasSelf if at least one relation relates back to it. I was
> not sure about that
> > when I looked at the owl2-primer.
> >
> > I have been developing a little ontology it order to see if the LDP
> group that is in LastCall 2 [0] has well defined
> > its model. There is something that has struck people as quite odd in the
> way the ontology is specified, especially
> > with the container hierarchy
> https://www.w3.org/2012/ldp/wiki/ContainerHierarchy
> >
> > So I tried to see if one could unify all the containers by introducing
> the notion of a binding rule, which would
> > show how the different container types can be specified by restrictions
> on the number and types of the
> > ldp:bindingRule relation. This lead me to the following ontology:
> >
> >   https://github.com/bblfish/ldp/blob/master/ldp.binding.ttl
> >
> > A binding rule, relates a container to a statement about what happens as
> a rule
> > when one POSTs something to the container. So in philosophy of language
> > it is similar to a specification of a speech act. ( When a priest utters
> the words "you are now
> > man and wife he is not describing reality, but he is making the
> statement true. Same when
> > a chair utters the words "the meeting is now closed" ).
> >
> > This ontology uses an owl:hasSelf restriction on property defined via a
> propertyChainAxiom.
> > It gives the correct class hierarchy with Pellet, but since Pellet
> complains a lot I can't be
> > sure if this really is consistent.
> >
> > Does anyone have a reasoner that could check the consistency of it?
> >
> > $ sh pellet.sh classify --input-format  Turtle -l jena
> ../LDP/ldp.binding.ttl
> > Mar 14, 2014 4:11:24 PM org.mindswap.pellet.RBox ignoreTransitivity
> > WARNING: Unsupported axiom: Ignoring transitivity and/or complex
> subproperty axioms for isMemberOfRelation
> > Mar 14, 2014 4:11:24 PM org.mindswap.pellet.RBox ignoreTransitivity
> > WARNING: Unsupported axiom: Ignoring transitivity and/or complex
> subproperty axioms for hasMemberRelation
> > Mar 14, 2014 4:11:24 PM org.mindswap.pellet.RBox ignoreTransitivity
> > WARNING: Unsupported axiom: Ignoring transitivity and/or complex
> subproperty axioms for insertedContentRelation
> > Mar 14, 2014 4:11:24 PM org.mindswap.pellet.RBox ignoreTransitivity
> > WARNING: Unsupported axiom: Ignoring transitivity and/or complex
> subproperty axioms for membershipResource
> > Classifying 14 elements
> > Classifying:  100% complete in 00:00
> > Classifying finished in 00:00
> >
> >  owl:Thing
> >     rdf:Property
> >     rdfs:Resource
> >     ldp:HTTPActionRule
> >        ldp:IndirectBindingRule
> >           ldp:DirectBindingRule
> >              ldp:ContainerRule
> >     ldp:Resource
> >        ldp:Source
> >           ldp:Container
> >              ldp:DirectContainer
> >                 ldp:IndirectContainer
> >                    ldp:BasicContainer
> >
> > Btw. the central networth example from the spec, can be re-written with
> the binding rule
> > as follows:
> >
> > @prefix dcterms: <http://purl.org/dc/terms/>.
> > @prefix o: <http://example.org/ontology/>.
> >
> > </netWorth/> a ldp:DirectContainer;
> >    dcterms:title "The assets of JohnZSmith";
> >    ldp:bindingRule [ a ldp:DirectBindingRule;
> >         ldp:subject </netWorth/nw1/>;
> >         ldp:relation o:asset;
> >       ];
> >    ldp:contains </netWorth/a1>, </netWorth/a2> .
> >
> >
> >
> > ( So that was the more serious example I mentioned )
> >
> >
> > Henry
> >
> > [0] http://www.w3.org/TR/ldp/
> > [1]
> http://www.w3.org/TR/2012/REC-owl2-direct-semantics-20121211/#Class_Expressions
> >
> >
> >
> >>
> >> Best regards,
> >>
> >> Brian Ulicny, PhD
> >> Chief Scientist
> >> VIStology, Inc
> >>
> >>
> >> On Fri, Mar 14, 2014 at 10:31 AM, <henry.story@bblfish.net> wrote:
> >>
> >> I would like to specify the class that is such that the object of one
> relation
> >> is the same ( or same domain ) as object of another relation.
> >>
> >> Something that could be written like this ( were it to exist )
> >>
> >> SomeType
> >> owl:equivalentClass
> >>       [ a owl:SameRangeRestriction;
> >>         owl:onProperty :rel1;
> >>         owl:onProperty :rel2
> >>       ] .
> >>
> >> One could define the class of lovers of their mothers like that
> >>
> >> MothersLovers owl:equivalentClass [ a owl:SameRangeRestriction
> >>                            owl:onProperty :lover
> >>                            owl:onProperty :mother ] .
> >>
> >> As that SameRangeRestriction does not exist, I tried this:
> >>
> >> MothersLovers
> >>    owl:equivalentClass [ a owl:Restriction;
> >>               owl:onProperty [ rdfs:subPropertyOf [
> owl:propertyChainAxiom ( :lover [ owl:InverseOf :mother ] )];
> >>                                a owl:ReflexiveProperty ];
> >>               owl:minCardinality 1 ] .
> >>
> >>
> >> But Pellet does not like property chain axioms in Restrictions. (
> perhaps other resoners allow this?)
> >> Is there some way to do this properly? ( I do have a real use case, but
> it's more complex to explain )
> >>
> >> Henry
> >
> > Social Web Architect
> > http://bblfish.net/
> >
>
>

Received on Friday, 14 March 2014 18:00:52 UTC