This seems like it should be a FAQ, but I’m not finding anything useful. I’m using SPARQL to explore linked data, which includes discovering predicates. My understanding was that I could bind a subject and use variables for predicate and object.
It’s important to note that what I’m experiencing is when using dbpedia, which is built on Virtuoso - perhaps my question should be posted elsewhere? But I am doing this via a Fuseki endpoint, so there’s at least some relevance :-? Here’s what I’m trying to do: I have some queries to a Fuseki endpoint that call out to dbpedia using SERVICE blocks. Before entering the service I bind a value for ?Player, and then with the service I pose the query; > PREFIX do: <http://dbpedia.org/ontology/> ... > {SELECT DISTINCT * where { > ?Player a do:BasketballPlayer. > ?Player ?r ?A. > ?Player2 ?r ?A } I expected to find a binding for ?r as do:team. And when I pre-bind ?r to that, I see plenty of bindings for ?A and ?Player2. The one binding that I do see when leaving ?r unbound is > http://www.w3.org/1999/02/22-rdf-syntax-ns#type (I notice that dbpedia virtuso is limited - it cannot handle a BIND statement.) Is the case am I seeing universal behavior or behavior specific to virtuoso? Either way, are there clever workarounds? I do know that I can “white-list in” some bindings for ?r, using a VALUES statement. But that pretty much defeats the discovery purpose. Also, as this is varied and often schema-less content, I can’t rely on an ontology as a guide to defined predicates. Any suggestions? Thanks, Mark