2017-06-25 18:33:45 +00:00
|
|
|
# Change Log
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
This project adheres to [Semantic Versioning](http://semver.org/) and
|
|
|
|
[Keep a CHANGELOG](http://keepachangelog.com).
|
|
|
|
|
|
|
|
|
2019-03-25 23:31:43 +00:00
|
|
|
## Unreleased
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- `RDF.PrefixMap`
|
|
|
|
|
|
|
|
|
|
|
|
[Compare v0.5.4...HEAD](https://github.com/marcelotto/rdf-ex/compare/v0.5.4...HEAD)
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-01-17 19:19:07 +00:00
|
|
|
## 0.5.4 - 2019-01-17
|
2018-11-18 20:19:11 +00:00
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
2019-01-17 19:19:07 +00:00
|
|
|
- issue with Elixir 1.8
|
2018-11-18 20:19:11 +00:00
|
|
|
- `RDF.write_file` and `RDF.write_file!` delegators had wrong signatures
|
|
|
|
|
|
|
|
|
2019-01-17 19:19:07 +00:00
|
|
|
[Compare v0.5.3...v0.5.4](https://github.com/marcelotto/rdf-ex/compare/v0.5.3...v0.5.4)
|
2018-11-18 20:19:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-11-11 12:21:00 +00:00
|
|
|
## 0.5.3 - 2018-11-11
|
2018-11-11 01:30:25 +00:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- `RDF.Triple.valid?/1`, `RDF.Quad.valid?/1` and `RDF.Statement.valid?/1`, which
|
|
|
|
validate if a tuple is a valid RDF triple or RDF quad
|
|
|
|
|
|
|
|
|
2018-11-11 12:21:00 +00:00
|
|
|
[Compare v0.5.2...v0.5.3](https://github.com/marcelotto/rdf-ex/compare/v0.5.2...v0.5.3)
|
2018-11-11 01:30:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-11-04 21:41:53 +00:00
|
|
|
## 0.5.2 - 2018-11-04
|
2018-10-04 22:58:34 +00:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- `RDF.Term.value/1` returning the native Elixir value of a RDF term
|
2018-10-21 22:52:22 +00:00
|
|
|
- `RDF.Statement.values/1`, `RDF.Triple.values/1` and `RDF.Quad.values/1`
|
|
|
|
returning a tuple of `RDF.Term.value/1` converted native Elixir values from a
|
|
|
|
tuple of RDF terms
|
2018-10-28 02:50:48 +00:00
|
|
|
- `RDF.Description.values/1`, `RDF.Graph.values/1`, `RDF.Dataset.values/1` and
|
|
|
|
`RDF.Data.values/1` returning a map of `RDF.Term.value/1` converted native
|
|
|
|
Elixir values from the respective structure of RDF terms
|
2018-11-04 21:27:25 +00:00
|
|
|
- for all of aforementioned `values/1` functions a variant `values/2` which
|
|
|
|
allows to specify custom mapping function to be applied when creating the resp.
|
|
|
|
structure
|
2018-11-02 21:00:48 +00:00
|
|
|
- `RDF.Literal.compare/2`, `RDF.Literal.less_than?/2` and `RDF.Literal.greater_than?/2`
|
|
|
|
for `RDF.Datatype` aware comparisons of `RDF.Literal`s
|
2018-10-04 22:58:34 +00:00
|
|
|
|
2018-10-25 22:57:30 +00:00
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
2018-11-04 14:54:49 +00:00
|
|
|
- `RDF.DateTime.equal_value?/2` and `RDF.Date.equal_value?/2` did not handle
|
|
|
|
timezones correctly
|
2018-11-04 03:02:36 +00:00
|
|
|
- `-00:00` is a valid timezone offset on `RDF.DateTime`
|
2018-10-25 22:57:30 +00:00
|
|
|
|
|
|
|
|
2018-11-04 21:41:53 +00:00
|
|
|
[Compare v0.5.1...v0.5.2](https://github.com/marcelotto/rdf-ex/compare/v0.5.1...v0.5.2)
|
2018-10-04 22:58:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-09-17 13:10:44 +00:00
|
|
|
## 0.5.1 - 2018-09-17
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- generated Erlang output files of Leex and Yecc are excluded from Hex package
|
|
|
|
|
2018-10-25 22:57:30 +00:00
|
|
|
|
2018-09-17 13:10:44 +00:00
|
|
|
[Compare v0.5.0...v0.5.1](https://github.com/marcelotto/rdf-ex/compare/v0.5.0...v0.5.1)
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-09-17 01:32:45 +00:00
|
|
|
## 0.5.0 - 2018-09-17
|
2018-04-07 20:59:03 +00:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
2018-09-17 01:28:12 +00:00
|
|
|
- Possibility to execute simple SPARQL queries against `RDF.Graph`s with
|
|
|
|
[SPARQL 0.2](https://github.com/marcelotto/sparql-ex/blob/master/CHANGELOG.md)
|
|
|
|
- New `RDF.Term` protocol implemented for all structs representing RDF nodes and
|
|
|
|
all native Elixir datatypes which are coercible to those modules. For now, it
|
|
|
|
mainly offers, besides the coercion, just the function `RDF.Term.equal?/2` and
|
|
|
|
`RDF.Term.equal_value?/2` for term- and value comparisons.
|
|
|
|
- New `RDF.Decimal` datatype for `xsd:decimal` literals and support for decimal
|
|
|
|
literals in Turtle encoder
|
|
|
|
- `RDF.Numeric` module with a list of all numeric datatypes and shared functions
|
|
|
|
for all numeric literals, eg. arithmetic functions
|
|
|
|
- Various new `RDF.Datatype` function
|
|
|
|
- `RDF.Datatype.cast/1` for casting between `RDF.Literal`s as specified in the
|
|
|
|
XSD spec on all `RDF.Datatype`s
|
|
|
|
- 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` and `RDF.Time` datatypes
|
|
|
|
- `RDF.LangString.match_language?/2`
|
|
|
|
- Many new convenience functions on the top-level `RDF` module
|
|
|
|
- constructors for all of the supported `RDF.Datatype`s
|
|
|
|
- constant functions `RDF.true` and `RDF.false` for the two boolean `RDF.Literal` values
|
|
|
|
- `RDF.Literal.Guards` which allow pattern matching of common literal datatypes
|
|
|
|
- `RDF.BlankNode.Generator`
|
|
|
|
- Possibility to configure an application-specific default base IRI; for now it
|
2018-08-16 23:31:08 +00:00
|
|
|
is used only on reading of RDF serializations (when no `base` specified)
|
2018-04-07 20:59:03 +00:00
|
|
|
|
|
|
|
|
2018-06-03 21:35:01 +00:00
|
|
|
### Changed
|
|
|
|
|
2018-09-04 18:53:14 +00:00
|
|
|
- Elixir versions < 1.6 are no longer supported
|
2018-07-09 21:04:25 +00:00
|
|
|
- `RDF.String.new/2` and `RDF.String.new!/2` produce a `rdf:langString` when
|
|
|
|
given a language tag
|
2018-09-09 22:27:40 +00:00
|
|
|
- Some of the defined structs now enforce keys on compile-time (via Elixirs
|
2018-09-17 01:28:12 +00:00
|
|
|
`@enforce_keys` feature) when not setting the corresponding fields would lead
|
2018-09-09 22:27:40 +00:00
|
|
|
to invalid structs, namely the following fields:
|
|
|
|
- `RDF.IRI.value`
|
|
|
|
- `RDF.BlankNode.id`
|
|
|
|
- `RDF.Description.subject`
|
|
|
|
- `RDF.List.head`
|
|
|
|
|
2018-06-03 21:35:01 +00:00
|
|
|
|
2018-06-03 21:21:14 +00:00
|
|
|
### Fixed
|
|
|
|
|
2018-09-17 01:28:12 +00:00
|
|
|
- `RDF.resource?/1` does not fail anymore when called with unresolvable atoms
|
|
|
|
but returns `false` instead
|
|
|
|
- `RDF.IRI.absolute/2` does not fail with a `FunctionClauseError` when the given
|
|
|
|
base is not absolute, but returns `nil` instead
|
2018-09-14 21:08:36 +00:00
|
|
|
- `RDF.DateTime` and `RDF.Time` store microseconds
|
2018-06-03 21:21:14 +00:00
|
|
|
- `RDF.DateTime`: '24:00:00' is a valid time in a xsd:dateTime; the dateTime
|
|
|
|
value so represented is the first instant of the following day
|
2018-07-09 19:49:25 +00:00
|
|
|
- `RDF.LangString`: non-strings or the empty string as language produce invalid
|
|
|
|
literals
|
2018-06-03 21:21:14 +00:00
|
|
|
|
|
|
|
|
2018-09-17 01:32:45 +00:00
|
|
|
[Compare v0.4.1...v0.5.0](https://github.com/marcelotto/rdf-ex/compare/v0.4.1...v0.5.0)
|
2018-04-07 20:59:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-03-19 00:52:42 +00:00
|
|
|
## 0.4.1 - 2018-03-19
|
2018-03-14 09:42:41 +00:00
|
|
|
|
2018-03-14 10:46:11 +00:00
|
|
|
### Added
|
|
|
|
|
|
|
|
- `RDF.Literal.new!/2` which fails when creating an invalid literal
|
|
|
|
|
|
|
|
|
2018-03-14 09:42:41 +00:00
|
|
|
### Changed
|
|
|
|
|
2018-03-14 10:46:11 +00:00
|
|
|
- `RDF.Literal.new/2` can create `rdf:langString` literals without failing, they
|
|
|
|
are simply invalid; if you want to fail without a language tag use the new
|
|
|
|
`RDF.Literal.new!/2` function
|
2018-03-14 09:42:41 +00:00
|
|
|
|
|
|
|
|
2018-03-19 00:52:42 +00:00
|
|
|
[Compare v0.4.0...v0.4.1](https://github.com/marcelotto/rdf-ex/compare/v0.4.0...v0.4.1)
|
2018-03-14 09:42:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-03-10 00:47:04 +00:00
|
|
|
## 0.4.0 - 2018-03-10
|
2018-03-07 09:16:00 +00:00
|
|
|
|
2018-03-07 09:33:09 +00:00
|
|
|
### Changed
|
|
|
|
|
2018-03-08 16:33:20 +00:00
|
|
|
- renamed `RDF.Serialization` behaviour to `RDF.Serialization.Format`; the new
|
2018-03-08 00:57:38 +00:00
|
|
|
`RDF.Serialization` module contains just simple RDF serialization related functions
|
2018-03-08 16:33:20 +00:00
|
|
|
- renamed `RDF.Serialization.Format.content_type/0` to `RDF.Serialization.Format.media_type/0`
|
|
|
|
- moved `RDF.Reader` and `RDF.Writer` into `RDF.Serialization` module
|
2018-03-09 20:26:15 +00:00
|
|
|
- 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
|
2018-03-07 09:33:09 +00:00
|
|
|
|
|
|
|
|
2018-03-07 09:16:00 +00:00
|
|
|
### Added
|
|
|
|
|
2018-03-08 00:57:38 +00:00
|
|
|
- `RDF.Serialization.Format`s define a `name` atom
|
2018-03-09 20:15:43 +00:00
|
|
|
- all `RDF.Serialization.Reader` and `RDF.Serialization.Writer` functions are now
|
|
|
|
available on the `RDF.Serialization` module (or aliased on the top-level `RDF`
|
|
|
|
module) and the format can be specified instead of a `RDF.Serialization.Format`
|
|
|
|
argument, via the `format` or `media_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:
|
2018-03-08 00:57:38 +00:00
|
|
|
- `RDF.Serialization.formats/0`
|
|
|
|
- `RDF.Serialization.available_formats/0`
|
|
|
|
- `RDF.Serialization.format/1`
|
2018-03-08 01:14:49 +00:00
|
|
|
- `RDF.Serialization.format_by_media_type/1`
|
2018-03-08 00:57:38 +00:00
|
|
|
- `RDF.Serialization.format_by_extension/1`
|
2018-03-07 09:16:00 +00:00
|
|
|
|
|
|
|
|
2018-03-10 00:47:04 +00:00
|
|
|
[Compare v0.3.1...v0.4.0](https://github.com/marcelotto/rdf-ex/compare/v0.3.1...v0.4.0)
|
2018-03-07 09:16:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-19 21:49:17 +00:00
|
|
|
## 0.3.1 - 2018-01-19
|
2017-10-30 10:40:44 +00:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- `Collectable` implementations for all `RDF.Data` structures so they can be
|
|
|
|
used as destinations of `Enum.into` and `for` comprehensions
|
|
|
|
|
2018-01-19 21:49:17 +00:00
|
|
|
### Fixed
|
2017-10-30 10:40:44 +00:00
|
|
|
|
2018-03-01 12:16:31 +00:00
|
|
|
- Fix `unescape_map` in `parse_helper` for Elixir 1.6 ([@ajkeys](https://github.com/ajkeys))
|
2017-10-30 10:40:44 +00:00
|
|
|
|
|
|
|
|
2018-03-01 12:16:31 +00:00
|
|
|
[Compare v0.3.0...v0.3.1](https://github.com/marcelotto/rdf-ex/compare/v0.3.0...v0.3.1)
|
2018-01-19 21:49:17 +00:00
|
|
|
|
2017-10-30 10:40:44 +00:00
|
|
|
|
|
|
|
|
2017-08-24 16:33:36 +00:00
|
|
|
## 0.3.0 - 2017-08-24
|
2017-08-20 20:35:14 +00:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- `RDF.IRI` as a more suitable URI/IRI representation for RDF, bringing enormous
|
2017-08-22 21:31:16 +00:00
|
|
|
performance and memory consumption benefits (see [here](https://github.com/marcelotto/rdf-ex/issues/1)
|
|
|
|
for the details about the improvements)
|
2017-08-20 20:35:14 +00:00
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
- use `RDF.IRI` instead of Elixirs `URI` everywhere
|
|
|
|
- use the term _iri_ instead of _uri_ consistently, leading to the following
|
|
|
|
function renamings:
|
|
|
|
- `base_iri` instead of `base_uri` for the definition of `RDF.Vocabulary.Namespace`s
|
|
|
|
- `__base_iri__` instead of `__base_uri__` in all `RDF.Vocabulary.Namespace`s
|
|
|
|
- `__iris__` instead of `__uris__` in all `RDF.Vocabulary.Namespace`s
|
|
|
|
- `RDF.IRI.InvalidError` instead of `RDF.InvalidURIError`
|
|
|
|
- `RDF.Literal.InvalidError` instead of `RDF.InvalidLiteralError`
|
|
|
|
- `RDF.Namespace.InvalidVocabBaseIRIError` instead of `RDF.Namespace.InvalidVocabBaseURIError`
|
2017-08-21 19:24:05 +00:00
|
|
|
- show compilation message of vocabulary namespaces always to be able to relate
|
|
|
|
resp. errors and warnings
|
2017-08-20 20:35:14 +00:00
|
|
|
|
2017-08-21 19:06:57 +00:00
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- when trying to resolve a term from an undefined module a `RDF.Namespace.UndefinedTermError`
|
|
|
|
exception
|
|
|
|
|
|
|
|
|
2017-08-24 16:33:36 +00:00
|
|
|
[Compare v0.2.0...v0.3.0](https://github.com/marcelotto/rdf-ex/compare/v0.2.0...v0.3.0)
|
2017-08-20 20:35:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2017-08-12 10:42:07 +00:00
|
|
|
## 0.2.0 - 2017-08-12
|
2017-06-25 19:15:55 +00:00
|
|
|
|
2017-07-05 21:27:55 +00:00
|
|
|
### Added
|
|
|
|
|
2017-08-09 21:24:37 +00:00
|
|
|
- full Turtle support
|
|
|
|
- `RDF.List` structure for the representation of RDF lists
|
|
|
|
- `describes?/1` on `RDF.Data` protocol and all RDF data structures which checks
|
2017-07-23 21:59:50 +00:00
|
|
|
if statements about a given resource exist
|
2017-07-21 22:21:28 +00:00
|
|
|
- `RDF.Data.descriptions/1` which returns all descriptions within a RDF data structure
|
2017-07-23 21:59:50 +00:00
|
|
|
- `RDF.Description.first/2` which returns a single object to a predicate of a `RDF.Description`
|
2017-08-09 21:24:37 +00:00
|
|
|
- `RDF.Description.objects/2` now supports a custom filter function
|
2017-07-21 22:21:28 +00:00
|
|
|
- `RDF.bnode?/1` which checks if the given value is a blank node
|
2017-07-05 21:27:55 +00:00
|
|
|
|
2017-06-25 19:15:55 +00:00
|
|
|
### Changed
|
|
|
|
|
2017-08-11 20:22:27 +00:00
|
|
|
- Rename `RDF.Statement.convert*` functions to `RDF.Statement.coerce*`
|
|
|
|
- Don't support Elixir versions < 1.4
|
2017-06-25 19:15:55 +00:00
|
|
|
|
2017-07-02 17:48:38 +00:00
|
|
|
### Fixed
|
|
|
|
|
2017-07-31 23:24:36 +00:00
|
|
|
- `RDF.uri/1` and URI parsing of N-Triples and N-Quads decoders preserve empty fragments
|
2017-08-11 20:22:27 +00:00
|
|
|
- booleans weren't recognized as coercible literals on object positions
|
2017-07-09 20:21:07 +00:00
|
|
|
- N-Triples and N-Quads decoder didn't handle escaping properly
|
2017-07-02 17:48:38 +00:00
|
|
|
|
2017-06-25 19:15:55 +00:00
|
|
|
|
2017-08-12 10:42:07 +00:00
|
|
|
[Compare v0.1.1...v0.2.0](https://github.com/marcelotto/rdf-ex/compare/v0.1.1...v0.2.0)
|
|
|
|
|
2017-08-09 21:24:37 +00:00
|
|
|
|
2017-06-25 19:15:55 +00:00
|
|
|
|
2017-06-25 18:33:45 +00:00
|
|
|
## 0.1.1 - 2017-06-25
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
- Add `src` directory to package files.
|
|
|
|
|
|
|
|
[Compare v0.1.0...v0.1.1](https://github.com/marcelotto/rdf-ex/compare/v0.1.0...v0.1.1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 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.
|