How to select random DBPedia nodes from SPARQL?
In SPARQL 1.1 you can do:
SELECT ?s
WHERE {
?s ?p ?o
}
ORDER BY RAND()
LIMIT 10
I don't know offhand how many store will optimise, or even implement this yet though.
[see comment below, this doesn't quite work]
An alternative is:
SELECT (SAMPLE(?s) AS ?ss) WHERE { ?s ?p ?o } GROUP BY ?s
But I'd think that's even less likely to be optimised.
bif:rnd
is not SPARQL standard and therefore not portable to any SPARQL endpoint. You can use LIMIT , ORDER and OFFSET to simulate a random sample with a standard query. Something like ...
SELECT * WHERE { ?s ?p ?o }
ORDER BY ?s OFFSET $some_random_number$ LIMIT 10
Where some_random_number
is a number that is generated by your application. This should avoid the caching problem but this query is anyway quite expensive and I don't know if public endpoints will support it.
Try to avoid completely open patterns like ?s ?p ?o
and your query will be much more efficient.