7.2 KiB
7.2 KiB
Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning and Keep a CHANGELOG.
Unreleased
Added
- top-level alias functions for constructors of the basic datatypes
- top-level constant functions
RDF.true
andRDF.false
for the two booleanRDF.Literal
values RDF.Decimal
datatype forxsd:decimal
literals and support for decimal literals in Turtle encoderRDF.Numeric
with a list of all numeric datatypes and shared functions for all numeric literals, eg. arithmetic functionsRDF.Datatype.cast/1
for casting betweenRDF.Literal
s as specified in the XSD spec- the logical operators and the Effective Boolean Value (EBV) coercion algorithm
from the XPath and SPARQL specs on
RDF.Boolean
- various functions on the
RDF.DateTime
andRDF.Time
datatypes RDF.term?/1
RDF.Term.coerce/1
which converts native Elixir values to a proper RDF termRDF.Term.equal?/2
andRDF.Term.equal_value?/2
RDF.LangString.match_language?/2
- possibility to configure an application-specific default base IRI; for now it
is used only on reading of RDF serializations (when no
base
specified) RDF.Literal.Guards
which allow pattern matching of common literal datatypes
Changed
- Elixir versions < 1.6 are no longer supported
RDF.resource?/1
does not fail anymore when called with unresolvable atoms but returnsfalse
insteadRDF.String.new/2
andRDF.String.new!/2
produce ardf:langString
when given a language tagRDF.IRI.absolute/2
returnsnil
if the given base is not absolute, instead of failing with aFunctionClauseError
- Some of the defined structs now enforce keys on compile-time (via Elixirs
@enforce_keys
feature) when not setting the corresponding fields would lead
to invalid structs, namely the following fields:RDF.IRI.value
RDF.BlankNode.id
RDF.Description.subject
RDF.List.head
Fixed
RDF.DateTime
andRDF.Time
store microsecondsRDF.DateTime
: '24:00:00' is a valid time in a xsd:dateTime; the dateTime value so represented is the first instant of the following dayRDF.LangString
: non-strings or the empty string as language produce invalid literals
0.4.1 - 2018-03-19
Added
RDF.Literal.new!/2
which fails when creating an invalid literal
Changed
RDF.Literal.new/2
can createrdf:langString
literals without failing, they
are simply invalid; if you want to fail without a language tag use the newRDF.Literal.new!/2
function
0.4.0 - 2018-03-10
Changed
- renamed
RDF.Serialization
behaviour toRDF.Serialization.Format
; the newRDF.Serialization
module contains just simple RDF serialization related functions - renamed
RDF.Serialization.Format.content_type/0
toRDF.Serialization.Format.media_type/0
- moved
RDF.Reader
andRDF.Writer
intoRDF.Serialization
module - removed the limitation to serialization formats defined in the core RDF.ex package
for use as a source of
RDF.Vocabulary.Namespace
s; so you can now also define vocabulary namespaces from JSON-LD files for example, provided that the corresponding Hex package is defined as a dependency
Added
RDF.Serialization.Format
s define aname
atom- all
RDF.Serialization.Reader
andRDF.Serialization.Writer
functions are now available on theRDF.Serialization
module (or aliased on the top-levelRDF
module) and the format can be specified instead of aRDF.Serialization.Format
argument, via theformat
ormedia_type
option or in case of*_file
functions, without explicit specification of the format, but inferred from file name extension instead; see the updated README section about RDF serializations - the following functions to access available
RDF.Serialization.Format
s:RDF.Serialization.formats/0
RDF.Serialization.available_formats/0
RDF.Serialization.format/1
RDF.Serialization.format_by_media_type/1
RDF.Serialization.format_by_extension/1
0.3.1 - 2018-01-19
Added
Collectable
implementations for allRDF.Data
structures so they can be used as destinations ofEnum.into
andfor
comprehensions
Fixed
- Fix
unescape_map
inparse_helper
for Elixir 1.6 (@ajkeys)
0.3.0 - 2017-08-24
Added
RDF.IRI
as a more suitable URI/IRI representation for RDF, bringing enormous performance and memory consumption benefits (see here for the details about the improvements)
Changed
- use
RDF.IRI
instead of ElixirsURI
everywhere - use the term iri instead of uri consistently, leading to the following
function renamings:
base_iri
instead ofbase_uri
for the definition ofRDF.Vocabulary.Namespace
s__base_iri__
instead of__base_uri__
in allRDF.Vocabulary.Namespace
s__iris__
instead of__uris__
in allRDF.Vocabulary.Namespace
sRDF.IRI.InvalidError
instead ofRDF.InvalidURIError
RDF.Literal.InvalidError
instead ofRDF.InvalidLiteralError
RDF.Namespace.InvalidVocabBaseIRIError
instead ofRDF.Namespace.InvalidVocabBaseURIError
- show compilation message of vocabulary namespaces always to be able to relate resp. errors and warnings
Fixed
- when trying to resolve a term from an undefined module a
RDF.Namespace.UndefinedTermError
exception
0.2.0 - 2017-08-12
Added
- full Turtle support
RDF.List
structure for the representation of RDF listsdescribes?/1
onRDF.Data
protocol and all RDF data structures which checks
if statements about a given resource existRDF.Data.descriptions/1
which returns all descriptions within a RDF data structureRDF.Description.first/2
which returns a single object to a predicate of aRDF.Description
RDF.Description.objects/2
now supports a custom filter functionRDF.bnode?/1
which checks if the given value is a blank node
Changed
- Rename
RDF.Statement.convert*
functions toRDF.Statement.coerce*
- Don't support Elixir versions < 1.4
Fixed
RDF.uri/1
and URI parsing of N-Triples and N-Quads decoders preserve empty fragments- booleans weren't recognized as coercible literals on object positions
- N-Triples and N-Quads decoder didn't handle escaping properly
0.1.1 - 2017-06-25
Fixed
- Add
src
directory to package files.
0.1.0 - 2017-06-25
Initial release
Note: This version is not usable, since the src
directory is not part of the
package, which has been immediately fixed on version 0.1.1.