7.15 Other Recommendations and Guidelines
This section contains various recommendations and other information related to SPARQL queries.
- BOUND or !BOUND Instead of EXISTS or NOT EXISTS
- SPARQL 1.1 SELECT Expressions
- Syntax Involving Bnodes (Blank Nodes)
- Limit in the SERVICE Clause
Parent topic: RDF Graph Support for Apache Jena
7.15.1 BOUND or !BOUND Instead of EXISTS or NOT EXISTS
For better performance, use BOUND
or !BOUND
instead of EXISTS
or NOT EXISTS
.
Parent topic: Other Recommendations and Guidelines
7.15.2 SPARQL 1.1 SELECT Expressions
You can use SPARQL 1.1 SELECT expressions without any significant performance overhead, even if the function is not currently supported within Oracle Database. Examples include the following:
-- Query using SHA1 function PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX eg: <http://biometrics.example/ns#> SELECT ?name ?email (sha1(?email) as ?sha1) WHERE { ?x foaf:name ?name ; eg:email ?email . } -- Query using CONCAT function PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ( CONCAT(?G, " ", ?S) AS ?name ) WHERE { ?P foaf:givenName ?G ; foaf:surname ?S }
Parent topic: Other Recommendations and Guidelines
7.15.3 Syntax Involving Bnodes (Blank Nodes)
Syntax involving bnodes can be used freely in query patterns. For example, the following bnode-related syntax is supported at the parser level, so each is equivalent to its full triple-query-pattern-based version.
:x :q [ :p "v" ] . (1 ?x 3 4) :p "w" . (1 [:p :q] ( 2 ) ) .
Parent topic: Other Recommendations and Guidelines
7.15.4 Limit in the SERVICE Clause
When writing a SPARQL 1.1 federated query, you can set a limit on returned rows in the subquery inside the SERVICE clause. This can effectively constrain the amount of data to be transported between the local repository and the remote SPARQL endpoint.
For example, the following query specifies limit 100
in the subquery in the SERVICE clause:
PREFIX : <http://example.com/> SELECT ?s ?o WHERE { ?s :name "CA" SERVICE <http://REMOTE_SPARQL_ENDPOINT_HERE> { select ?s ?o {?s :info ?o} limit 100 } }
Parent topic: Other Recommendations and Guidelines