Hi Hugh Any further ideas/progress on this front?
I also posted this on answers (http://answers.semanticweb.com/questions/16631/how-to-delete-triples-containing-blank-nodes-from-virtuoso) but haven't got anything illuminating there either. The best suggestion I've seen is to use a DELETE WHERE with ISBLANK in a FILTER in the WHERE clause but this doesn't work in the general case as I highlighted in my question because doing that can inadvertently delete other triples. The best suggestion I've seen is to look into whether Virtuoso supports a skolem syntax for blank nodes that can be used to refer to a specific blank node e.g. <_:bnode> or <nodeID://bnode> - I did already experiment with this and just got compiler errors. Is a syntax like this supported and documented somewhere or does Virtuoso not support this? Cheers, Rob From: Cray Employee <[email protected]<mailto:[email protected]>> List-Post: [email protected] Date: Wednesday, May 23, 2012 10:29 AM To: Hugh Williams <[email protected]<mailto:[email protected]>> Cc: <[email protected]<mailto:[email protected]>> Subject: Re: [Virtuoso-users] Inserting Blank Nodes via ADO.Net Provider Thanks Hugh I've been looking through my code again in detail to look at workarounds and here's some more information that might be relevant. So it turns out we already use DB.DBA.TTLP when writing entire graphs to the store which works fine for blank nodes. The problem case is when we want to add/remove specific triples to a graph. We're using INSERT DATA and DELETE DATA which don't accept blank nodes, I may be wrong about the behavior having changed from previous versions and it may just be the case that we and our users never tested with adding/removing blank nodes via this means and so never saw the bug until now. Regardless of whether the behavior did change or not the question still remains what is the appropriate way to add/remove triples containing blank nodes via the ADO.Net Provider? The workaround I'm testing now for inserting new triples is to detect whether any of those triples contain blank nodes and if so use DB.DBA.TTLP instead of INSERT DATA. This still leaves me with the problem of how to delete triples with blank nodes, right now I'm resorting to throwing an error saying this isn't supported but I'd ideally like a better solution than that. The only way I can think of doing this right now (which is going to be terribly performant and not scalable) is to load the entire graph into memory, do the deletes in memory and then write the whole graph back to the store. Thanks, Rob From: Hugh Williams <[email protected]<mailto:[email protected]>> List-Post: [email protected] Date: Wednesday, May 23, 2012 9:46 AM To: Cray Employee <[email protected]<mailto:[email protected]>> Cc: <[email protected]<mailto:[email protected]>> Subject: Re: [Virtuoso-users] Inserting Blank Nodes via ADO.Net Provider Hi Rob, We are checking this behaviour to see what might have changed, should have an update for you soon ... Best Regards Hugh Williams Professional Services OpenLink Software, Inc. // http://www.openlinksw.com/ 10 Burlington Mall Road, Suite 265, Burlington MA 01803 Weblog -- http://www.openlinksw.com/blogs/ LinkedIn -- http://www.linkedin.com/company/openlink-software/ Twitter -- http://twitter.com/OpenLink Google+ -- http://plus.google.com/100570109519069333827/ Facebook -- http://www.facebook.com/OpenLinkSoftware Universal Data Access, Integration, and Management Technology Providers On 23 May 2012, at 16:44, Rob Vesse wrote: Hugh Some help with this would be much appreciated Rob From: Cray Employee <[email protected]<mailto:[email protected]>> List-Post: [email protected] Date: Monday, May 21, 2012 8:25 AM To: <[email protected]<mailto:[email protected]>> Subject: [Virtuoso-users] Inserting Blank Nodes via ADO.Net<http://ADO.Net> Provider Hi All dotNetRDF uses the ADO.Net<http://ADO.Net> provider to talk to Virtuoso and has always used a SPASQL INSERT DATA command to insert data into the quad store. Up until a few versions ago this worked fine regardless of the data but a user recently reported a bug that highlights that from at least 6.1.3 onwards and certainly in 6.1.5 this method no longer accepts blank nodes. AFAICT this appears to be due to Virtuoso starting to align more closely to the official SPARQL 1.1 Update standard rather than the old SPARUL informal standard. Obviously I do not expect Virtuoso to revert to the previous behavior because I would much rather have it align properly with the standard but I'm wondering what is now the best way to insert data containing blank nodes via the ADO.Net<http://ADO.Net> provider? Can I still use INSERT DATA and just use some special syntax for blank nodes E.g. <_:bnode> or <nodeID://bnode> Or do I need to use an alternative method like call DB.DBA.TTLP() ? Rob Vesse ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ Virtuoso-users mailing list [email protected]<mailto:[email protected]>https://lists.sourceforge.net/lists/listinfo/virtuoso-users ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ Virtuoso-users mailing list [email protected]<mailto:[email protected]> https://lists.sourceforge.net/lists/listinfo/virtuoso-users ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ Virtuoso-users mailing list [email protected]<mailto:[email protected]> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
