/var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:340:in `ensure_curie': undefined method `split' for :license:Symbol (NoMethodError)
in the line:
340 if get_curie(resource) == resource.to_s || get_curie(resource).split(':', 2).last =~ /[\.#]/
with the HTML code:
<a rel="license" href="...">...</a>
This appears to be because get_curie(resource) is returning XHV.license instead of XHV.license.to_s. I suspect this issue triggered after updating ruby from 1.9.1 to 2.1.
Details
I am getting the error:
/var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:340:in `ensure_curie': undefined method `split' for :license:Symbol (NoMethodError)
from /var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:334:in `preprocess_statement'
from /var/lib/gems/2.1.0/gems/rdf-rdfa-1.1.4/lib/rdf/rdfa/writer.rb:392:in `block in preprocess'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:341:in `call'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:341:in `block (4 levels) in query_pattern'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:339:in `each'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:339:in `block (3 levels) in query_pattern'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:336:in `each'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:336:in `block (2 levels) in query_pattern'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:333:in `each'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:333:in `block in query_pattern'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:330:in `each'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/repository.rb:330:in `query_pattern'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/mixin/queryable.rb:85:in `query'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/model/graph.rb:248:in `each'
from /var/lib/gems/2.1.0/gems/rdf-rdfa-1.1.4/lib/rdf/rdfa/writer.rb:392:in `preprocess'
from /var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:314:in `preprocess'
from /var/lib/gems/2.1.0/gems/rdf-rdfa-1.1.4/lib/rdf/rdfa/writer.rb:172:in `write_epilogue'
from /var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:98:in `write_epilogue'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/writer.rb:226:in `initialize'
from /var/lib/gems/2.1.0/gems/rdf-rdfa-1.1.4/lib/rdf/rdfa/writer.rb:106:in `initialize'
from /var/lib/gems/2.1.0/gems/rdf-rdfxml-1.1.1/lib/rdf/rdfxml/writer.rb:82:in `initialize'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/writer.rb:171:in `new'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/writer.rb:171:in `block in open'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/writer.rb:167:in `open'
from /var/lib/gems/2.1.0/gems/rdf-1.1.6/lib/rdf/writer.rb:167:in `open'
from .../reecedunn.co.uk/_plugins/rdf_generator.rb:42:in `write'
in the code:
# Load the RDF data from the RDFa file.
@graph = RDF::Graph.load(@src, :prefixes => @prefixes, :base_uri => @base_uri)
# Remove WAI-ARIA roles from the RDF graph.
@graph.delete([nil, RDF::XHV.role, RDF::XHV.banner])
@graph.delete([nil, RDF::XHV.role, RDF::XHV.main])
@graph.delete([nil, RDF::XHV.role, RDF::XHV.navigation])
RDF::Writer.open(dest_path, :prefixes => @metadata.prefixes, :max_depth => 1) do |writer|
@metadata.graph.each_statement do |statement|
writer << statement
end
end
where @metadata.prefixes comes from the following YAML data:
Printing statement.predicate for this outputs http://www.w3.org/1999/xhtml/vocab#license as expected. Also, changing this to rel="s:license" does not trigger the error.
Summary
I am getting the error:
in the line:
with the HTML code:
This appears to be because
get_curie(resource)
is returningXHV.license
instead ofXHV.license.to_s
. I suspect this issue triggered after updating ruby from 1.9.1 to 2.1.Details
I am getting the error:
in the code:
where
@metadata.prefixes
comes from the following YAML data:This was working before I upgraded (not sure if the issue is triggered by upgrading ruby or rdf-rdfxml).
The issue is triggered with the following HTML:
Printing
statement.predicate
for this outputshttp://www.w3.org/1999/xhtml/vocab#license
as expected. Also, changing this torel="s:license"
does not trigger the error.