Class: Grom::Reader
- Inherits:
-
Object
- Object
- Grom::Reader
- Defined in:
- lib/grom/reader.rb
Overview
Reads n-triple data and passes it to a Grom::Builder instance to create objects
Instance Attribute Summary collapse
-
#data ⇒ String
readonly
n-triple data.
-
#edges_by_subject ⇒ Hash
readonly
subjects connected to objects which are uris via their predicates.
-
#objects ⇒ Array
readonly
Grom::Node objects generated from n-triple data.
-
#statements_by_subject ⇒ Hash
readonly
statements grouped by subject.
Instance Method Summary collapse
-
#initialize(data, decorators = nil) ⇒ Reader
constructor
A new instance of Reader.
-
#read_data ⇒ Grom::Reader
Reads the n-triple data and separates the statements by subject.
Constructor Details
Instance Attribute Details
#data ⇒ String (readonly)
n-triple data.
9 10 11 |
# File 'lib/grom/reader.rb', line 9 def data @data end |
#edges_by_subject ⇒ Hash (readonly)
subjects connected to objects which are uris via their predicates.
9 10 11 |
# File 'lib/grom/reader.rb', line 9 def edges_by_subject @edges_by_subject end |
#objects ⇒ Array (readonly)
Grom::Node objects generated from n-triple data.
9 10 11 |
# File 'lib/grom/reader.rb', line 9 def objects @objects end |
#statements_by_subject ⇒ Hash (readonly)
statements grouped by subject.
9 10 11 |
# File 'lib/grom/reader.rb', line 9 def statements_by_subject @statements_by_subject end |
Instance Method Details
#read_data ⇒ Grom::Reader
Reads the n-triple data and separates the statements by subject.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/grom/reader.rb', line 25 def read_data @statements_by_subject = {} @edges_by_subject = {} RDF::NTriples::Reader.new(@data) do |reader| reader.each_statement do |statement| subject = statement.subject.to_s Grom::Helper.lazy_array_insert(@statements_by_subject, subject, statement) predicate = statement.predicate.to_s object_is_possible_link = statement.object.uri? || statement.object.is_a?(RDF::Node) predicate_is_not_a_type_definition = predicate != RDF.type.to_s if object_is_possible_link && predicate_is_not_a_type_definition predicate = Grom::Helper.get_id(predicate) @edges_by_subject[subject] ||= {} @edges_by_subject[subject][predicate] ||= [] @edges_by_subject[subject][predicate] << statement.object.to_s end end end self end |