- Add support for SPARQL collections syntactic sugar:
- Add support for RDF list syntax.
- Add support for blank node vector syntax.
- Modify the AST tree for triples to support the aforementioned features and to remove redundant nodes in the tree.
- Rework blank node validation to make the implementation simpler (this results in minor changes to the error output).
- Disallow syntax-quoting for symbols.
- Fix bug where timestamps with zeroed-out seconds have the seconds omitted.
- Update GitHub Actions CI and CD to remove deprecation warnings.
- Rework IRI, variable, blank node and literal implementations and add support for additional Java(Script) types.
- Implement protocols to define validation and formatting behavior IRIs, variables, blank nodes and literals, and apply
extend-type/extend-protocol to default types. - Add support for
java.net.URI and js/URL IRI instances. - Add support for
java.time.Temporal timestamps (e.g. LocalDateTime and ZonedDateTime). - Refine datatypes for numeric literals, e.g. Clojure integers are associated with
xsd:long by default. - Refine datatypes for date- and time-only timestamps, e.g.
java.sql.Date and java.sql.Time are now associated with xsd:date and xsd:time, respectively. (Breaking!)
- Add
:force-iris? optional arg in order to force datatype IRIs to be appended when formatting literals (with the exception of language-tagged strings). - Add support for Unicode characters and percent encoding.
- Unicode characters are now supported in symbols and keywords.
- Percent encoding is allowed in prefixed IRI keyword names.
- (Clojure-only) Optimize string validation.
- Replace certain uses of
s/or with multi-specs in order to simplify error messages.
- Fix a bug where certain SPARQL Update clauses -
LOAD, CLEAR, CREATE, and DROP - were not being correctly formatted.
- The form
[:graph iri] is now mandatory for the aforementioned Update clauses and optional for others (ADD, MOVE, AND COPY).
- Fix validation of strings containing escaped char sequences such as
\\n or \\r.
- Special thanks to @quoll for their assistance with this bugfix.
Fix a number of bugs discovered in v0.1.0 (see Pull Request #20):
- Allow IRIs and prefixed IRIs to be used in expressions.
- Fix zipper traversal not working correctly with deletion or insertion quads.
- Fix
java.time.Instant instances not being formatted correctly. - Fix
a not being valid in DELETE or INSERT queries. - Fix incorrect predicate specs for triples that restrict both blank nodes and variables.
- Ensure parentheses are properly added around negated property paths.
- Ensure parentheses around expressions are added for certain clauses (e.g.
FILTER).
Apply updates to the documentation:
- Fix incorrect documentation on the
CONSTRUCT WHERE query. - General grammar and cleanup fixes.
Initial release of Flint!