Skip to content

Commit 6b5af33

Browse files
committed
Don't implement Writer#write_statement, but consolidate internal logic in #write_quad. This allows Duplicate BNodes to be de-dupped.
1 parent 9fa4bda commit 6b5af33

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

lib/json/ld/writer.rb

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -141,32 +141,15 @@ def initialize(output = $stdout, options = {}, &block)
141141
end
142142
end
143143

144-
##
145-
# Adds a statement to be serialized
146-
# @param [RDF::Statement] statement
147-
# @return [void]
148-
def write_statement(statement)
149-
if statement.incomplete?
150-
log_error "Statement #{statement.inspect} is incomplete"
151-
elsif validate? && statement.invalid?
152-
log_error "Statement #{statement.inspect} is invalid"
153-
elsif @options[:stream]
154-
stream_statement(statement)
155-
else
156-
@repo.insert(statement)
157-
end
158-
end
159-
160144
##
161145
# Addes a triple to be serialized
162146
# @param [RDF::Resource] subject
163147
# @param [RDF::URI] predicate
164148
# @param [RDF::Value] object
165149
# @return [void]
166-
# @raise [NotImplementedError] unless implemented in subclass
167150
# @abstract
168151
def write_triple(subject, predicate, object)
169-
write_statement(Statement.new(subject, predicate, object))
152+
write_quad(subject, predicate, object, nil)
170153
end
171154

172155
##
@@ -177,7 +160,12 @@ def write_triple(subject, predicate, object)
177160
# @param [RDF::Term] object
178161
# @return [void]
179162
def write_quad(subject, predicate, object, graph_name)
180-
write_statement(Statement.new(subject, predicate, object, graph_name: graph_name))
163+
statement = RDF::Statement.new(subject, predicate, object, graph_name: graph_name)
164+
if @options[:stream]
165+
stream_statement(statement)
166+
else
167+
@repo.insert(statement)
168+
end
181169
end
182170

183171
##

0 commit comments

Comments
 (0)