sign in
Home | Updates | Pages | Users | Admin | Help

GettingStartedCode

Full Code for the Examples

Just copy the code from one example to somefile.rb on your system, and run it with “ruby somefile.rb”.

Code for the Read-Only Example

require 'rubygems'
require 'active_rdf'

ConnectionPool.add_data_source :type => :sparql, :url => "http://m3pe.org:8080/repositories/test-people", :results => :sparql_xml

# we need to register a short-hand notation for the namespace used in this test data 
Namespace.register :test, 'http://activerdf.org/test/'

# after registering the namespace, we now tell the ObjectManager to search for all 
# RDFS classes in the triple store, and construct corresponding Ruby classes, 
# so that there is no difference between constructing standard Ruby objects, and
# Ruby objects, which are completly backed by the triple store
ObjectManager.construct_classes

# we can access all RDF properties of a person as Ruby attributes:
eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
puts eyal.age
puts eyal.eye
puts eyal.class

# lets create an instance of one of the classes, that were constructed in that way
# armin will be of rdfs:type test:person
armin = TEST::Person.new 'http://armin-haller.com/#me'

# we cannot change anything, since SPARQL endpoints have just read-only access

# now lets search for something in the triple store
all_resources = RDFS::Resource.find_all

# print all the people, and their friends
all_people = TEST::Person.find_all
all_people.each do |person|
  puts "#{person} has #{person.eye} eyes" 
end

# find all people aged 27
almost_thirties = TEST::Person.find_by_age(27)
puts "the following people are almost thirty: #{almost_thirties}" 

Code for the Read-And-Write Example

require 'rubygems'
require 'active_rdf'

# open an empty, in-memory RDFLite triple store
adapter = ConnectionPool.add_data_source :type => :rdflite
# alternatively to use redland: adapter = ConnectionPool.add_data_source :type => :redland

# now load the test data file into the triple store
adapter.load "/tmp/test_person_data.nt" 

# register the namespace, like above
Namespace.register(:test, 'http://activerdf.org/test/')

# construct the necessary Ruby Modules and Classes to use the Namespace
ObjectManager.construct_classes

# we want to access the properties of this URI    
eyal = TEST::Person.new 'http://activerdf.org/test/eyal'

# now we can read the age associated with eyal
puts eyal.age
# prints "27" 

# lets try to write a new age
eyal.age = 18

# if we now output the age again, there will be two values for it
# because there is no way to decide which one is the real age
# however, this behaviour might change in the future..
puts eyal.age  
# prints "18,27" 

Powered by JunebugWiki v0.0.31 Page last edited by ikbeneyal on August 28, 2007 04:56 PM (diff)
Version 2 «oldernewer»currentversions