- From: Brian Ulicny <bulicny@vistology.com>
- Date: Fri, 14 Mar 2014 14:00:23 -0400
- To: Uli Sattler <Ulrike.Sattler@manchester.ac.uk>
- Cc: "henry.story@bblfish.net" <henry.story@bblfish.net>, "<public-owl-dev@w3.org>" <public-owl-dev@w3.org>
- Message-ID: <CAHGvn_ztOC6PYg32XntdQ=bWSCbzWPFnMdYPh1YQKVu_sDLDeA@mail.gmail.com>
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