From 898105f7bfeff48469d58e9f23db6a27bac179de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Konrad=20H=C3=B6ffner?= <konrad.hoeffner@uni-leipzig.de>
Date: Mon, 12 Dec 2022 16:57:08 +0100
Subject: [PATCH] Improve README.md, resolve #12. Release 0.0.6.

---
 Cargo.toml |  2 +-
 README.md  | 64 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 8dfaf58..1216001 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "hdt"
-version = "0.0.5"
+version = "0.0.6"
 repository = "https://github.com/konradhoeffner/hdt"
 authors = ["Tim Baccaert <tbaccaer@vub.be>", "Konrad Höffner"]
 license = "MIT"
diff --git a/README.md b/README.md
index 57460da..e6bce70 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,60 @@
-# Rust implementation of the HDT compression format
-Header Dictionary Triples (HDT) is a compression format for RDF data that can also be queried for Triple Patterns.
+# HDT
 
-## History 
-This is a fork of the archived <https://github.com/timplication/hdt-rs> by Tim Baccaert [tbaccaer@vub.be](mailto:tbaccaer@vub.be), who kindly licensed it as MIT on request.
-Pull requests are welcome.
+[![Latest Version](https://img.shields.io/crates/v/hdt.svg)](https://crates.io/crates/hdt)
+[![Documentation](https://docs.rs/hdt/badge.svg)](https://docs.rs/hdt/)
 
-For reference implementations in C++ and Java and acknowledgement of all the original authors, please look at the [https://github.com/rdfhdt](https://github.com/rdfhdt) organisation.
+A Rust library for the [Header Dictionary Triples](https://www.rdfhdt.org/) compressed RDF format, including:
+
+* loading the HDT default format as created by [hdt-cpp](https://github.com/rdfhdt/hdt-cpp)
+* efficient querying by triple patterns
+* serializing into other formats like RDF Turtle and N-Triples using the [Sophia](https://crates.io/crates/sophia) adapter
+
+However it cannot:
+
+* load other RDF formats
+* load other HDT variants 
+
+For this functionality and acknowledgement of all the original authors, please look at the reference implementations in C++ and Java by the [https://github.com/rdfhdt](https://github.com/rdfhdt) organisation.
+
+It also cannot:
+
+* swap data to disk
+* modify the RDF graph in memory
+* run SPARQL queries
+
+If you need any of the those features, consider using a SPARQL endpoint instead.
+
+## Examples
+
+```toml
+[dependencies]
+hdt = "0.0.6"
+```
+
+```rust
+use hdt::Hdt;
+
+pub fn main() {
+  // Load an hdt file
+  let file = File::open("dbpedia.hdt").expect("error opening file");
+  let hdt = Hdt::new(std::io::BufReader::new(file)).expect("error loading HDT");
+  // query
+  let majors = hdt.triples_with_sp("http://dbpedia.org/resource/Leipzig", "http://dbpedia.org/ontology/major");
+  println!("{:?}", majors.collect::<Vec<(String, String, String)>(majors));
+}
+```
+
+You can also use the Sophia adapter to load HDT files and reduce memory consumption of an existing application based on Sophia:
+
+```rust
+use hdt::{Hdt,HdtGraph};
+
+pub fn main() {
+  let file = File::open("dbpedia.hdt").expect("error opening file");
+  let hdt = Hdt::new(std::io::BufReader::new(file)).expect("error loading HDT");
+  let graph = HdtGraph::new(hdt);
+  let s = BoxTerm::new_iri_unchecked("http://dbpedia.org/resource/Leipzig");
+  let p = BoxTerm::new_iri_unchecked("http://dbpedia.org/ontology/major");
+  let majors = graph.triples_with_sp(s,p);
+}
+```