Sha256: cf7d350279f6ce970cd8aeec00816d5f9652084337baa4f6c88a77c8c649cce0
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
module RDF::N3::Algebra::Log ## # Takes a list of two strings creates a language-tagged literal. class LangLit < RDF::N3::Algebra::ListOperator NAME = :langlit URI = RDF::N3::Log.langlit ## # Reads the subject into the object. # # Returns nil if resource does not validate, given its position # # @param [RDF::N3::List] resource # @return [RDF::Term] def resolve(resource, position: :subject) case position when :subject RDF::Literal(as_literal(resource.first).to_s, language: resource.last.to_s.to_sym) when :object return nil unless resource.literal? || resource.variable? resource end end def validate(list) if super(list) if list.length != 2 log_error(NAME) {"operand is not a list with two elements: #{list.to_sxp}"} false elsif !list.last.to_s.match?(/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/) log_warn(NAME) {"second component of subject should be BCP47 language tag: #{list.last.to_sxp}"} false else true end else false end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rdf-n3-3.3.0 | lib/rdf/n3/algebra/log/langlit.rb |
rdf-n3-3.2.1 | lib/rdf/n3/algebra/log/langlit.rb |
rdf-n3-3.2.0 | lib/rdf/n3/algebra/log/langlit.rb |