StrixDB

From Wikipedia, the free encyclopedia
Jump to: navigation, search
StrixDB
StrixDB logo.png
Developer(s) Olivier Poirel
Written in C, C++
Operating system Windows
Available in English
Type Semantic Web, Triplestore
License proprietary
Website www.strixdb.com

StrixDB is a Triplestore designed to manipulate middle sized RDF graphs.

Features[edit]

StrixDB main features are:

  • compliance with SPARQL and SPARQL/Update.
  • Datalog inference integrated with SPARQL (rules with recursion, negation and negation in recursion).
  • ACID database transaction (with rollback on errors). StrixDB is based on Gigabase.
  • supports serialisation of RDF graphs in RDF/XML format or Turtle

StrixDB could be used as:

  • a web server with the w3c SPARQL/protocol (it is an Apache Web server module).
  • a standalone console application (it is also a Lua module).
  • in any programming language through its DLL API.

The Datalog resolution uses a version of SLG [1] algorithm adapted to RDF triples.

Example of rules[edit]

Rules could use a Turtle or a Datalog inspired syntax. Suppose we have the following rules stored as rules resource http://myserver/famillyRules

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).

These rules could be used into a SPARQL request with the USING clause specific to StrixDB. USING clause specify rules resources in a similar way as the FROM clauses specify the RDF datasets.

PREFIX ns: <http://myserver/familly#>
SELECT ?person ?ancestor
USING <http://myserver/famillyRules>
WHERE { ?person ns:ancestorOf ?ancestor }

Example of OWL reasoning[edit]

The following rules show how to make some OWL property reasoning (as shown, variables as predicate is admissible):

?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).

See also[edit]

External links[edit]

References[edit]

  1. ^ Tabled Evaluation with Delaying for General Logic Programs - Weidong Chen, David S. Warren (1996)