Reputation: 8915
What am I doing wrong here?
public class SimpleSearchTest {
public static void main(String[] args) throws Exception {
Model model = ModelFactory.createDefaultModel();
model.getGraph().add(new Triple(Node.createURI("a"), Node.createURI("b"), Node.createURI("c")));
String queryString = "SELECT ?p ?o WHERE { <a> ?p ?o }";
Query query = QueryFactory.create(queryString);
QueryExecution qExec = QueryExecutionFactory.create(query, model);
ResultSetFormatter.out(qExec.execSelect());
}
}
I am expecting
-------------
| p | o |
=============
| <b> | <c> |
-------------
But instead I am getting no results:
---------
| p | o |
=========
---------
I am sure it is something dumb...
Upvotes: 2
Views: 393
Reputation: 13305
I think the SPARQL parser isn't liking your <a>
because it's not a legal URI (though it's odd that you don't get a warning). If you change your code as follows:
model.getGraph().add(new Triple(Node.createURI("http://example.com/a"), Node.createURI("b"), Node.createURI("c")));
String queryString = "SELECT ?p ?o WHERE { <http://example.com/a> ?p ?o }";
you get the result you are expecting.
Parenthetically, by creating the test graph with Node.createURI()
you are using the lower-level internal Graph API, rather than the more normally used Model API. It's perfectly fine to do this, but the Graph API generally assumes you know more what you are doing, and may have fewer checks against doing the unexpected.
Upvotes: 2