- From: Reto Bachmann-Gmür <reto@gmuer.ch>
- Date: Wed, 18 Jul 2007 10:47:07 +0200
- To: Yoshio Fukushige <fukushige.yoshio@jp.panasonic.com>
- CC: semantic-web@w3.org, Tim Berners-Lee <timbl@w3.org>
- Message-ID: <469DD38B.2060701@gmuer.ch>
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 UTC