3
# Example of use of the Korundum soprano bindings, trying to mimic sopranocmd.
4
# Translated from Python to Ruby by Richard Dale
6
# Copyright (c) 2009 Olivier Berger + Institut T�l�com, released under
8
# Copyright (c) 2009 Richard Dale
14
opts = GetoptLong.new(
15
[ "--help", "-H", GetoptLong::REQUIRED_ARGUMENT ],
16
[ "--backend", "-b", GetoptLong::REQUIRED_ARGUMENT ],
17
[ "--dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
18
[ "--port", "-p", GetoptLong::REQUIRED_ARGUMENT ],
19
[ "--host", "-h", GetoptLong::REQUIRED_ARGUMENT ],
20
[ "--username", "-U", GetoptLong::REQUIRED_ARGUMENT ],
21
[ "--password", "-P", GetoptLong::REQUIRED_ARGUMENT ],
22
[ "--settings", "-S", GetoptLong::REQUIRED_ARGUMENT ],
23
[ "--serialization", "-s", GetoptLong::REQUIRED_ARGUMENT ]
26
backendOpt = dirOpt = portOpt = hostOpt = usernameOpt = passwordOpt = settingsOpt = serializationOpt = nil
28
opts.each do |opt, arg|
45
when '--serialization'
46
serializationOpt = arg
52
if !['query', 'list'].include? command
53
$stderr.puts "Error: unknown command #{command}"
61
backend = Soprano.discoverBackendByName(backendOpt)
64
settings << Soprano::BackendSetting.new(Soprano::BackendOptionHost, hostOpt)
65
settings << Soprano::BackendSetting.new(Soprano::BackendOptionPort, portOpt)
66
settings << Soprano::BackendSetting.new(Soprano::BackendOptionUsername, usernameOpt)
67
settings << Soprano::BackendSetting.new(Soprano::BackendOptionPassword, passwordOpt)
68
model = backend.createModel(settings)
71
result = model.executeQuery(query, Soprano::Query::QueryLanguageSparql)
73
result.each do |binding_set|
74
binding_set.bindingNames.each do |name|
75
puts "#{binding_set.value(name).inspect}"
78
elsif command == 'list'
79
statements = model.listStatements
80
statements.each do |statement|
81
puts "#{statement.subject.toN3} - #{statement.predicate.toN3} - #{statement.object.toN3}"
85
# kate: space-indent on; indent-width 2; replace-tabs on; mixed-indent off;