W3C home > Mailing lists > Public > public-rdf-ruby@w3.org > June 2010

Re: Writing Namespaces in RDF.rb

From: Ben Lavender <blavender@gmail.com>
Date: Tue, 8 Jun 2010 14:47:56 +0200
Message-ID: <AANLkTim9YcehGDQBI_JYtKVFJfJc-VgzXutSyQ_n9YAD@mail.gmail.com>
To: Gregg Kellogg <gregg@kellogg-assoc.com>
Cc: Mark Windholtz <windholtz@gmail.com>, "public-rdf-ruby@w3.org" <public-rdf-ruby@w3.org>
This is actually a problem with rdf-raptor, not rdf-rdfxml.  I imagine
Mark is using require 'linkeddata'.

However, I don't replicate a simpler example (now copy-pasteable):

require 'linkeddata'
s = RDF::URI('http://example.org/ex')
p = RDF::DC.event
o = RDF::Literal("a literal")
repo = RDF::Repository.new
repo << RDF::Statement(s, p, o)
RDF::Writer.for(:ntriples)
RDF::Writer.for(:rdfxml)

For this :rdfxml dump, I get:

<?xml version="1.0" encoding="utf-8"?>\n<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://example.org/ex">
    <ns0:event xmlns:ns0="http://purl.org/dc/terms/">a literal</ns0:event>
    </rdf:Description>
</rdf:RDF>\n

Note that the namespace is defined in mine.  Can you verify you're
using the latest rdf-raptor and rdf.rb, Mark?

Ben

On Tue, Jun 8, 2010 at 2:37 PM, Gregg Kellogg <gregg@kellogg-assoc.com> wrote:
> Hi Mark, just to note that the rdf-rdfxml RDF/XML Writer is still in
> development, so your results may vary. Which gem are you using to do rdfxml
> formatting?
> In this case, you're using standard namespaces, so the writer should find
> them to use them in the serialization. Note that for non-standard namespaces
> (those not defined in RDF.rb), you can define them buy subclassing
> RDF::Vocabulay as follows:
> class XML < Vocabulary("http://www.w3.org/XML/1998/namespace"); end
> This should cause the namespaces to be used in serialization.
>
> Alternatively, the rdf_context gem also includes an RDF/XML serializer, but
> the syntax is somewhat different than that for RDF.rb.
>
> require 'rdf_context'
> include RdfContext
>
> g = Graph.new
> g << Triple.new(course_url(@course), DC_NS.event, @course.full_title)
> output = g.to_rdfxml
>
> yields
>
> <?xml version="1.0" encoding="UTF-8"?>
> <rdf:RDF xmlns:dc="http://purl.org/dc/terms/"
> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
>   <rdf:Description rdf:about="http://foo/bar">
>     <dc:event>title</dc:event>
>   </rdf:Description>
> </rdf:RDF>
>
> Gregg
> On Jun 6, 2010, at 4:52 PM, Mark Windholtz wrote:
>
> I'm an RDF.rb newbie trying to write out RDF for a training event.
> But I cannot figure out how to write out the namespace specs.
> The Rails action looks like this:
>
> def show
>  @course = Course.find(params[:id])
>  respond_to do |format|
>      format.rdf  do
>             output = RDF::Writer.for(:rdfxml).buffer do |writer|
>                  s = RDF::URI(course_url(@course))
>                  p = RDF::DC.event
>                  o = RDF::Literal(@course.full_title)
>                  writer << RDF::Statement(s, p, o)
>             end
>             render :xml => output
>         end
>   end
> end
>
> And produces this:
> <rdf:RDF>
>    <rdf:Description rdf:about="http://mydomain/training/178">
>    <ns0:event>  Training: Dallas, Aug 23-24, 2010 </ns0:event>
>  </rdf:Description>
> </rdf:RDF>
>
> Why is the namespace "ns0" ?
> I want something like:
>
> <rdf:RDF
>    xmlns:dc="http://purl.org/dc/elements/1.1" >           <==== NOTE HERE
>    <rdf:Description rdf:about="http://mydomain/training/178">
>    <dc:event>  Training: Dallas, Aug 23-24, 2010 </ns0:event>
>  </rdf:Description>
> </rdf:RDF>
>
> How can I get RDF.rb to do this?
>
> Regards,
> - Mark Windholtz
> (513) 226-8259
> www.agiledna.com
> @agiledna
>
>
>
>
>
>
>
Received on Tuesday, 8 June 2010 12:56:49 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 June 2010 12:56:49 GMT