StrixDB
Cet article est une ébauche concernant le Web sémantique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) — pour plus d’indications, visitez le projet Web Sémantique.
Pour les articles homonymes, voir Strix (homonymie).
Développé par | Olivier Poirel |
---|---|
Écrit en | C, C++ |
Environnement | Windows |
Langues | Anglais |
Type | Web sémantique |
Licence | propriétaire |
Site web | strixdb |
modifier - modifier le code - voir Wikidata (aide)
StrixDB est une base de données dédiée RDF. Elle est conçue pour permettre la manipulation et le raisonnement pour des graphes RDF de taille moyenne.
Caractéristiques
StrixDB a les caractéristiques suivantes :
- requêtes avec SPARQL et modifications avec SPARQL/Update.
- inférence dans SPARQL avec des règles Datalog (règles avec récursion, négation et négation dans la récursion).
- propriétés ACID (atomicity, consistency, isolation, durability). StrixDB utilise le SGBD Gigabase.
- serialisation des graphes RDF au format standard XML ou Turtle.
StrixDB peut être utilisé :
- en tant que serveur SPARQL (utilisation en tant que module d'un serveur HTTP Apache).
- en tant qu'application avec le langage de script Lua.
- appelé par tout langage de programmation en tant que DLL.
La résolution Datalog utilise une variante de l'algorithme SLG[1] adaptée aux triples RDF.
Exemples de règles
Les règles s'expriment dans une syntaxe inspirée de Datalog ou de Turtle. En supposant que la ressource http://myserver/famillyRules contienne les règles suivantes :
prefix ns: <http://myserver/familly#>. prefix foaf: <http://xmlns.com/foaf/0.1/>. {?x ns:ancestorOf ?y } :- {?x ns:parentOf ?y} {?x ns:ancestorOf ?y} :- {?x ns:parentOf ?z. ?z ns:ancestorOf ?y} ns:motherOf(?mother,?child) :- ns:parentOf(?mother,?child), not ns:fatherOf(?mother,?child). ns:fatherOf(?f,?child) :- ns:parentOf(?f,?child), not foaf:gender(?f,foaf:female).
Les règles peuvent être utilisées dans une requête SPARQL en utilisant la clause USING. Cette clause, spécifique à StrixDB est similaire à la clause FROM.
PREFIX ns: <http://myserver/familly#> SELECT ?person ?ancestor USING <http://myserver/famillyRules> WHERE { ?person ns:ancestorOf ?ancestor }
Exemple de raisonnement OWL
Les règles suivantes implementent le raisonnement sur les propriétés d'OWL. Remarque: les prédicats peuvent être des variables.
?p(?x,?y) :- a(?p, owl:SymmetricProperty), ?p(?y,?x). ?p(?x,?y) :- a(?p, owl:TransitiveProperty), ?p(?x,?z), ?p(?z,?y). ?invers1(?x,?y) :- owl:inverseOf(?invers1,?invers2), ?invers2(?y,?x). ?invers1(?x,?y) :- owl:inverseOf(?invers2,?invers1), ?invers2(?y,?x). ?equiv1(?x,?y) :- owl:equivalentProperty(?equiv1,?equiv2), ?equiv2(?x,?y). ?equiv1(?x,?y) :- owl:equivalentProperty(?equiv2,?equiv1), ?equiv2(?x,?y). ?p(?x,?y) :- rdfs:subPropertyOf(?p1,?p), ?p1(?x,?y).
Liens internes
Liens externes
- OWL profiles
- Gigabase
- Sources de strixdb
Références
- ↑ Tabled Evaluation with Delaying for General Logic Programs - Weidong Chen, David S. Warren (1996)
- Portail du Web sémantique