All Versions
20
Latest Version
Avg Release Cycle
62 days
Latest Release
1454 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v0.8.2 Changes
September 21, 2020โ Added
- the Turtle encoder can now produce partial Turtle documents with the
:only
option and any combination of the following values::triples
,:directives
,:base
,:prefixes
- ๐
the style of the Turtle directives produced by the Turtle encoder can be
switched to SPARQL style with the option
:directive_style
and the value:sparql
- ๐ the most common conflict resolution strategies on
RDF.PrefixMap.merge/3
can now be chosen directly with the atoms:ignore
and:overwrite
- ๐
RDF.PrefixMap.prefixed_name/2
to convert an IRI to a prefixed name RDF.PrefixMap.prefixed_name_to_iri/2
to convert a prefixed name to an IRI
๐ Changed
- ๐ when serializing a
RDF.Dataset
with the Turtle encoder the prefixes of all of its graphs are used now
๐ Fixed
- โ adding an empty
RDF.Description
with a subject to an emptyRDF.Graph
resulted in an invalid non-empty graph (@pukkamustard)
- the Turtle encoder can now produce partial Turtle documents with the
-
v0.8.1 Changes
June 16, 2020โ Added
- ๐ query functions for basic graph pattern matching (incl. streaming-support)
-
v0.8.0 Changes
June 01, 2020๐ RDF literals and their datatypes were completely redesigned to support derived XSD datatypes and ๐ allow for defining custom datatypes. โก๏ธ For an introduction on how literals work now read the updated page on literals in the guide. โฌ๏ธ For more details on how to migrate from an earlier version read this wiki page.
โ Added
- a lot of new datatypes like
xsd:float
,xsd:byte
orxsd:anyURI
-- all numeric XSD datatypes are now available; see this page of the API documentation for an up-to-date list of all supported and missing XSD datatypes - an implementation of XSD facet system now makes it easy to define own custom datatypes via restriction of the existing XSD datatypes
- โก๏ธ
RDF.Literal.update/2
updates the value of aRDF.Literal
without changing anything else, eg. the language or datatype
๐ Changed
- the
RDF.Literal
struct now consists entirely of a datatype-specific structs in theliteral
field, which besides being more memory-efficient (since literals no longer consist of all possible fields a literal might have), allows pattern matching now on the datatype of literals. - RDF XSD datatypes are now defined in the
RDF.XSD
namespace - alias constructor functions for the XSD datatypes are now defined on
RDF.XSD
matches?
,less_than?
,greater_than
as higher level functions were removed from theRDF.Literal.Datatype
modulesless_than?
,greater_than?
now always return a boolean and no longernil
when incomparable; you can still determine if two terms are comparable by checking ifcompare/2
returnsnil
- ๐ the
language
option is not supported on theRDF.XSD.String.new/2
constructor - the
language
option onRDF.Literal.new/2
is no longer ignored if it's empty (nil
or""
), so this either produces an invalidRDF.LangString
now or, if anotherdatatype
is provided will fail with anArgumentError
canonical
now performs implicit coercions when passed plain Elixir values- the inspect format for literals was changed and is now much more informative and uniform, since you now always see the value, the lexical form and if the literal is valid
RDF.Namespace.resolve_term/1
now returns ok or error tuples, but a new functionRDF.Namespace.resolve_term!/1
with the old behaviour was added- ๐ Elixir versions < 1.8 are no longer supported
๐ Fixed
- numeric operations on invalid numeric literals no longer fail, but return
nil
instead - Datetimes preserve the original lexical form of the timezone when casting from a date
- โ BEAM error warnings when trying to use top-level modules as vocabulary terms
- a lot of new datatypes like
-
v0.7.1 Changes
March 11, 2020โ Added
- โ proper typespecs so that Dialyzer passes without warnings (@rustra)
๐ Fixed
RDF.XSD.Time
didn't handle 24h overflows with an offset correctly
-
v0.7.0 Changes
November 22, 2019โ Added
RDF.Diff
data structure for diffs between RDF graphs and descriptions- โก๏ธ
RDF.Description.update/4
updates the objects of a predicate in a description with a custom update function - โก๏ธ
RDF.Graph.update/4
updates the descriptions of a subject in a graph with a custom update function RDF.Description.take/2
creates a description from another one by limiting its statements to a set of predicatesRDF.Graph.take/3
creates a graph from another one by limiting its statements to a set of subjects and optionally also a set of predicates- ๐
RDF.Graph.clear/1
removes the triples from a graph - ๐ง Mix formatter configuration for using
defvocab
without parens
๐ Changed
RDF.Serialization.Writer.write_file/4
which is the basis used by all thewrite_file/3
andwrite_file!/3
functions of all serialization format modules likeRDF.NTriples
,RDF.Turtle
,JSON.LD
etc. now opens file in a different mode: it no longer opens them with the:utf8
option. First, this by default slowed down the writing, but more importantly could lead to unexpected encoding issues. This is a breaking change: If your code relied on this file mode, you can get the old behaviour, by specifying thefile_mode
on these functions accordingly as[:utf8, :write, :exclusive]
. For example, to write a Turtle file with the old behaviour, you can do it like this:
RDF.Turtle.write_file!(some_data, some_path, file_mode: ~w[utf8 write exclusive]a)
-
v0.6.2 Changes
September 08, 2019โ Added
- field
base_iri
onRDF.Graph
structure which can be set via newbase_iri
option onRDF.Graph.new
or the new functionsRDF.Graph.set_base_iri/2
andRDF.Graph.clear_base_iri/1
- ๐
RDF.Graph.clear_metadata/1
which clears the base IRI and the prefixes RDF.IRI.coerce_base/1
which coerces base IRIs; as opposed toRDF.IRI.new/1
it also accepts bareRDF.Vocabulary.Namespace
modules
๐ Changed
RDF.Turtle.Decoder
saves the base IRI in theRDF.Graph
nowRDF.Turtle.Encoder
now takes the base IRI to be used during serialization in
the following order of precedence:- from the
base
option or its new aliasbase_iri
- from the
base_iri
field of the given graph - from the
RDF.default_base_iri
returning the one from the application configuration
- from the
RDF.PrefixMap.new
andRDF.PrefixMap.add
now also accepts terms fromRDF.Vocabulary.Namespace
s as namespaces
๐ Fixed
- Vocabulary namespace modules weren't always detected properly
- field
-
v0.6.1 Changes
July 15, 2019โ Added
RDF.IRI.to_string/1
returns the string representation of anRDF.IRI
(implicitly resolving vocabulary namespace terms)RDF.Literal.matches?/3
for XQuery regex pattern matchingRDF.Decimal.digit_count/1
andRDF.Decimal.fraction_digit_count/1
for
determining the number of digits of decimal literals
๐ Fixed
- ๐ language literals were not properly unescaped during Turtle parsing
RDF.Literal.new/1
can take decimals and infers the datatypexsd:decimal
correctlytrue
andfalse
with capital letters are no longer validRDF.Boolean
s following the XSD specification; the same applies for booleans in Turtle+INF
is no longer a validRDF.Double
(positive infinity doesn't expect a sign)- ๐ slightly improve output of errors during parsing of Turtle, N-Triples and N-Quads
-
v0.6.0 Changes
April 06, 2019โฌ๏ธ see here for โฌ๏ธ upgrading notes to RDF.ex 0.6
โ Added
RDF.PrefixMap
- prefix management of
RDF.Graph
s:- the structure now has a
prefixes
field with an optionalRDF.PrefixMap
- new functions
add_prefixes/2
,delete_prefixes/2
andclear_prefixes/1
- the structure now has a
- ๐ง configurable
RDF.default_prefixes
RDF.Description.equal?/2
,RDF.Graph.equal?/2
,RDF.Dataset.equal?/2
andRDF.Data.equal?/2
๐ Changed
- the constructor functions for
RDF.Graph
s andRDF.Dataset
s now take the graph name resp. dataset name through aname
option, instead of the first argument - ๐
RDF.Graph.new
supports an additionalprefixes
argument to initialize theprefixes
field - when
RDF.Graph.add
andRDF.Graph.put
are called with another graph, its prefixes are merged - ๐
RDF.Turtle.Decoder
saves the prefixes now - ๐
RDF.Turtle.Encoder
now takes the prefixes to be serialized in the following order of precedence:- from the
prefixes
option (as before) - from the
prefixes
field of the given graph - from the
RDF.default_prefixes
- from the
- โฌ๏ธ drop support for OTP < 20, since prefixes can consist of UTF characters which
are not supported in atoms on these versions
-
v0.5.4 Changes
January 17, 2019๐ Fixed
- issue with Elixir 1.8
RDF.write_file
andRDF.write_file!
delegators had wrong signatures
-
v0.5.3 Changes
November 11, 2018โ Added
RDF.Triple.valid?/1
,RDF.Quad.valid?/1
andRDF.Statement.valid?/1
, which validate if a tuple is a valid RDF triple or RDF quad