RDF.rbを試してみる

require 'rdf'
require 'linkeddata'
require 'sparql'

graph = RDF::Graph.load("http://dbpedia.org/resource/Elvis_Presley")
puts graph.size
puts graph.to_s

query = RDF::Query.new({
  :person => {
    RDF::URI("http://dbpedia.org/ontology/birthDate") => :birthDate,
    RDF::URI("http://dbpedia.org/ontology/deathDate") => :deathDate
  }
})

results = query.execute(graph)

puts results.first[:birthDate].to_s

sse = SPARQL.parse("SELECT ?o WHERE { ?s http://dbpedia.org/ontology/birthdate ?o }")
solutions = sse.execute(graph)
puts solutions.to_json #to_xml #to_html
puts solutions.to_xml #to_html
puts solutions.to_html

結果は

2025
http://dbpedia.org/resource/Elvis_Presley
1935-01-08
{"head":{"vars":["o"]},"results":{"bindings":[{"o":{"type":"literal","xml:lang":"en","value":"1935-01-08"}}]}}
<?xml version="1.0" encoding="UTF-8"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="o"/>
  </head>
  <results>
    <result>
      <binding name="o">
        <literal xml:lang="en">1935-01-08</literal>
      </binding>
    </result>
  </results>
</sparql>
<table class="sparql">
  <tbody>
    <tr>
      <th>o</th>
    </tr>
    <tr>
      <td>"1935-01-08"@en</td>
    </tr>
  </tbody>
</table>