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

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