W3C home > Mailing lists > Public > public-owl-dev@w3.org > July to September 2009

Re: OWL/RDF Ref/Def and Namespace Reference?

From: Brad Cox <bradjcox@gmail.com>
Date: Mon, 13 Jul 2009 07:23:03 -0400
Cc: Brad Cox <bradjcox@gmail.com>, public-owl-dev@w3.org
Message-Id: <796CC924-78D9-40CC-A346-4172FBC9098F@gmail.com>
To: Bijan Parsia <bparsia@cs.man.ac.uk>
Thanks Bijan. That leaves just one puzzler. Why is it  
foaf:imaginaryFriend not foaf#imaginaryFriend, and which should I use  
for my own properties from my core: (core#?) namespace?

I've been doing it like this, confused by when to use core: vs core#

<rdf:Description rdf:about="#SomeModelElement">
       <rdf:type rdf:resource="http://<host>/ontology/2009/07/ 
core#SomeElementClass"/>
       <core:isElementOf rdf:resource="#SomeModel"/>
       <core:hasStakeholder rdf:resource="#SomeStakeholder"/>
       <rdfs:comment>Some Comment</rdfs:comment>
    </rdf:Description>

Seems to work. But how to explain why to newcomers? I couldn't.

PS: One other. I thought rdf:ID="SomeName" was *THE* way to *define* a  
new item that you *know* doesn't exist and rdf:about="#SomeName" was  
*THE* way to reference or extend one that might not yet exist. Why  
there's about= and resource=, I've never understood.

On Jul 13, 2009, at 5:31 AM, Bijan Parsia wrote:

> On 12 Jul 2009, at 22:19, Brad Cox wrote:
>
>> Could someone please recommend a concise reference for when (and  
>> why) to use the various reference/dereferencing options
>> (rdf:ID, rdf:about, rdf:resource, others?). Also namespaces (when  
>> to use foo:bar vs foo#bar vs &foo;bar and so forth). I've searched  
>> high and low and am constantly confused by the proliferation of  
>> twisty passages.
>>
>> I've worked some of these out experimentally but that broke down  
>> when I divided a large ontology into separate files. I'm really  
>> hoping for something like a best practices but will take whatevers  
>> available.
>
>
> I don't know of anything extant except what's in my head, so I  
> hereby transcribe that into this email :)
>
> Underlying principle: Avoid distinctions in syntax that don't show  
> up in the model, unless the syntax forces you (or it's convenient).
>
> From this, the Golden Rule: Don't ever use rdf:ID.
>
> (rdf:ID is confusing -- even deceptive -- and not very robust)
>
> Other underlying principle: Be consistent.
>
> The simplest thing to do is use rdf:about everywhere. That leads to  
> slightly more verbose RDF/XML, e.g.,
>
> A:	<rdf:Description rdf:about="#sheevah">
> 		<foaf:imaginaryFriend>
> 			<rdf:Description rdf:about="#bijan"/>
> 		</foaf:imaginaryFriend>
> 	<rdf:Description>
>
> instead of:
> B:	<rdf:Description rdf:about="#sheevah">
> 		<foaf:imaginaryFriend rdf:resource="#bijan"/>
> 	<rdf:Description>
>
> But A is robust (e.g., it's straightforward to add more nesting) and  
> simple. It can be cleaner if you have a one off rdf:type, e.g.,
>
> A'	<foaf:Person rdf:about="#sheevah">
> 		<foaf:imaginaryFriend>
> 			<foaf:Person rdf:about="#bijan"/>
> 		</foaf:imaginaryFriend>
> 	<foaf:Person>
>
> vs.
>
> B'    <foaf:Person rdf:about="#sheevah">
> 		<foaf:imaginaryFriend rdf:resource="#bijan"/>
> 	<foaf:Person>
> 	<foaf:Person rdf:about="#bijan"/>
>
> I personally use the rule: rdf:about everywhere except in a terminal  
> object node where I use rdf:resource. Basically, "rdf:resource  
> everywhere I can, rdf:about otherwise".
>
> # vs. /, well, basically "be consistent". Either is fine  
> semantically, # is rather more common, so # is simpler. # *can*  
> cause problems if you are in a rare situtation where people are  
> dereferencing a term (ewww...don't do that) and not caching...they  
> can hammer your server. From the client perspective, it can force  
> them to download far more than they needed. Contrariwise, you end up  
> in the wordnet situation with a slew of microontologies. Bleah.
>
> &foo;bar is a pure syntax issue and I would use it only when forced.  
> You are forced when you have to put uris in attribute content and  
> they are not from your base (thus can't be relative). It's *much*  
> better to use entities than to try to scatter bases throughout your  
> document. The most common in owl is &xsd; since you need that for  
> the brute syntax.
>
> You might also consider the forthcoming OWL/XML with has a somewhat  
> simpler story wrt all this. Sorta. Mostly. :) Basically, you can use  
> a curie variant throughout.
>
> Cheers,
> Bijan.
>
> Cheers,
> Bijan.
>
Received on Monday, 13 July 2009 11:23:40 GMT

This archive was generated by hypermail 2.3.1 : Wednesday, 27 March 2013 09:32:57 GMT