Blank nodes are local to the graph. Why don't you relabel them as URIs and the problem should go away? (if I understood your use case correctly)
On Wed, Jan 6, 2016 at 5:50 PM, Paul Houle <ontolo...@gmail.com> wrote: > This is a simple scenario, I can accomplish the specific thing I am trying > to di by other means, but if I can get this to work it leads to a strategy > inspired by SPIN, I'm showing it though because it is a simple and clear > example. > > I have two graphs, > > G1: > > [] a :DatasetArtifact ; > :name e:tdb ; > :path "/lei/testCase/a" . > > > G2: > > @prefix : <http://rdf.ontology2.com/mogrifier1/> > > :DatasetArtifact :implementation > <java:com.ontology2.rdf.mogrifier.MemoryDatasetFactory> . > :GraphArtifact :implementation > <java:com.ontology2.rdf.mogrifier.GraphInsertFactory> . > :LuceneArtifact :implementation > <java:com.ontology2.rdf.mogrifier.LuceneFactory> . > > Now I can query the union of G1 and G2 and I want to make the graph > above look like > > [] a :DatasetArtifact ; > :name e:tdb ; :implementation > <java:com.ontology2.rdf.mogrifier.MemoryDatasetFactory> . > :path "/lei/testCase/a" . > > I can do the following CONSTRUCT query > > prefix : <http://rdf.ontology2.com/mogrifier1/> > > CONSTRUCT { > ?artifact :implementation ?class > } WHERE { > ?artifact a ?type . > ?type :implemenation ?class . > } > > And this will do the right thing if the "root" node is not a bnode but > if it is a bnode it creates an output like > > G3 > > [ :implementation <java:com.ontology2.rdf.mogrifier.MemoryDatasetFactory> ] > > and this bnode is not the same bnode as the original bnode so when I > take the model I get from execConstruct and append G3 to G1 I don't > get the desired result. If I try to have the construct put results > back into the original model I get a ConcurrentModificationException > so I can't do it that way. > > Operations like this where you pull out a bnode reference and then add > some properties to it are easy to do with the Model interface, but > not officially supported in SPARQL. > > I know that Jena and some other stores support ways to get bnode > identifiers out of SPARQL queries so it seems to me that has to be > some trick, even if it is a touch evil, that makes it possible to do > something like the above. I could skolemize the roots, but I might > have 2nd level or 3rd level bnodes in some records. There are a > number of other ways I could merge in the :implementation that would > work just fine in this case, but I like the simplicity of this > solution, the ability to do much more complex things with more > complex queries and the composibility of this approach. > > Is this practical to attain? > > > > > -- > Paul Houle > > *Applying Schemas for Natural Language Processing, Distributed Systems, > Classification and Text Mining and Data Lakes* > > (607) 539 6254 paul.houle on Skype ontolo...@gmail.com > > :BaseKB -- Query Freebase Data With SPARQL > http://basekb.com/gold/ > > Legal Entity Identifier Lookup > https://legalentityidentifier.info/lei/lookup/ > <http://legalentityidentifier.info/lei/lookup/> > > Join our Data Lakes group on LinkedIn > https://www.linkedin.com/grp/home?gid=8267275