CHANGELOG.md

# 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).


## v0.3.9- 2023-12-19

Elixir versions < 1.12 are no longer supported

### Fixed

- The internal SPARQL lexer and parser were renamed more uniquely.
  A potential for collisions came to light after switching to
  Elixir v1.15 where the new compilation behaviour was causing sometimes
  interferences with another generically named parser, namely the one
  from erlex (a dependency of dialyxir).

[Compare v0.3.8...v0.3.9](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.8...v0.3.9)



## v0.3.8 - 2022-11-03

This version is just upgraded to RDF.ex 1.0.

Elixir versions < 1.11 are no longer supported

[Compare v0.3.7...v0.3.8](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.7...v0.3.8)



## v0.3.7 - 2022-03-22

Upgrades to RDF.ex 0.11. Earlier version won't work with RDF.ex >= 0.11. 

Elixir versions < 1.10 are no longer supported

### Added

- Support for SPARQL-star query results JSON and XML formats

[Compare v0.3.6...v0.3.7](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.6...v0.3.7)



## v0.3.6 - 2020-09-21

### Fixed

- The JSON query result decoder didn't recognize the datatype of literals when the JSON
  value object was `"type" : "literal"`. Only for those with `"typed-literal"` the `"datatype"` 
  field was interpreted.    
- Not all IRI values in CSV results were recognized as IRIs. Values starting with the most
  common URI schemes (http/https, urn, ftp, file, ldap, mailto, geo, data) are now recognized 
  correctly. 

[Compare v0.3.5...v0.3.6](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.5...v0.3.6)



## v0.3.5 - 2020-06-01

### Changed

- Upgrade to RDF.ex 0.8. With that Elixir versions < 1.8 are no longer supported.
- the SPARQL extension function registry is now implemented with the ProtocolEx library,
  improving the performance of queries using SPARQL extension functions (including the 
  builtin casting functions); unfortunately this means the `SPARQL.ExtensionFunction.Registry.get_all/0`
  function to get all registered extension functions can no longer be supported 

[Compare v0.3.4...v0.3.5](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.4...v0.3.5)



## v0.3.4 - 2019-12-14

- Upgrade to RDF.ex 0.7

[Compare v0.3.3...v0.3.4](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.3...v0.3.4)



## v0.3.3 - 2019-10-25

### Fixed

- a bug in the BGP processing algorithm lead to wrong solutions when one triple 
  pattern in a BGP had no solutions 


[Compare v0.3.2...v0.3.3](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.2...v0.3.3)



## v0.3.2 - 2019-09-08

### Added

- `no_extension_detection_in_releases_warning` configuration which disables the  
  warning that not all extension functions may be detected in a release with the
  runtime system in interactive mode

### Fixed

- Raise an error when the query uses an unknown prefix instead of producing an 
  invalid query


[Compare v0.3.1...v0.3.2](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.1...v0.3.2)



## v0.3.1 - 2019-07-15

### Changed

- Use the new `RDF.Literal.matches?/3` function from RDF.ex 0.6.1 for the `REGEX` function
- with the fix from RDF.ex 0.6.1 XSD boolean with uppercase letters in the boolean
  lexical values are no longer valid

### Fixed

- the `true` and `false` keywords from the SPARQL language are case-insensitive
- the new `RDF.Literal.matches?/3` function also fixes some Unicode escaping
  issues in regular expressions


[Compare v0.3.0...v0.3.1](https://github.com/rdf-elixir/sparql-ex/compare/v0.3.0...v0.3.1)



## v0.3.0 - 2019-04-06

### Changed

- Replace the prefix management of SPARQL.ex with the new prefix management 
  capabilities of RDF.ex 0.6
- Use the query prefixes as the prefixes of CONSTRUCTed graphs


[Compare v0.2.9...v0.3.0](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.9...v0.3.0)



## v0.2.9 - 2019-03-06

### Fixed

- the application failed to start in OTP releases (#2)


[Compare v0.2.8...v0.2.9](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.8...v0.2.9)



## v0.2.8 - 2019-02-16

### Added

- Support for negations with `MINUS`


[Compare v0.2.7...v0.2.8](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.7...v0.2.8)



## v0.2.7 - 2018-11-11

### Added

- Support of the `CONSTRUCT` query form

### Fixed

- various fixes on comparisons between `RDF.DateTime`s and `RDF.Date`s  


[Compare v0.2.6...v0.2.7](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.6...v0.2.7)



## v0.2.6 - 2018-10-30

### Added

- Support for alternative graph patterns with `UNION`
- Support for assigning to variables with `BIND`


### Changed

- `REDUCED` no longer removes duplicates without projection (for performance reasons)


### Fixed

- `DISTINCT` did not work without projection


[Compare v0.2.5...v0.2.6](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.5...v0.2.6)



## v0.2.5 - 2018-10-21

### Added

- Support for optional graph patterns via `OPTIONAL`
- Support for the `bound` function

### Fixed

- errors during evaluation of function arguments were handled incorrectly, 
  which led in particular to wrong behaviour of the `COALESCE` function
- `SPARQL.Query.Result.get/2` failed when the given variable was not in the results


[Compare v0.2.4...v0.2.5](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.4...v0.2.5)



## v0.2.4 - 2018-10-06

### Added

- Support for group graph patterns, i.e. nested graph patterns and `FILTER`s in
  the middle of a graph patterns (which splits up a graph pattern)
- `SPARQL.Query.Result.get/2` as a short way for getting the solutions of a 
  single variable

### Fixed

- `FILTER` expressions at the beginning of a graph pattern


[Compare v0.2.3...v0.2.4](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.3...v0.2.4)



## v0.2.3 - 2018-09-23

### Added

- evaluation of `DISTINCT` and `REDUCED` (the later having the semantics as 
  `DISTINCT`, i.e. no optimizations right now)
- implementation of `String.Chars` protocol on `SPARQL.Query`

### Changed

- various refinements of default prefixes
	- renamed the query-specific default prefixes option from `prefixes` to `default_prefixes`
	- setting `none` on the `default_prefixes` option, removes the standard application-wide
	  configured default prefixes
	- `SPARQL.Processor.query` (and the `SPARQL.execute_query` alias) pass options
	  down `SPARQL.Query.new/2`, so it can also used with `default_prefixes`

[Compare v0.2.2...v0.2.3](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.2...v0.2.3)



## v0.2.2 - 2018-09-22

### Added

- application-wide and query-specific ways to define default prefixes 

### Fixed

- bug in the lexer grammar which caused a scanner error on lowercase `distinct`

[Compare v0.2.1...v0.2.2](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.1...v0.2.2)



## v0.2.1 - 2018-09-17

### Fixed

- generated Erlang output files of Leex and Yecc are excluded from Hex package, 
  which caused issues using the SPARQL.ex Hex package on OTP < 21
  (because the package was released with OTP 21)

[Compare v0.2.0...v0.2.1](https://github.com/rdf-elixir/sparql-ex/compare/v0.2.0...v0.2.1)



## v0.2.0 - 2018-09-17

### Added

- SPARQL Query engine for executing queries against RDF.ex graphs 
  (not complete yet; see Current state section in README)

### Changed

- Elixir versions < 1.6 are no longer supported
- renamed the `SPARQL.Query.ResultSet` struct to `SPARQL.Query.Result`
- removed the previous `SPARQL.Query.Result` struct for single solutions; these 
  are now represented as simple maps


[Compare v0.1.0...v0.2.0](https://github.com/rdf-elixir/sparql-ex/compare/v0.1.0...v0.2.0)



## v0.1.0 - 2018-03-19

Initial release