2013-06-11 13:03:03 -04:00
|
|
|
#!/usr/bin/ruby
|
|
|
|
=begin
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
=end
|
|
|
|
|
|
|
|
require 'rubygems'
|
|
|
|
require 'rdf'
|
|
|
|
require 'rdf/rdfxml'
|
|
|
|
require 'rdf/ntriples'
|
2013-06-11 16:27:43 -04:00
|
|
|
require 'rdf/n3'
|
2013-06-11 13:03:03 -04:00
|
|
|
|
|
|
|
include RDF
|
2013-06-21 14:58:28 -04:00
|
|
|
|
|
|
|
class UsageError < StandardError; end
|
|
|
|
class FilterError < StandardError; end
|
2013-06-11 13:03:03 -04:00
|
|
|
|
|
|
|
class LabelCommon
|
|
|
|
# ------------------------------------------------------------------------------------
|
|
|
|
private
|
|
|
|
# ------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------
|
|
|
|
public
|
|
|
|
# ------------------------------------------------------------------------------------
|
|
|
|
|
2013-06-21 14:58:28 -04:00
|
|
|
def self.load_filter(filter_file)
|
|
|
|
return lambda{|s| true} unless filter_file
|
|
|
|
return eval(IO.read(filter_file))
|
|
|
|
rescue
|
|
|
|
raise FilterError.new($!.message)
|
|
|
|
end
|
|
|
|
|
2013-06-11 13:03:03 -04:00
|
|
|
def initialize(rdf_file, &filter)
|
|
|
|
@filter = filter.nil? ? lambda{true} : filter
|
|
|
|
@graph = Graph.load(rdf_file)
|
|
|
|
end
|
|
|
|
|
|
|
|
def process(query, &filter)
|
|
|
|
solutions = query.execute(@graph)
|
|
|
|
solutions.filter!(&filter)
|
|
|
|
solutions.order(:prop)
|
|
|
|
end
|
|
|
|
end
|