{"action":"created","issue":{"url":"https://api.github.com/repos/RDFLib/rdflib/issues/512","labels_url":"https://api.github.com/repos/RDFLib/rdflib/issues/512/labels{/name}","comments_url":"https://api.github.com/repos/RDFLib/rdflib/issues/512/comments","events_url":"https://api.github.com/repos/RDFLib/rdflib/issues/512/events","html_url":"https://github.com/RDFLib/rdflib/pull/512","id":102561299,"number":512,"title":"sparqlstore: Optionally support blank nodes as <bnode:> URIs","user":{"login":"ssssam","id":6330,"avatar_url":"https://avatars.githubusercontent.com/u/6330?v=3","gravatar_id":"","url":"https://api.github.com/users/ssssam","html_url":"https://github.com/ssssam","followers_url":"https://api.github.com/users/ssssam/followers","following_url":"https://api.github.com/users/ssssam/following{/other_user}","gists_url":"https://api.github.com/users/ssssam/gists{/gist_id}","starred_url":"https://api.github.com/users/ssssam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ssssam/subscriptions","organizations_url":"https://api.github.com/users/ssssam/orgs","repos_url":"https://api.github.com/users/ssssam/repos","events_url":"https://api.github.com/users/ssssam/events{/privacy}","received_events_url":"https://api.github.com/users/ssssam/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/RDFLib/rdflib/labels/enhance","name":"enhance","color":"02e10c"},{"url":"https://api.github.com/repos/RDFLib/rdflib/labels/SPARQL","name":"SPARQL","color":"02d7e1"},{"url":"https://api.github.com/repos/RDFLib/rdflib/labels/store","name":"store","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/RDFLib/rdflib/milestones/7","html_url":"https://github.com/RDFLib/rdflib/milestones/rdflib%204.2.2","labels_url":"https://api.github.com/repos/RDFLib/rdflib/milestones/7/labels","id":1250300,"number":7,"title":"rdflib 4.2.2","description":"","creator":{"login":"joernhees","id":464192,"avatar_url":"https://avatars.githubusercontent.com/u/464192?v=3","gravatar_id":"","url":"https://api.github.com/users/joernhees","html_url":"https://github.com/joernhees","followers_url":"https://api.github.com/users/joernhees/followers","following_url":"https://api.github.com/users/joernhees/following{/other_user}","gists_url":"https://api.github.com/users/joernhees/gists{/gist_id}","starred_url":"https://api.github.com/users/joernhees/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joernhees/subscriptions","organizations_url":"https://api.github.com/users/joernhees/orgs","repos_url":"https://api.github.com/users/joernhees/repos","events_url":"https://api.github.com/users/joernhees/events{/privacy}","received_events_url":"https://api.github.com/users/joernhees/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":1,"state":"open","created_at":"2015-08-11T17:00:01Z","updated_at":"2015-08-23T10:57:50Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-08-22T19:28:02Z","updated_at":"2015-08-23T11:51:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RDFLib/rdflib/pulls/512","html_url":"https://github.com/RDFLib/rdflib/pull/512","diff_url":"https://github.com/RDFLib/rdflib/pull/512.diff","patch_url":"https://github.com/RDFLib/rdflib/pull/512.patch"},"body":"The 4Store triple store understands <bnode:> URIs as pointing to blank\r\nnodes, which makes it possible to query and update them using its SPARQL\r\nendpoint.\r\n\r\nhttps://github.com/RDFLib/rdflib/issues/511"},"comment":{"url":"https://api.github.com/repos/RDFLib/rdflib/issues/comments/133820721","html_url":"https://github.com/RDFLib/rdflib/pull/512#issuecomment-133820721","issue_url":"https://api.github.com/repos/RDFLib/rdflib/issues/512","id":133820721,"user":{"login":"uholzer","id":2675658,"avatar_url":"https://avatars.githubusercontent.com/u/2675658?v=3","gravatar_id":"","url":"https://api.github.com/users/uholzer","html_url":"https://github.com/uholzer","followers_url":"https://api.github.com/users/uholzer/followers","following_url":"https://api.github.com/users/uholzer/following{/other_user}","gists_url":"https://api.github.com/users/uholzer/gists{/gist_id}","starred_url":"https://api.github.com/users/uholzer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uholzer/subscriptions","organizations_url":"https://api.github.com/users/uholzer/orgs","repos_url":"https://api.github.com/users/uholzer/repos","events_url":"https://api.github.com/users/uholzer/events{/privacy}","received_events_url":"https://api.github.com/users/uholzer/received_events","type":"User","site_admin":false},"created_at":"2015-08-23T11:51:14Z","updated_at":"2015-08-23T11:51:14Z","body":"Seems to be a nice feature. However, as it is non-standard, other SPARQL stores might have other solutions to this problem. I personally would prefere if one could pass the SPARQLStore a function as `bNodeAsURI` (or in this case, better `bNodeToURI`) which transforms a BNode into a URIRef. Then we could predefine a `SPARQLStore.BNODE_TO_BNODE_URI = lambda bn: UIRef('<bnode:%s>' % bn)`.\r\n\r\nIf we implement this features, shouldn't we also convert `<bnode:...>`-URIs received from the server to `BNode` instances if `bNodeAsURI` is set? And then, there is also [skolemization](http://www.w3.org/TR/rdf11-concepts/#section-skolemization), which may be supported by some SPARQL endpoints.\r\n\r\nAny ideas on how to find a flexible solution that can be adapted to a specific enpoint?\r\n\r\nAnd finally, we should not forget about the `SPARQLUpdateStore`, which might need to be adapted too."}}