- From: <henry.story@bblfish.net>
- Date: Wed, 5 Mar 2014 11:25:41 +0100
- To: ashok.malhotra@oracle.com
- Cc: public-ldp-wg@w3.org
- Message-Id: <6B84A3C7-00C2-4A23-A134-95F53026630A@bblfish.net>
On 5 Mar 2014, at 01:35, ashok malhotra <ashok.malhotra@oracle.com> wrote: > In programming languages, subclass relationships come with certain guarantees > such as : a method that runs on an instance of the parent class will also run on > an instance of the subclass. > > What are the equivalent guarantees on RDF subclasses? > In other words, what are the rules on behavior between a parent class and a subclass? classes in RDF are (very close to ) mathematical Sets. They don't change, they don't have behavior. All members of a subclass are members of a subclass. So if something is true of all members of a superclass then it is true of all members of a subclass for example. RDFS and owl map out a lot of these rules. For example in the ontology I wrote up we had ldp:membershipResource a rdf:Property, rdfs:domain ldp:IndirectContainer . ldp:membershipResource a rdf:Property; rdfs:domain ldp:IndirectContainer . ldp:insertedContentRelation a rdf:Property, owl:FunctionalProperty; rdfs:domain ldp:IndirectContainer . This allows us do conclude from { ?c ldp:membershipResource ?r } that { ?c a ldp:IndirectContainer }. What we want to say is something stronger though, namely that every ldp:IndirectContainer has these three relations. We could say: ldp:IndirectContainer a rdfs:Class, owl:Class; rdfs:subClassOf ldp:Container, [ a rdf:Restriction; owl:onProperty ldp:hasMemberRelation; owl:cardinality 1; ], [ a rdf:Restriction; owl:onProperty ldp:insertedContentRelation; owl:cardinality 1; ], [ a rdf:Restriction; owl:onProperty ldp:membershipResource; owl:cardinality 1; ]. This would tell us that every IndirectContainer has only 1 of these three relations. But then we can no longer say that the ldp:contains relations is a restriction on the ldp:hasMemberRelation, since then we'd have two of each relation, which by the above restriction would be owl:sameAs each other. To take out example <http://example.org/netWorth/> a ldp:DirectContainer; dcterms:title "The assets of JohnZSmith"; ldp:membershipResource <http://example.org/netWorth/nw1/>; ldp:hasMemberRelation o:asset; ldp:contains <a1>, <a2>. It would then follow that o:asset owl:sameAs ldp:contains . which is not what we want. If we then set cardinatlity restrictions to 2 then we would no longer know which of the two ldp:hasMemberRelation is meant to go with which ldp:insertedContentRelation. And yet that is what we are doing when we have an IndirectContainer that also has the ldp:contains relation. I am trying to see if I can get Pellet to come up with this conclusion by itself. This shows I think that we need to model what we are doing using ldp:bindingRules where an ldp:IndirectContainer is restricted to two Rules, and each rule itself can only have one of each of the relations. I think things will work out in that case. ============================================ So I think we do have a serious modelling problem here. Perhaps if someone who is better at owl can work this out with me we'd be able to get this worked out cleanly. ============================================ This is how far I got until now... ldp:HttpActionRule a rdfs:Class; rdfs:comment """ a rule on what consequences will occur on POSTing to a container. """. ldp:bindingRule a rdf:Property; rdfs:label "binding rule"; rdfs:domain ldp:Container; rdfs:range ldp:HTTPActionRule . ldp:IndirectContainerRule rdfs:subClassOf ldp:HttpActionRule . ldp:DirectContainerRule rdfs:subClassOf ldp:IndirectContainerRule . ldp:ContainerRule rdfs:subClassOf ldp:DirectContainerRule ; rdfs:label "ContainerRule"; rdfs:comment """ the rule that on POSTing creates an ldp:contains relation, etc... """. ldp:Container owl:equivalentClass [ a owl:Restriction; owl:onProperty ldp:bindingRule; owl:someValuesFrom ldp:ContainerRule ]. ldp:IndirectContainer owl:equivalentClass [ owl:intersectionOf ( ldp:Container [ a owl:Restriction; owl:onProperty ldp:bindingRule; owl:maxQualifiedCardinality 2; owl:onClass ldp:IndirectContainerRule ] ) ]. ldp:DirectContainer owl:equivalentClass [ owl:intersectionOf ( ldp:Container [ a owl:Restriction; owl:onProperty ldp:bindingRule; owl:maxQualifiedCardinality 2; owl:onClass ldp:DirectContainerRule ] ) ]. Henry > > On 3/4/2014 3:38 PM, Kingsley Idehen wrote: >> On 3/4/14 1:16 PM, henry.story@bblfish.net wrote: >>> At the last meeting there was a resolution to move back to the previous positon >>> on container hierarchies, the position called "the minimal consensual position" >>> in >>> >>> https://www.w3.org/2012/ldp/wiki/ContainerHierarchy >>> >>> But that wiki page shows how the minimal consensual position we have currently >>> + the decisions we have previously come to lead to hierarchy >>> >>> IndirectContainer >>> DirectContainer >>> BasicContainer >>> >>> In RDF subclass relations DO NOT mean dependence of one subclass >>> on another. You can easily deprecate classes without subclasses or >>> superclasses without this leading to legacy issues. >>> >>> All the subclass relations mean is that you cannot have objects that are in one >>> class and not the superclass as shown by the picture >>> >>> https://www.w3.org/2012/ldp/wiki/ContainerHierarchy#LDP-BC_.3C:_LDP-DC_.3C:_LDP-IC_.3C:_LDPC >>> >>> >>> So I think it is misleading in fact to now show the classes as having no relation to each >>> other when we know they do. >>> >>> Henry >> >> Is this addressed to me or everyone else? >> >> " >> In RDF subclass relations DO NOT mean dependence of one subclass >> on another. You can easily deprecate classes without subclasses or >> superclasses without this leading to legacy issues. >> " >> >> You appear (if this is directed to me) to be assuming that I am I disagreeing with, or contradicting, the claim above? >> >> FWIW: subclasses are useful in the context of inference, when the relations in question (e.g., rdfs:subClassOf) are transitive in nature. >> -- >> >> Regards, >> >> Kingsley Idehen >> Founder & CEO >> OpenLink Software >> Company Web: http://www.openlinksw.com >> Personal Weblog: http://www.openlinksw.com/blog/~kidehen >> Twitter Profile: https://twitter.com/kidehen >> Google+ Profile: https://plus.google.com/+KingsleyIdehen/about >> LinkedIn Profile: http://www.linkedin.com/in/kidehen >> >> >> >> > Social Web Architect http://bblfish.net/
Received on Wednesday, 5 March 2014 10:26:58 UTC