Add RDF.Description.take/2
This commit is contained in:
parent
9e81f69636
commit
cf568dd06e
3 changed files with 28 additions and 1 deletions
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -5,6 +5,19 @@ This project adheres to [Semantic Versioning](http://semver.org/) and
|
||||||
[Keep a CHANGELOG](http://keepachangelog.com).
|
[Keep a CHANGELOG](http://keepachangelog.com).
|
||||||
|
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `RDF.Description.take/2` creates a description from another one by limiting
|
||||||
|
its statements to a set of predicates
|
||||||
|
- Mix formatter configuration for using `defvocab` without parens
|
||||||
|
|
||||||
|
|
||||||
|
[Compare v0.6.2...HEAD](https://github.com/marcelotto/rdf-ex/compare/v0.6.2...HEAD)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 0.6.2 - 2019-09-08
|
## 0.6.2 - 2019-09-08
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -616,6 +616,15 @@ defmodule RDF.Description do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Creates a description from another one by limiting its statements to those using one of the given `predicates`.
|
||||||
|
|
||||||
|
If `predicates` contains properties that are not used in the `description`, they're simply ignored.
|
||||||
|
"""
|
||||||
|
def take(%RDF.Description{predications: predications} = description, predicates) do
|
||||||
|
predicates = Enum.map(predicates, &(coerce_predicate/1))
|
||||||
|
%RDF.Description{description | predications: Map.take(predications, predicates)}
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Checks if two `RDF.Description`s are equal.
|
Checks if two `RDF.Description`s are equal.
|
||||||
|
|
|
@ -144,7 +144,6 @@ defmodule RDF.DescriptionTest do
|
||||||
refute description_includes_predication(desc, {EX.predicate, iri(EX.Object3)})
|
refute description_includes_predication(desc, {EX.predicate, iri(EX.Object3)})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
test "another description" do
|
test "another description" do
|
||||||
desc = description([{EX.predicate1, EX.Object1}, {EX.predicate2, EX.Object2}])
|
desc = description([{EX.predicate1, EX.Object1}, {EX.predicate2, EX.Object2}])
|
||||||
|> Description.add(Description.new({EX.Other, EX.predicate3, EX.Object3}))
|
|> Description.add(Description.new({EX.Other, EX.predicate3, EX.Object3}))
|
||||||
|
@ -358,6 +357,12 @@ defmodule RDF.DescriptionTest do
|
||||||
%{p: ["Foo"]}
|
%{p: ["Foo"]}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "take/2" do
|
||||||
|
assert Description.new([{EX.S, EX.p1, EX.O1}, {EX.S, EX.p2, EX.O2}])
|
||||||
|
|> Description.take([EX.p2, EX.p3]) ==
|
||||||
|
Description.new({EX.S, EX.p2, EX.O2})
|
||||||
|
end
|
||||||
|
|
||||||
test "equal/2" do
|
test "equal/2" do
|
||||||
assert Description.new({EX.S, EX.p, EX.O}) |> Description.equal?(Description.new({EX.S, EX.p, EX.O}))
|
assert Description.new({EX.S, EX.p, EX.O}) |> Description.equal?(Description.new({EX.S, EX.p, EX.O}))
|
||||||
refute Description.new({EX.S, EX.p, EX.O}) |> Description.equal?(Description.new({EX.S, EX.p, EX.O2}))
|
refute Description.new({EX.S, EX.p, EX.O}) |> Description.equal?(Description.new({EX.S, EX.p, EX.O2}))
|
||||||
|
|
Loading…
Reference in a new issue