I would like to know if there is a way to obtain the SQL query starting from a SPARQL query.
For example, I have this SPARQL query:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ub: <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#>
SELECT ?X
WHERE {
?X rdf:type ub:GraduateStudent .
?X ub:takesCourse <http://www.Department0.University0.edu/GraduateCourse0>
}
I would like to obtain something like this (the triples are stored in a table triples(subject, predicate, object):
SELECT subject
FROM triples
WHERE predicate = "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>"
AND object = "<http://swat.cse.lehigh.edu/onto/univ-bench.owl#GraduateStudent>"
AND subject IN (
SELECT subject
FROM triples
WHERE predicate = "<http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse>"
AND object = "<http://www.Department0.University0.edu/GraduateCourse0>"
)
or
SELECT subject
FROM triples
WHERE predicate = "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>"
AND object = "<http://swat.cse.lehigh.edu/onto/univ-bench.owl#GraduateStudent>"
INTERSECT
SELECT subject
FROM triples
WHERE predicate = "<http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse>"
AND object = "<http://www.Department0.University0.edu/GraduateCourse0>"
Thank you in advance!
s,p,oit would be indeed trvial at least for BGPs - it's takes more effort for things likeoptional, etc. - start with the SPARQL algebra and then write the translation - UninformedUser