diff --git a/README.md b/README.md index 6147e9fc..e035c11b 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,12 @@ Oxigraph is in heavy development and SPARQL query evaluation has not been optimi The development roadmap is using [GitHub milestones](https://github.com/oxigraph/oxigraph/milestones?direction=desc&sort=completeness&state=open). Oxigraph internal design [is described on the wiki](https://github.com/oxigraph/oxigraph/wiki/Architecture). +Oxigraph implements the following specifications: + +- [SPARQL 1.1 Query](https://www.w3.org/TR/sparql11-query/), [SPARQL 1.1 Update](https://www.w3.org/TR/sparql11-update/), and [SPARQL 1.1 Federated Query](https://www.w3.org/TR/sparql11-federated-query/). +- [Turtle](https://www.w3.org/TR/turtle/), [TriG](https://www.w3.org/TR/trig/), [N-Triples](https://www.w3.org/TR/n-triples/), [N-Quads](https://www.w3.org/TR/n-quads/), and [RDF XML](https://www.w3.org/TR/rdf-syntax-grammar/) RDF serialization formats for both data ingestion and retrieval using the [Rio library](https://github.com/oxigraph/rio). +- [SPARQL Query Results XML Format](https://www.w3.org/TR/rdf-sparql-XMLres/), [SPARQL 1.1 Query Results JSON Format](https://www.w3.org/TR/sparql11-results-json/) and [SPARQL 1.1 Query Results CSV and TSV Formats](https://www.w3.org/TR/sparql11-results-csv-tsv/). + It is split into multiple parts: - [The database written as a Rust library](https://crates.io/crates/oxigraph). Its source code is in the `lib` directory. @@ -31,11 +37,18 @@ It is split into multiple parts: Note that it was previously named [Oxigraph server](https://crates.io/crates/oxigraph-server). [![Latest Version](https://img.shields.io/crates/v/oxigraph-cli.svg)](https://crates.io/crates/oxigraph-cli) -Oxigraph implements the following specifications: - -- [SPARQL 1.1 Query](https://www.w3.org/TR/sparql11-query/), [SPARQL 1.1 Update](https://www.w3.org/TR/sparql11-update/), and [SPARQL 1.1 Federated Query](https://www.w3.org/TR/sparql11-federated-query/). -- [Turtle](https://www.w3.org/TR/turtle/), [TriG](https://www.w3.org/TR/trig/), [N-Triples](https://www.w3.org/TR/n-triples/), [N-Quads](https://www.w3.org/TR/n-quads/), and [RDF XML](https://www.w3.org/TR/rdf-syntax-grammar/) RDF serialization formats for both data ingestion and retrieval using the [Rio library](https://github.com/oxigraph/rio). -- [SPARQL Query Results XML Format](https://www.w3.org/TR/rdf-sparql-XMLres/), [SPARQL 1.1 Query Results JSON Format](https://www.w3.org/TR/sparql11-results-json/) and [SPARQL 1.1 Query Results CSV and TSV Formats](https://www.w3.org/TR/sparql11-results-csv-tsv/). +Also, some parts of Oxigraph are available as standalone Rust crates: +* [`oxrdf`](https://crates.io/crates/oxrdf), datastructures encoding RDF basic concepts (the [`oxigraph::model`](crate::model) module). +* [`oxrdfio`](https://crates.io/crates/oxrdfio), a unified parser and serializer API for RDF formats (the [`oxigraph::io`](crate::io) module). It itself relies on: + * [`oxttl`](https://crates.io/crates/oxttl), N-Triple, N-Quad, Turtle, TriG and N3 parsing and serialization. + * [`oxrdfxml`](https://crates.io/crates/oxrdfxml), RDF/XML parsing and serialization. +* [`spargebra`](https://crates.io/crates/spargebra), a SPARQL parser. +* [`sparesults`](https://crates.io/crates/sparesults), parsers and serializers for SPARQL result formats. +* [`sparopt`](https://crates.io/crates/sparesults), a SPARQL optimizer. +* [`oxsdatatypes`](https://crates.io/crates/oxsdatatypes), an implementation of some XML Schema datatypes. + +The library layers in Oxigraph. The elements above depend on the elements below: +![Oxigraph libraries architecture diagram](./docs/arch-diagram.svg) A preliminary benchmark [is provided](bench/README.md). There is also [a document describing Oxigraph technical architecture](https://github.com/oxigraph/oxigraph/wiki/Architecture). diff --git a/docs/arch-diagram.svg b/docs/arch-diagram.svg new file mode 100644 index 00000000..749c466b --- /dev/null +++ b/docs/arch-diagram.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + oxigraph CLI + + pyoxigraph + + oxigraph + JS + + oxigraph + + oxrdfio + + sparopt + + oxttl + + oxrdfxml + + spargebra + + sparesults + + oxrdf + + oxsdatatypes + \ No newline at end of file diff --git a/docs/arch-diagram.txt b/docs/arch-diagram.txt new file mode 100644 index 00000000..ff3a5be0 --- /dev/null +++ b/docs/arch-diagram.txt @@ -0,0 +1,35 @@ ++------------------+ +----------------+ +-----------------+ ++ oxigraph CLI {r} + + pyoxigraph {p} + + oxigraph JS {j} + ++------------------+ +----------------+ +-----------------+ + ++---------------------------------------------------------------------------+ ++ oxigraph (Rust) {r} + ++---------------------------------------------------------------------------+ + + +----------------------------+ +-------------+ + + oxrdfio {r} + + sparopt {r} + + +----------------------------+ +-------------+ + + +-----------+ +--------------+ +-----------------+ +----------------+ + + oxttl {r} + + oxrdfxml {r} + + spargebra {r} + + sparesults {r} + + +-----------+ +--------------+ +-----------------+ +----------------+ + + +-----------------------------------------------------------------------+ + + oxrdf {r} + + +-----------------------------------------------------------------------+ + ++------------------+ ++ oxsdatatypes {r} + ++------------------+ + + +# Legend: +r = { + fill: papayawhip; +} +p = { + fill: lightyellow; +} +j = { + fill: lightgreen; +}