Module: ActiveSesame::ResultParser
- Defined in:
- lib/active_sesame/result_parser.rb
Class Method Summary collapse
- .hash_values(xml_document) ⇒ Object
- .singular_values(xml_document) ⇒ Object
-
.tableize(xml_document) ⇒ Object
def ResultParser.append_features(someClass).
- .type_cast_literal(literal_element) ⇒ Object
- .value_from_binding(binding) ⇒ Object
Class Method Details
.hash_values(xml_document) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/active_sesame/result_parser.rb', line 26 def self.hash_values(xml_document) xml_document = REXML::Document.new(xml_document) if xml_document.class == String keys = [] xml_document.elements.each("/sparql/head/variable") do |variable| keys << variable.attributes["name"] end xml_document = REXML::Document.new(xml_document) if xml_document.class == String hash = {} xml_document.elements.each("/sparql/results/result") do |result| hash[result.elements["binding[@name='#{keys[0]}']/uri|literal"].text] = result.elements["binding[@name='#{keys[1]}']/uri|literal"].text end return hash end |
.singular_values(xml_document) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/active_sesame/result_parser.rb', line 19 def self.singular_values(xml_document) xml_document = self.to_document(xml_document) values = [] xml_document.find("/sparql/results/result/binding").each {|binding| values << self.value_from_binding(binding) } return values end |
.tableize(xml_document) ⇒ Object
def ResultParser.append_features(someClass)
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/active_sesame/result_parser.rb', line 5 def self.tableize(xml_document) xml_document = self.to_document(xml_document) rows = [] xml_document.find("/sparql/results/result").each do |result| hash = {} result.each_element do |binding| key = binding.attributes.to_h["name"] hash[key] = value_from_binding(binding) end rows << hash end return rows end |
.type_cast_literal(literal_element) ⇒ Object
50 51 52 53 54 |
# File 'lib/active_sesame/result_parser.rb', line 50 def self.type_cast_literal(literal_element) #puts literal_element.attributes["datatype"] #Use when Exception thrown "nil is not a Symbol" return literal_element.content.send(RDFConstants.literal_to_proc_hash[literal_element.attributes.to_h["datatype"]]) if literal_element.attributes.to_h["datatype"] return literal_element.text end |
.value_from_binding(binding) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/active_sesame/result_parser.rb', line 40 def self.value_from_binding(binding) literal = binding.find_first("literal") uri = binding.find_first("uri") if uri uri.content elsif literal type_cast_literal(literal) end end |