- From: <henry.story@bblfish.net>
- Date: Fri, 14 Mar 2014 16:45:48 +0100
- To: bulicny@vistology.com
- Cc: public-owl-dev@w3.org
- Message-Id: <484EE99B-9294-4B92-BD98-3C3B52680C10@bblfish.net>
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 15:46:20 UTC