W3C home > Mailing lists > Public > semantic-web@w3.org > July 2007

Re: Calling the rdf file an ontology?

From: Reto Bachmann-Gmür <reto@gmuer.ch>
Date: Wed, 18 Jul 2007 10:47:07 +0200
Message-ID: <469DD38B.2060701@gmuer.ch>
To: Yoshio Fukushige <fukushige.yoshio@jp.panasonic.com>
CC: semantic-web@w3.org, Tim Berners-Lee <timbl@w3.org>
Yoshio Fukushige wrote:
> Thank you, Reto, for your comment.
>
> On Tue, 17 Jul 2007 19:03:28 +0200
> Reto Bachmann-Gmu"r <reto@gmuer.ch> wrote:
>
>   
>>> (2) It is wise not to include .rdf (or any other extensions) in the URI of an ontology,
>>> so as to allow content negotiations.
>>>   
>>>       
>> HTTP allows content-negotiation independently of style of the URI, it's
>> just no longer a "cool URI".
>>     
>
> Would you explain a bit about "it's just no longer a "cool URI""?
>
> Which are you saying cool, URI with extension or without it?
>
> #sorry, it may be just because my understanding English is not sufficient to 
> # resolve what you meant by "it"...
>   
I was referring to http://www.w3.org/Provider/Style/URI - I just wanted
to note that strictly speaking you are not disallowing content
negotiation with a certain style of URIs, it's just that the ".rdf" is
superfluous and misleading if the intention is not to reference
specifically the RDF/XML representation.
>   
>> In your examples you unnecessarily declare the prefix ont and voc.
>> Serializations of graphs using your terms would just include the prefix
>> for "http://ont.example.org/myOnt/voc/", following your pattern this URI
>> is neither dereferenceable nor an ontology; this is of. As Tim pointed
>> the approach using HTTP 303 responses has disadvantages in performance
>> over the pattern using hashes, on the other side only the 303-approach
>> allows efficient use of namespaces.
>>     
>
> It's true that the namespace http://ont.example.org/myOnt/ont/ doesn't appear,
> in most part of the graph users need or find interesting.
>   
Indeed the only place I can think of it might appear is the
N3-representations of the ontologies, but not in any document using the
ontologies.
> They are introduced as shorthands in writing URIs of the ontologies, 
> (or the space where one can retrieve the ontologies)
>
> My example splits the Web space for the vocabulary
> (http://ont.example/org/myOnt/voc/)
>  from the one for the ontologies
> (http://ont.example/org/myOnt/ont/)
> .
>
> And a request for a term is redirected to the corresponding minimum ontology
> through 303...
>   
The distinction between "voc" and "ont" is that "voc" contains the terms
while "ont" contains the ontologies describing them. I would add the
following requirement: the namespace used in serialization shall
dereference to the ontology defining the terms.

So I would suggest something like:

http://ont.example/org/myOnt/ ==> is an ontology, returns the complete ontology (if you want you it can consist only of import statements)

http://ont.example/org/myOnt/baer ==> is the class of things that are baers, returns a 303 to http://ont.example/org/myOnt/baer/ont

http://ont.example/org/myOnt/baer/ont ==> is an ontology, returns the definition of the http://ont.example/org/myOnt/baer and some related properties

> Oh, sorry, I (mis)dropped the response code specification(?) [R=303] in (iii)
>   
I don't know about configuring apache servers.
> I meant 
>  ----
>  RewriteBase /myOnt
>
>  RewriteRule voc/(*+) ont/$1.rdf [R=303]
>  RewriteRule ont/$ ont/all.rdf [R=303]
>  ---
>
> When just doing the redirection, the lines
> <owl:Ontology rdf:about="http://ont.example.org/myOnt/ont/Bear"/>
> <owl:Ontology rdf:about="http://ont.example.org/myOnt/ont/Donkey"/>
> are not necessary.
>
> But to let the interested users get the whole ontology,
> I need to "import" each "ontology" into a single "ontology".
>
> That's what the lines in (ii)
>
> 	<owl:Ontology rdf:about="http://ont.example.org/myOnt/ont">
> 		<owl:imports rdf:resource="http://ont.example.org/myOnt/ont/Bear"/>
> 		<owl:imports rdf:resource="http://ont.example.org/myOnt/ont/Donkey"/>
> 	</owl:Ontology>
>
> are for.
>
> Oh, I also needed 
>
> -----------
> RewriteRule voc/?$ ont/all.rdf [R=303]
> -----------
>
> Is this what you pointed by 
> "neither dereferenceable"?
>   
A document using your ontologies would look like

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:owl="http://www.w3.org/2002/07/owl#"
	xmlns:wildlife="http://ont.example.org/myOnt/voc/"
	xmlns:fiaf="http://xmlns.com/foaf/0.1/">

	<wildlife:Baer rdf:about="http://data.example.org/Beno">
		<foaf:knows rdf:resource="http://data.example.org/Lucie">
	</wildlife:Baer>

	<wildlife:Monkey rdf:about="http://data.example.org/Lucie">
		<foaf:knows rdf:resource="http://data.example.org/Beno">
	</wildlife:Monkey>
</rdf:RDF>


Users may expect "http://ont.example.org/myOnt/voc/" to be
dereferenceable to the ontology describing the used terms, which is not
the case with your pattern.

> And because the object of owl:imports needs to be owl:Ontology,
> I put the assertions in the files (i) (using the 'ont:' prefix)
>
> Should I have added
>
>     <rdf:Description rdf:about="http://ont.example.org/myOnt/voc/Bear">
>         <isDefinedBy rdf:resource="http://ont.example.org/myOnt/ont/Bear"/>
>     </rdf:Description>
>
> in http://ont.example.org/myOnt/ont/Bear.rdf, for example?
>   
You may, but I don't think its important.
> And is this what you pointed by
> "nor an ontology"?
>   
No, I just meant that the URI used associated with a namespace prefix
(as in my example above) is not an ontology; of course it doesn't have
to be an ontology, it might just be the place where people look for an
ontology.

Reto
> Best,
> Yoshio Fukushige
> fukushige.yoshio@jp.panasonic.com
>
>   
>>> ------------ start of my idea -----------
>>> (i)
>>> Define each term (Class of property) in a file
>>>
>>> For an Ontology for the Bear class,
>>> in http://ont.example.org/myOnt/ont/Bear.rdf,
>>>
>>> -----------
>>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>> 	xmlns:owl="http://www.w3.org/2002/07/owl#"
>>> 	xmlns:ont="http://ont.example.org/myOnt/ont/"
>>> 	xmlns:voc="http://ont.example.org/myOnt/voc/">
>>>
>>> 	<owl:Ontology rdf:about="http://ont.example.org/myOnt/ont/Bear"/>
>>>
>>> 	<owl:Class rdf:about="http://ont.example.org/myOnt/voc/Bear"/>
>>>
>>> </rdf:RDF>
>>> -----------
>>>
>>> and for an Ontology for the Donkey class,
>>> in http://ont.example.org/myOnt/ont/Donkey.rdf,
>>>
>>> -----------
>>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>> 	xmlns:owl="http://www.w3.org/2002/07/owl#"
>>> 	xmlns:ont="http://ont.example.org/myOnt/ont/"
>>> 	xmlns:voc="http://ont.example.org/myOnt/voc/">
>>>
>>> 	<owl:Ontology rdf:about="http://ont.example.org/myOnt/ont/Donkey"/>
>>>
>>> 	<owl:Class rdf:about="http://ont.example.org/myOnt/voc/Donkey"/>
>>>
>>> </rdf:RDF>
>>> -----------
>>>
>>> (ii)
>>> Then for the whole ontology that includes all the term definitions,
>>> in http://ont.example.org/myOnt/ont/all.rdf
>>> -----------
>>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>> 	xmlns:owl="http://www.w3.org/2002/07/owl#"
>>> 	xmlns:ont="http://ont.example.org/myOnt/ont/"
>>> 	xmlns:voc="http://ont.example.org/myOnt/voc/">
>>>
>>> 	<owl:Ontology rdf:about="http://ont.example.org/myOnt/ont">
>>> 		<owl:imports rdf:resource="http://ont.example.org/myOnt/ont/Bear"/>
>>> 		<owl:imports rdf:resource="http://ont.example.org/myOnt/ont/Donkey"/>
>>> 	</owl:Ontology>
>>> </rdf:RDF>
>>> -----------
>>>
>>> (iii)
>>> Lastly, add the rewrite directives such as
>>>
>>> ----
>>> RewriteBase /myOnt
>>>
>>> RewriteRule voc/(*) ont/$1.rdf
>>> RewriteRule ont/$ ont/all.rdf
>>> ---
>>>
>>> (I'm not certain about the rule grammer, though)
>>>
>>> (iv)
>>> When using the vocabulary,
>>> by declaring the common namespace for the terms,
>>> one doesn't need to declare each namespaces,
>>> like in
>>> -----------
>>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>> 	xmlns:owl="http://www.w3.org/2002/07/owl#"
>>> 	xmlns:voc="http://ont.example.org/myOnt/voc/">
>>>
>>> 	<voc:Bear rdf:about="#Pooh"/>
>>> 	<voc:Donkey rdf:about="#Eeyore"/>
>>>
>>> </rdf:RDF>
>>> -----------
>>>
>>> (v)
>>> Then by requesting, for example,
>>>
>>> GET /myOnt/Bear HTTP/1.1
>>> Host: ont.example.org
>>> Accpet: application/rdf+xml
>>>
>>> one will get 
>>>
>>> HTTP/1.x 303 See Other
>>> Location http://ont.example.org/myOnt/ont/Bear.rdf
>>>
>>> and then by requesting the redirected URI, one will get
>>> the Bear.rdf file which is the minumum ontology defining the term.
>>>
>>> On the other hand, when requesting
>>>
>>> GET /myOnt/ont HTTP/1.1
>>> Host: ont.example.org
>>> Accept: application/rdf+xml
>>>
>>> one will get http://ont.example.org/myOnt/ont.rdf
>>> with the HTTP header containing
>>>
>>> HTTP/1.x 200 OK
>>> Content-Type: application/rdf+xml
>>>
>>> (Of course what one get is the list of importing declarations,
>>> and one needs to issue HTTP requests for each minimum files.
>>> But this time, it is the ontologies that are requested, 
>>> so 303 round-trips won't occur)
>>>
>>> ------------ end of my idea -----------
>>>       
>
>   



Received on Wednesday, 18 July 2007 08:28:11 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:16 GMT