Expand description
The main module of this crate. It has traits for RDF graphs.
RDF graphs consist of triples: a subject, a predicate, and an object. Triples are also called statements: A triple says something about something. For example:
@prefix nco: <http://www.semanticdesktop.org/ontologies/2007/03/22/nco#> .
@prefix nfo: <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#> .
@prefix : <http://example.org/> .
<hello_world.rs> a nfo:SourceCode .
<hello_world.rs> nfo:programmingLanguage "Rust"@en .
<hello_world.rs> nco:creator :alice .
:alice nco:hasName _:alice_name .
_:alice_name nco:nickname "alist" .
This small graph states a few things about a resource hello_world.rs
.
hello_world.rs
is a relative IRI. The first triple states that
hello_world.rs
is source code. The second statement says that it is written
in Rust. The last three triple identify the creator by nickname.
Basically a graph is a table with three columns: subject, predicate, object. In
this example the subjects are, in short form, <hello_world.rs>
, :alice
and
_:alice_name
. The first two are IRIs. They expand to full IRIs when parsed:
file:///home/alice/src/hello/hello_world.rs
and http://example.org/alice
.
These IRIs uniquely identify a resource, in this case the file
hello_world.rs
and the person Alice.
One of the subjects in the example, _:alice_name
is not an IRI but a blank
node. Blank nodes are used for subjects and objects for which no identifier is
known or needed.
The second column contains the predicates. Predicates are always IRIs. The predicate describes a relation between a subject and an object.
The third column contains the objects. An object can be a blank node, an IRI or
a literal. The value of a literal is written in quotes. A literal can have a
a datatype or a language. In the example, the literal value Rust
is
english (@en
).
The format of RDF looks very verbose like this. The form of this example is Turtle. There are also binary formats for RDF graphs such as HDT.
http://www.w3.org/TR/rdf-concepts
This module contains traits that correspond to concepts in RDF.
BlankNodePtr
, IRIPtr
and LiteralPtr
are pointers into the graph. Together they
form a Triple. The subject of a triple can be a blank node or an IRI. This is
modelled by the enum BlankNodeOrIRI
. A predicate can only be an IRI. An object
can take any kind of resource so the enum Resource encapsulates BlankNodePtr
,
IRIPtr
and LiteralPtr
.
In this module, graphs are immutable, but an new graph can be created by extending another graph (TODO).
Enums
WriterBlankNodeOrIRI
is like BlankNodeOrIRI
but for writing graphs.WriterResource
is like Resource
but for writing graphs.