Designed for logic
When I say designed for logic, what I mean is that it that if has the same idea of triple (fact) as in Datalog, 1986:
- RDF:
subject, predicate, object
- Datalog:
predicate(subject, object)
Which may seem as a good idea at first, but problem is that you can’t express Property Graph or Labeled Property Graph, as the workaround you need to use reification.
XML
XML is always a bad choice. It is not human-readable and not optimised for machine either. That is why there is a plethora of alternatives:
Format | Description |
---|---|
Turtle | Terse RDF Triple Language. |
TriG | Plain text format for serializing named graphs and RDF Datasets. |
JSON-LD | JSON-based Serialization for Linked Data. |
RDF/JSON | RDF 1.1 JSON Alternate Serialization. |
N-Triples | Line-based syntax for RDF datasets. |
N-Quads | Line-based syntax for RDF datasets. |
Notation3 | Notation3 (N3): A readable RDF syntax. |
HDT | Binary RDF Representation for Publication and Exchange. |
aREF | Another RDF Encoding Form. |
YARRML | YARRRML is a human readable text-based representation for declarative generation rules. It is a subset of [YAML], a widely used data serialization language designed to be |
hextuples | NDJSON serialization |
Not a graph
Strictly speaking RDF is not a labeled Graph, even so it can appear like one. See RDF vs Graphs.
Reification problem
There is no single approach for reification, as a result there are 4-5 different approaches. See RDF reification.
Using reification:
- You can do statements about statements
- Which allows to express property graph
- Which allows to express namespaces, versions
Potential solutions for this: