Il existe de nombreuses solutions pour stocker des triplets dans une base de données relationnelle (ou SGBDR -- Système de gestion de bases de données relationnelles).
Deux références s'attardent sur cette question :
Beckett et Grant formulent notamment quelques recommandations pour un stockage efficace des triplets en base.
- Toutes ne sont pas requises, dépendant de l'application développée mais un bon support de certaines des ces recommandations peut être crucial pour des systèmes efficaces :
- Recherche textuelle
- Il est utile de gérer les litéraux comme des chaînes et non seulement commes des objets binaires (BLOB), et de réaliser de l'indexation standard mot à mot, de la lématisation, de la troncation et de permettre une recherche utilisant des opérateurs bouléens classiques comme la conjonction, la recherche par phrase.
- URIs
- Le support efficace des URIs est utile puisqu'ils sont utilisés pour identifier tous les termes dans le graphe RDF et sont contenus dans chaque partie du triplet. S'ils ne sont pas correctement supportés, le stockage ne fonctionnera pas correctement avec ces données sémantiques.
- Types de données (Datatypes)
- RDF supporte un mechanisme de typage des données compatible avec XML Schema Datatypes [XSD] et il est à espérer qu'il sera utilisé plus largement pour des types de données communs comme les décimaux. Ceux-ci doivent être efficacement soutenus quand ils sont utilisés.
- Conteneurs RDF (rdf:Seq, rdf:Bag, rdf:Alt, rdf:_n)
- Ces formes (constructs?) sont construites depuis plusieurs triplets et peuvent être difficiles à gérer sans coûts supplémentaires applicatif tel que le surcout dû à la connaissance RDF de la taille des contenus (?) (such as extra-RDF knowledge of the known size of the contents.)
- Support du language de description de vocabulaires RDF (RDF Schema?)
- Quand des classes et des propriétés RDF sont déclarées avec des sous-classes et des sous-propriétés, la hiérarchie transitive des relations de subsomption gagne à être intégré au stockage des triplets pour permettre une réponse rapide aux requêtes relatives aux types ou aux classes.
- Support des ontologies et de l'inférence
- RDF est la plupart du temps un rapport de déclarations (statements) entre elles et la description du vocabulaire utilisé dans ces déclarations. Quand on trouve des applications d'un niveau supérieur, usant de relations logiques, il peut y avoir un besoin de fonctionnalités supplémentaires pour supporter ces relations logiques ou pour permettre l'ajout de (hook?) pour travailler avec des règles et des moteurs d'inférence.
- Provenance des triplets
- Quand des triplets sont ajoutés à un graphe, il est souvent utile de pouvoir dépister d'où ils sont venus, comment ils ont été ajoutés, par qui etc. Cette information de provenance est en dehors du graphe RDF (à moins qu'elle emploie la réification) et peut être coûteuse à dépister si ajoutée à la main. Un certain soutien de ceci facilite le support d'applications fondées sur le modèle de confiance (web of trust) et permet également aux fusions/découpages de graphe RDF de mieux fonctionner.
(
à finir de traduire)