This project provides a simple converter from OWL axioms and OWL class expressions to SPARQL queries.
<repositories>
<repository>
<id>maven.aksw.internal</id>
<name>University Leipzig, AKSW Maven2 Repository</name>
<url>http://maven.aksw.org/archiva/repository/internal</url>
</repository>
<repository>
<id>maven.aksw.snapshots</id>
<name>University Leipzig, AKSW Maven2 Repository</name>
<url>http://maven.aksw.org/archiva/repository/snapshots</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.aksw.owl2sparql</groupId>
<artifactId>owl2sparql-core</artifactId>
<version>0.1</version>
</dependency>
...
</dependencies>
// create the converter
OWLAxiomToSPARQLConverter converter = new OWLAxiomToSPARQLConverter("?s","?o");
// provide some OWL axiom using OWL API datastructures
OWLAxiom axiom = ...;
// convert the axiom into a SPARQL query
String queryString = converter.convert(axiom);
OWL axiom (in Manchester OWL Syntax)
PREFIX: : <http://example.org#>
ObjectProperty: r
Domain: A
SPARQL query
PREFIX : <http://example.org#>
SELECT DISTINCT ?s
WHERE
{ ?s :r ?s0 .
?s a :A
}
// create the converter
OWLClassExpressionToSPARQLConverter converter = new OWLClassExpressionToSPARQLConverter();
// provide some OWL class expression using OWL API datastructures
OWLClassExpression ce = ...;
// convert the class expression into a SPARQL query
String queryString = converter.convert(ce);
OWL class expression (in Manchester OWL Syntax)
PREFIX: : <http://example.org#>
A and ( B or not (r some B))
SPARQL query
PREFIX : <http://example.org#>
SELECT DISTINCT ?x
WHERE
{ ?x a :A
{ ?x a :B }
UNION
{ ?x ?p ?o
FILTER NOT EXISTS {
?x :r ?s0 .
?s0 a :B
}
}
}
The source code of this repo is published under the Apache License Version 2.0.
This project makes use of several dependencies: When in doubt, please cross-check with the respective projects:
- OWL API (Apache License 2.0 and GNU LGPL Version 3.0)
- Apache Jena (Apache License 2.0)
- Guava (Apache License 2.0)
Class Expression | SPARQL Query |
---|---|
A | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (B or (not (r some Thing))) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (not (B)) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (not (r some B)) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (r some Self ) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (t some boolean) | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (t some not boolean) | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (t value 1) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A and (t min 2 boolean) | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
B and (r some B) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
B and (r some B) and (s some A) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
B and (r some (C and (s some A))) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
Place and (language min 2 Language) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
(not (A)) and (r some (s some (not (B)))) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
A or B | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
(not (A)) or (not (B)) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
not (B) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
{a , b} | BASE <http://example.org/ontology/> |
r some B | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
r some (A and (not (B))) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
r some ({a}) (logically equivalent to r value a) | BASE <http://example.org/ontology/> |
r some ({a , b}) | BASE <http://example.org/ontology/> |
language only Language | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
r only B | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
r only Thing (logically equivalent to Thing) | BASE <http://example.org/ontology/> |
r only (A and (s only Thing)) (logically equivalent to r only A) | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
r only (A or (s only Thing)) (logically equivalent to Thing) | BASE <http://example.org/ontology/> |
r only (s only Thing) (logically equivalent to Thing) | BASE <http://example.org/ontology/> |
r value a | BASE <http://example.org/ontology/> |
language min 2 Language | BASE <http://example.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
t some (integer or (boolean and {1 , 2})) | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> |
t some not ({1 , 2}) | BASE <http://example.org/ontology/> |
t some {1 , 2} | BASE <http://example.org/ontology/> |
t some (boolean and {1 , 2}) | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> |
t some PlainLiteral[length 10] | BASE <http://example.org/ontology/> |
t some integer[>= 3 , < 10] | BASE <http://example.org/ontology/> |
t only boolean | BASE <http://example.org/ontology/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> |
t only {1} | BASE <http://example.org/ontology/> |