Triples consist of the following three terms:
- Blank nodes are encoded by atoms that start with `_:`.
- IRIs appear in two notations:
- Full IRIs are encoded by atoms that do not start with `_:`. Specifically, an IRI term is not required to follow the IRI standard grammar.
- Abbreviated IRI notation that allows IRI prefix aliases that are
registered by rdf_register_prefix/[2,3] to be used. Their notation is
Alias:Local, where Alias and Local are atoms. Each abbreviated IRI is expanded by the system to a full IRI.
- Literals appear in two notations:
- String@Lang A language-tagged string, where String is a Prolog string and Lang is an atom.
^Type A type qualified literal. For unknown types, Value is a Prolog string. If type is known, the Prolog representations from the table below are used.
Datatype IRI Prolog term xsd:float float xsd:double float xsd:decimal float (1) xsd:integer integer XSD integer sub-types integer xsd:boolean
xsd:gDay integer xsd:gMonth integer xsd:gMonthDay
xsd:gYear integer xsd:gYearMonth
(1) The current implementation of
xsd:decimalvalues as floats is formally incorrect. Future versions of SWI-Prolog may introduce decimal as a subtype of rational.
(2) SS fields denote the number of seconds. This can either be an integer or a float.
date_timestructure can have a 7th field that denotes the timezone offset in seconds as an integer.
In addition, a ground object value is translated into a properly typed RDF literal using rdf_canonical_literal/2.
There is a fine distinction in how duplicate statements are handled in rdf/[3,4]: backtracking over rdf/3 will never return duplicate triples that appear in multiple graphs. rdf/4 will return such duplicate triples, because their graph term differs.
|S||is the subject term. It is either a blank node or IRI.|
|P||is the predicate term. It is always an IRI.|
|O||is the object term. It is either a
literal, a blank node or IRI (except for |
|G||is the graph term. It is always an IRI.|