2017-04-16 21:13:39 +00:00
|
|
|
defmodule RDF.LangString do
|
2017-06-09 22:18:39 +00:00
|
|
|
@moduledoc """
|
|
|
|
`RDF.Datatype` for RDF langString.
|
|
|
|
"""
|
|
|
|
|
2017-06-10 21:08:49 +00:00
|
|
|
use RDF.Datatype, id: RDF.uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString")
|
2017-04-16 21:13:39 +00:00
|
|
|
|
|
|
|
|
2017-04-23 21:41:29 +00:00
|
|
|
def build_literal(value, lexical, %{language: language} = opts) do
|
|
|
|
%Literal{super(value, lexical, opts) | language: String.downcase(language)}
|
2017-04-16 21:13:39 +00:00
|
|
|
end
|
|
|
|
|
2017-04-23 21:41:29 +00:00
|
|
|
def build_literal(_, _, _) do
|
2017-04-16 21:13:39 +00:00
|
|
|
raise ArgumentError, "datatype of rdf:langString requires a language"
|
|
|
|
end
|
|
|
|
|
2017-04-26 00:48:49 +00:00
|
|
|
|
|
|
|
def convert(value, _), do: to_string(value)
|
|
|
|
|
|
|
|
|
|
|
|
def valid?(%Literal{language: nil}), do: false
|
|
|
|
def valid?(literal), do: super(literal)
|
|
|
|
|
|
|
|
|
2017-04-16 21:13:39 +00:00
|
|
|
end
|