- From: Uli Sattler <Ulrike.Sattler@manchester.ac.uk>
- Date: Fri, 14 Mar 2014 17:37:32 +0000
- To: "henry.story@bblfish.net" <henry.story@bblfish.net>
- CC: "<bulicny@vistology.com>" <bulicny@vistology.com>, "<public-owl-dev@w3.org>" <public-owl-dev@w3.org>
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 Saturday, 15 March 2014 01:34:57 UTC