Dave, Thx. You are correct and the fact that rdf:predicate is not appropriate was noted many months ago when we defined the Shape resource.
RDFS is also not very appropriate since it makes global assertions about properties. What we need here are local restrictions on properties when they are used for a given resource type. We created Shape resource to express that. However, an equivalent description can be created using OWL via the notion of class restrictions. I believe the best way forward is to keep the Shape resource since it is very explicit, but provide the OWL meaning of it to ensure it is aligned with RDF standards. Regards, ___________________________________________________________________________ Arthur Ryman, PhD, DE Chief Architect, Project and Portfolio Management IBM Software, Rational Markham, ON, Canada | Office: 905-413-3077, Cell: 416-939-5063 Twitter | Facebook | YouTube From: Dave Steinberg/Toronto/IBM@IBMCA To: oslc-core <[email protected]> Date: 05/26/2010 10:36 AM Subject: Re: [oslc-core] Comment on ResourceShape resources Sent by: [email protected] Hi all, First off, apologies for barging into the conversation. I haven't been involved in this group at all, but I've just been digging into Core spec draft over the past few days and I was most puzzled by this particular issue (and, really, resource shapes in general). So, I thought I'd add my two cents in the hopes that someone might find it helpful. I definitely agree with Ian's comments about rdf:type being inappropriate there, but I'm not sure about the suggestion to use rdf:predicate instead. rdf:predicate is part of RDF's reification vocabulary, and its meaning in that context is very different from what you're attempting to convey here. For those who don't know, reification provides the ability to use RDF statements to describe other statements. The vocabulary includes the type rdf:Statement and the properties rdf:subject, rdf:predicate, and rdf:object. For example, consider the following statement: a:service-provider dc:title "Blogging Service" . It can be fully described by the following four statements: b:stmt rdf:type rdf:Statement . b:stmt rdf:subject a:service-provider . b:stmt rdf:predicate dc:title . b:stmt rdf:object "Blogging Service" . The effect of this is to introduce another node into the RDF graph representing the statement and identifiable, itself, by a URI. Note that the four reification statements are not actually equivalent to the statement they describe. One important thing to notice about the reification statements is that the subjects of them are all a statement. Indeed, RDF Schema declares that rdf:Statement is the domain of rdf:subject, rdf:predicate, and rdf:object. This allows an RDFS-aware system to infer that the subject of any rdf:predicate statement (such as the oslc:Property blank node in the proposal below) is an rdf:Statement. So in this proposal, we would be saying that the blank node is both an oslc:Property and an rdf:Statement. That's not strictly speaking wrong (pretty much nothing is in RDF), but it's confusing and probably not what was intended, since an oslc:Property appears to be some kind of "meta" concept, while an rdf:Statement is actually a statement itself (an instance). The RDFS equivalent of oslc:Property is (unsurprisingly) rdf:Property, but there is no equivalent relationship to what you're trying to establish here, since it is the URI of the rdf:Property itself that one uses in writing the predicate of the statement. So, if you wanted to follow that lead, you would assign the URI http://purl.org/dc/terms#modified to the oslc:Property, not leave it as a blank node, and make your shape statements about the property itself. But I'm not at all sure if that's really what you want to do. It seems to me that oslc:Property is intended to be something more like a particle/attribute use in XML Schema (where the rdf:Property is analogous to an element/attribute). That is, it restricts how the property can be used in a particular context. If that's the case, I'm not sure what to advise. It does seem rather counter to the non-restrictive nature of RDF as I understand it, but I'm definitely not an RDF expert and I can certainly see the appeal of knowing what to expect. At the very least, I would encourage you to be clear about the concepts that resource shapes introduce and not to reuse any vocabulary that would obscure those concepts. Cheers, Dave -- Dave Steinberg Rational Software - IBM Toronto Lab mailto:[email protected] Dave ---05/26/2010 08:39:44 AM---Thanks for the excellent feedback Ian and I agree pdf:predicate seems a much better fit here. I capt From: Dave <[email protected]> To: oslc-core <[email protected]> Date: 05/26/2010 08:39 AM Subject: Re: [oslc-core] Comment on ResourceShape resources Sent by: [email protected] Thanks for the excellent feedback Ian and I agree pdf:predicate seems a much better fit here. I captured this issue on the issues page and applied your suggested change to the Resource Shape resource definition in appendix A. So far we are using two notions from RDFS: the notion of a resource definition, known as a class in the RDFS terminology, and rdf:predicate. Perhaps I should add RDFS to the list of references at the end of the spec. - Dave On Wed, May 19, 2010 at 8:02 AM, Ian Green1 <[email protected]> wrote: > Hi all, > > the resource shape spec states that a Shape resource has zero-or-more > oslc:Property's > > > an oslc:Property has a (Resource, exactly-one) "rdf:type". > > This is a category error in the RDF model. The rdf:type is the type of > the instance, not the type of the RDF predicate which is modelling the > oslc:Property. > > To be concrete - here is an example from the draft: > > > > <oslc:property> > <oslc:Property> > <oslc:name>modified</oslc:name> > <oslc:occurs>exactly-one</oslc:occurs> > <oslc:namespace rdf:resource="http://purl.org/dc/terms#" /> > <rdf:type rdf:resource="http://purl.org/dc/terms#modified" /> > <oslc:valueType rdf:resource=" > http://www.w3.org/2001/XMLSchema#dateTime" /> > </oslc:Property> > </oslc:property> > > This asserts that there is a resource, of rdf:type oslc:Property AND also > of rdf:type http://purl.org/dc/terms#modified > > We don't mean this. We mean that the oslc:Property is indicated by an > RDF predicate http://purl.org/dc/terms#modified. > > I suggest we change this part of the spec. to use rdf:predicate rather > than rdf:type. So the example becomes: > > <oslc:property> > <oslc:Property> > <oslc:name>modified</oslc:name> > <oslc:occurs>exactly-one</oslc:occurs> > <oslc:namespace rdf:resource="http://purl.org/dc/terms#" /> > <rdf:predicate rdf:resource=" > http://purl.org/dc/terms#modified" /> > <oslc:valueType rdf:resource=" > http://www.w3.org/2001/XMLSchema#dateTime" /> > </oslc:Property> > </oslc:property> > > -ian > > [email protected] (Ian Green1/UK/IBM@IBMGB) > Chief Software Architect, Requirements Definition and Management > IBM Rational > > > > > > Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > > > > > > > > _______________________________________________ > Oslc-Core mailing list > [email protected] > http://open-services.net/mailman/listinfo/oslc-core_open-services.net > _______________________________________________ Oslc-Core mailing list [email protected] http://open-services.net/mailman/listinfo/oslc-core_open-services.net _______________________________________________ Oslc-Core mailing list [email protected] http://open-services.net/mailman/listinfo/oslc-core_open-services.net
