apohllo.pl
więcej niż strona domowa...
 

ActiveRDF i dbpedia

Niech kod mówi sam za siebie :-)

require 'active_rdf'
pool = ConnectionPool.add_data_source :type => :sparql,
  :url => "http://dbpedia.org/sparql",
  :results => :sparql_xml, :engine => :virtuoso
Namespace.register(:dbpedia, 'http://dbpedia.org/')
Query.new.select(:x).where(:x, RDFS::Resource.new('http://www.w3.org/2000/01/rdf-schema#label'), 
  LocalizedString.new("Berlin","en")).execute

Pobieramy z DBpedii wszystkie zasoby, których etykieta w języku angielskim to “Berlin”

W dalszych przykładach zakładamy, że mamy już załadowany ActiveRDF oraz że dodaliśmy połączenia z DBpedią.

Query.new.distinct(:y).where(:x, RDFS::Resource.new('http://www.w3.org/2000/01/rdf-schema#label'),
  LocalizedString.new("Berlin","en")).
  where(:x,  RDFS::Resource.new('http://www.w3.org/2000/01/rdf-schema#comment'), :y).lang(:y,"pl").execute

Tutaj pobieramy komentarze w języku polskim dla zasobów, których polską etykietą jest “Berlin”.

Poniższy przykład ilustruje proponowane rozszerzenie biblioteki ActiveRDF, które może zostanie uwzględnione w jej kolejnej wersji:

rs = Query.new.distinct(:x).where(:x,
  RDFS::Resource.new('http://www.w3.org/2000/01/rdf-schema#label'),
  LocalizedString.new("Berlin","en")).execute
Query.new.distinct(:comment).where(rs[1],
  RDFS::Resource.new('http://www.w3.org/2000/01/rdf#comment',
  :comment).lang(:comment,"pl").execute

Zamiast ostatniego polecenia znacznie lepiej byłoby, gdybyśmy mogli napisać:

rs[1].comment{|query,object| query.lang(object,"pl")}
| Opublikowano 21:00 14-11-2008. Ostatnia modyfikacja 14:08 22-05-2010 |
comments powered by Disqus