diff --git a/CHANGELOG.md b/CHANGELOG.md index ffbb1b83..1c4437b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,23 @@ ### Added - [SPARQL 1.1 Update](https://www.w3.org/TR/sparql11-update/) support for Rust, Python and JavaScript. - [SPARQL 1.1 Query Results CSV and TSV Formats](https://www.w3.org/TR/sparql11-results-csv-tsv/) serializers and TSV format parser. +- The SPARQL Query and Update algebra is now public. +- A simple built-in HTTP client. In the Rust library, is disabled by default behind the `http_client` feature. It powers SPARQL federation and SPARQL UPDATE `LOAD` operations. - `std::str::FromStr` implementations to `NamedNode`, `BlankNode`, `Literal`, `Term` and `Variable` allowing to easily parse Turtle/SPARQL serialization of these terms. +- Optional Sled storage for `oxigraph_server`. ### Removed - The `default_graph_uris` and `named_graph_uris` parameters from `pyoxigraph` `query` methods. +- Python 3.5 support. +- `(Memory|RocksDB|Sled)Store::prepare_query` methods. It is possible to cache SPARQL query parsing using the `Query::parse` function and give the parsed query to the `query` method. ### Changed - Fixes evaluation of `MONTH()` and `DAY()` functions on the `xsd:date` values. - `Variable::new` now validates the variable name. +- `(Memory|RocksDB|Sled)Store::query` does not have an option parameter anymore. There is now a new `query_opt` method that allows giving options. +- `xsd:boolean` SPARQL function now properly follows XPath specification. +- Fixes SPARQL `DESCRIBE` evaluation. + ## [0.1.1] - 2020-08-14 diff --git a/lib/src/model/blank_node.rs b/lib/src/model/blank_node.rs index 1999f224..d0e7bd66 100644 --- a/lib/src/model/blank_node.rs +++ b/lib/src/model/blank_node.rs @@ -7,7 +7,7 @@ use std::str; /// An owned RDF [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node). /// -/// The common way to create a new blank node is to use the [`BlankNode::default`](#impl-Default) function. +/// The common way to create a new blank node is to use the [`BlankNode::default()`] function. /// /// It is also possible to create a blank node from a blank node identifier using the [`BlankNode::new()`] function. /// The blank node identifier must be valid according to N-Triples, Turtle and SPARQL grammars. @@ -36,7 +36,7 @@ impl BlankNode { /// /// The blank node identifier must be valid according to N-Triples, Turtle and SPARQL grammars. /// - /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`](#impl-Default) + /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`] ///that creates a random ID that could be easily inlined by Oxigraph stores. pub fn new(id: impl Into) -> Result { let id = id.into(); @@ -61,7 +61,7 @@ impl BlankNode { /// Creates a blank node from a unique numerical id /// - /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`](#impl-Default). + /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`]. pub fn new_from_unique_id(id: impl Into) -> Self { let id = id.into(); Self(BlankNodeContent::Anonymous { @@ -117,7 +117,7 @@ impl Default for BlankNode { /// A borrowed RDF [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node). /// -/// The common way to create a new blank node is to use the [`BlankNode::default`](#impl-Default) trait method. +/// The common way to create a new blank node is to use the [`BlankNode::default`] trait method. /// /// It is also possible to create a blank node from a blank node identifier using the [`BlankNodeRef::new()`] function. /// The blank node identifier must be valid according to N-Triples, Turtle and SPARQL grammars. @@ -146,7 +146,7 @@ impl<'a> BlankNodeRef<'a> { /// /// The blank node identifier must be valid according to N-Triples, Turtle and SPARQL grammars. /// - /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`](#impl-Default) + /// In most cases, it is much more convenient to create a blank node using [`BlankNode::default()`]. /// that creates a random ID that could be easily inlined by Oxigraph stores. pub fn new(id: &'a str) -> Result { validate_blank_node_identifier(id)?;