- 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