- From: David Wood <david@3roundstones.com>
- Date: Mon, 30 Apr 2012 11:23:45 -0400
- To: David Booth <david@dbooth.org>
- Cc: public-rdf-comments@w3.org
Thanks, David.
Regards,
Dave
On Apr 30, 2012, at 10:40, David Booth wrote:
> Sure. The main driver I have run into is when I want to be able to
> express a particular set of information about a particular thing as
> subject. This means that I need to be able write my triples with that
> thing in the *subject* position of the triple -- not the object
> position.
>
> As a concrete example, I want to be able to talk about the members
> of a particular class :C. If I only have rdf:type then I must write:
>
> :x rdf:type :C .
> :y rdf:type :C .
> :z rdf:type :C .
>
> and the subjects of those statements are :x, :y and :z -- not :C. If I
> could instead write:
>
> :C rdf:isTypeOf :x .
> :C rdf:isTypeOf :y .
> :C rdf:isTypeOf :z .
>
> then the *subject* of those statements is :C, which is what I want.
>
> There are a couple of reasons for wanting to do this:
>
> 1. It allows one to conveniently distinguish those statements from other
> statements in which :C appears in the object position of the triple.
> This is what is done in computing the Concise Bounded Description:
> http://www.w3.org/Submission/CBD/
> It is a common approach taken for DESCRIBE queries in SPARQL.
> One could reasonably argue that instead you should put those statements
> in a separate graph if you wish to distinguish them from statements in
> which :C appears as in the object position of the triple. Indeed, one
> could, but that adds complexity. And the fact is, it is convenient to
> be able to do it this way.
>
> 2. It allows one to use certain optimizations that are asymmetric. In
> particular, if I represent my RDF triples using a hash table for each
> subject, then I can very quickly and easily lookup the members of
> class :C by using rdf:isTypeOf as the hash table index.
>
> For example, in Perl if $s is a hash table reference for triples in
> which class :C is the subject, and $p is property rdf:isTypeOf, then I
> can easily lookup all members of class :C with the following generic
> statement:
>
> @values = $s->{$p};
>
> I.e., @values would then be a list containing :x, :y and :z. Note that
> this simple line of code works for obtaining the values of multi-valued
> properties for triples of *any* subject $s and property $p -- not merely
> the :C example. In contrast, if I could only put :C in the *object*
> position of the triple, then I would have to special-case my code to
> store the members of a class differently than all other multiple-valued
> statements are stored. To avoid that, I instead made up my own inverse
> for rdf:type, which is unfortunate, because its semantics are so
> fundamental.
>
> In essence, the ability to use the inverse property gives the author
> more flexibility in writing RDF. This can be helpful both as a
> convenience for the author and to simplify downstream code that
> processes that RDF.
>
> Let me know if further clarification would help.
>
> Thanks!
> David
>
> On Mon, 2012-04-30 at 08:20 -0400, David Wood wrote:
>> Hi David,
>>
>> Can you please articulate one or more use cases to accompany this
>> feature request? Thanks.
>>
>> Regards,
>> Dave
>>
>>
>>
>>
>> On Apr 29, 2012, at 19:43, David Booth wrote:
>>
>>> If this has already been considered and rejected by the WG then please
>>> ignore, but . . .
>>>
>>> It would be helpful if the RDF and RDFS specs defined inverses for the
>>> properties that they define. For example, if
>>>
>>> :x rdf:type :C .
>>>
>>> then one might write:
>>>
>>> :C rdf:isTypeOf :x .
>>>
>>> and similarly for other properties.
>>>
>>> I have resorted to defining my own inverse properties for some of these,
>>> but it seems silly to do so, rather than standardizing them, especially
>>> since it wouldn't add anything significant to the semantics.
>>>
>>>
>>> --
>>> David Booth, Ph.D.
>>> http://dbooth.org/
>>>
>>> Opinions expressed herein are those of the author and do not necessarily
>>> reflect those of his employer.
>>>
>>>
>>
>>
>>
>
> --
> David Booth, Ph.D.
> http://dbooth.org/
>
> Opinions expressed herein are those of the author and do not necessarily
> reflect those of his employer.
>
Received on Monday, 30 April 2012 15:24:18 UTC