Skip to content

Commit

Permalink
Fix JSON result decoding of language-tagged literals
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelotto committed Mar 12, 2018
1 parent 1d5749b commit 8d20e22
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/sparql/query/result/formats/json_decoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ defmodule SPARQL.Query.Result.JSON.Decoder do
defp decode_value(%{"type" => "uri", "value" => value}),
do: RDF.IRI.new(value)

defp decode_value(%{"type" => "literal", "value" => value}),
do: RDF.Literal.new(value)

defp decode_value(%{"type" => "literal", "value" => value, "xml:lang" => language}),
do: RDF.Literal.new(value, language: language)

defp decode_value(%{"type" => "literal", "value" => value}),
do: RDF.Literal.new(value)

defp decode_value(%{"type" => type, "value" => value, "datatype" => datatype})
when type in ~w[literal typed-literal],
do: RDF.Literal.new(value, datatype: datatype)
Expand Down
15 changes: 15 additions & 0 deletions test/sparql/query/result/json_decoder_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,21 @@ defmodule SPARQL.Query.Result.JSON.DecoderTest do
]}}
end

test "international characters in language-tagged literal" do
assert Query.Result.JSON.decode("""
{
"results": {
"bindings": [
{"name": { "type": "literal" , "xml:lang": "jp", "value": "東京" }}
]
}
}
""") == {:ok, %Query.ResultSet{results: [
%Query.Result{bindings: %{"name" => ~L"東京"jp,
}}
]}}
end

test "ASK result with non-boolean value" do
assert Query.Result.JSON.decode(~S[{"boolean": "foo"}]) ==
{:error, ~S[invalid boolean: "foo"]}
Expand Down

0 comments on commit 8d20e22

Please sign in to comment.