A triplespace is a kind of database for triples, a little like a tuple space.
It supports operations to add, inspect and remove triples, as well as bulk-copying or moving them to another triplespace.It has the special property that you can ask to inspect or remove a triple before it has been added, and the triplespace will supply you with the triple you asked for when it becomes available.
This is very useful for co-ordinating concurrent processes, where one process must wait for another to have reached a certain point before it can proceed.
A triple is a data object containing three elements. In Tripoli, these three elements represent the subject, predicate and object of an assertion.
Here are some example triples:
subject | predicate | object |
Tripoli | implemented-in | Python |
Tripoli | license | GPL |
Tripoli | author | Dominic Fox |
Yes it does, doesn't it? ;)
Tripoli triples are just like RDF triples, except that Tripoli doesn't know (or care) about the difference between a URI, a BNode and a Literal. Subjects, predicates and objects in Tripoli are all just string literals.
But you could probably store RDF triples in it anyway, using N-Triples notation for instance. Try parsing an RDF/XML document using the W3C RDF Validator, and look at the triples it returns to see how this might work.
A triple graph is a graph made by joining up triples wherever the object of one triple matches the subject of another. The Tripoli logo, above, shows the graph made by joining up the triples ("T", "R", "I"), ("I", "P", "O") and ("O", "L", "I").
Tripoli can find the graph of all triples that are connected in this way to a given subject, and copy or move those triples to a different triplespace.
Tripoli is licensed under the GPL.