Building a simple Triplestore in PHP

Note: this is an early version and still in development phase; it will be likely updated in the near future

Lately I have been reading the excellent book Programming the Semantic Web. Since all of the examples in the book are written in Python it was hard for me to understand most of the examples so I decided to translate the code into PHP. It is shown how you can build a simple triplestore using PHP.

The SimpleGraph class stores three indexes that each represent a different permutation. The name of the index indicates the ordering of the terms in the index (i.e., the pos index stores the predicate, the object, and then the subject, in that order).

Each triple is represented in each index using a different permutation, and this allows any query across the triples to be answered simply by iterating over a single index.

Attached you can find the source code. I included an example as well, which can be used for test purposes. The file named unis.csv represents a comma-separated list for data about the belgian universities. Note that this list is certainly not exhaustive. Beneath a graphical overview for the University of Antwerp.

The following code shows how to list all triples that contain data about Universiteit Antwerpen. All terms that are not present should be addressed using the NULL value. The triples() function will return an array containing the triples.


$graph = new SimpleGraph();
$graph->load('unis.csv');
$graph->triples('Universiteit Antwerpen', NULL, NULL);

That’s all you need for a basic in-memory triplestore.

Currently, the performance is rather slow. It is able to store about 5000 triples. A future update will address performance.”,”Note: this is an early version and still in development phase; it will be likely updated in the near future

Flexibel beheer van gedistribueerde sociale netwerksites

Voor het vak security management werd er gevraagd om een paper te schrijven. Voor mij was de keuze snel gemaakt: FOAF+SSL (a.k.a. Secured WebID).

FOAF+SSL is in feite is het niet meer dan een user-centric federated identity system, maar dan van een invalshoek vanuit het Semantisch Web. TLS wordt gebruikt om een beveiligde communicatie op te zetten. Verder maakt het authenticatie mechanisme gebruik van X.509 certificaten, waar het veld SubjectAltName het certificaat linkt met een FOAF-profiel. Authenticatie kan gebeuren met één klik, wachtwoord of gebruikersnaam moeten niet onthouden worden en het certificaat bevindt zich in de browser. Het certificaat wordt zelf aangemaakt en handgetekend of kan meerdere handtekeningen bevatten. Verificatie van het certificaat gebeurt op basis van dereferentie of Web van vertrouwen. In het geval van dereferentie gaat men met simpele GET na of de publieke sleutel in het certificaat overeenkomt met de sleutel in de FOAF file. Web van vertrouwen wordt voorlopig minder toegepast.
Tenslotte, Secure WebId kan niet bewijzen of iemand die zegt dat hij iemand is werkelijk is, maar het kan wel bewijzen dat diegene die het certificaat voorlegt het FOAF profiel kan bewerken.

Om het hele idee te begrijpen lees dan mijn artikel over FOAF+SSL maar door of bekijk de prezi presentatie eens.