Hello Jerven, In Virtuoso, transitive queries should have some equality at one end of chain (or at both ends). It may be relaxed in the future, but now it may requires some additional refinement on one of variables. It's not bad idea anyway; in most cases you don't want to get a result set with all subjects mentioned in a graph or in a whole storage.
On LOD, 50B quads, the following works quite fast: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select ?sub ?super WHERE { { select distinct ?sub where { { ?sub a rdfs:Class } union { ?sub rdfs:subClassOf|^rdfs:subClassOf|^rdfs:Domain|^rdfs:Range ?x } } } ?sub (rdfs:subClassOf)* ?super } but demonstrates that the database contains enough garbage in some graphs. Formally speaking, blank nodes are legal as types and they are found in LOD but I've never seen types without IRIs in "my" ontologies and I'm egocentric enough to treat such types as garbage. Next version eliminates blank node supertypes: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select ?sub ?super WHERE { { select distinct ?super where { { ?super a rdfs:Class } union { ?super rdfs:subClassOf|^rdfs:subClassOf|^rdfs:Domain|^rdfs:Range ?x } filter (isIRI(?super)) } } ?sub (rdfs:subClassOf)* ?super } The common idea is self-evident. Some subquery or a triple pattern enumerates starting or ending ends, the transitive path deals with each end in turn. In data manipulations, it may be convenient to make one insert of transitive closure per one start or end, so a select query enumerates starting or ending ends and a data manipulation statement is executed in a loop, once for each enumerated node. Something like for (sparql select distinct ?end where { enumeration pattern } ) do { sparql insert { ?s p ?o } where { ?s p* ?o . filter (?s = ?:end) } ; } inside a stored procedure. The advantage is that the DML statements in the loop body can be placed in an async_queue, providing better hardware utilization on multi-processor box or on a cluster. Best Regards, Ivan Mikhailov OpenLink Software http://virtuoso.openlinksw.com On Tue, 2013-05-14 at 12:57 +0200, Jerven Bolleman wrote: > Hi Hugh, > > That is not a SPARQL 1.1 requirement. Are the developers aiming to > remove this constraint? > > Anyway, I then hit the next roadblock. > > Exception:virtuoso.jdbc3.VirtuosoException: TN...: Exceeded 1000000000 > bytes in transitive temp memory. use t_distinct, t_max or more > T_MAX_memory options to limit the search or increase the pool > > Looking at google the only way to change this is in the code. > Is this still correct? > > Regards, > Jerven > > On 14/05/13 12:31, Hugh Williams wrote: > > Hi Jerven, > > > > Either ?sub or ?super (or both) should appear in some non-transitive > > triple pattern to specify at least one of transitive ends. > > > > See the following property path examples: > > > > http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtTipsAndTricksSPARQL11PropertyPaths > > > > Best Regards > > Hugh Williams > > Professional Services > > OpenLink Software, Inc. // http://www.openlinksw.com/ > > 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 14 May 2013, at 09:16, Jerven Bolleman <[email protected] > > <mailto:[email protected]>> wrote: > > > >> Hi All, > >> > >> When executing > >> > >> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> > >> > >> CONSTRUCT > >> { ?sub rdfs:subClassOf ?super .} > >> FROM <http://purl.uniprot.org/go/> > >> WHERE > >> { ?sub (rdfs:subClassOf)* ?super } > >> > >> I get the following exception. > >> > >> Query evaluation failed:PREFIX > >> rdfs:<http://www.w3.org/2000/01/rdf-schema#> CONSTRUCT {?sub > >> rdfs:subClassOf ?super} FROM <http://purl.uniprot.org/go/> WHERE {?sub > >> rdfs:subClassOf* ?super} > >> org.openrdf.query.QueryEvaluationException: : SPARQL execute > >> failed:[PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> CONSTRUCT > >> {?sub rdfs:subClassOf ?super} FROM <http://purl.uniprot.org/go/> WHERE > >> {?sub rdfs:subClassOf* ?super}] > >> Exception:virtuoso.jdbc3.VirtuosoException: TR...: transitive start > >> not given > >> at > >> virtuoso.sesame2.driver.VirtuosoRepositoryConnection.executeSPARQLForHandler(Unknown > >> > >> Source) > >> > >> > >> Regards, > >> Jerven > >> -- > >> ------------------------------------------------------------------- > >> Jerven Bolleman [email protected] > >> <mailto:[email protected]> > >> SIB Swiss Institute of Bioinformatics Tel: +41 (0)22 379 58 85 > >> CMU, rue Michel Servet 1 Fax: +41 (0)22 379 58 58 > >> 1211 Geneve 4, > >> Switzerland www.isb-sib.ch <http://www.isb-sib.ch> - www.uniprot.org > >> <http://www.uniprot.org> > >> Follow us at https://twitter.com/#!/uniprot > >> ------------------------------------------------------------------- > >> > >> ------------------------------------------------------------------------------ > >> AlienVault Unified Security Management (USM) platform delivers complete > >> security visibility with the essential security capabilities. Easily and > >> efficiently configure, manage, and operate all of your security controls > >> from a single console and one unified framework. Download a free trial. > >> http://p.sf.net/sfu/alienvault_d2d > >> _______________________________________________ > >> Virtuoso-users mailing list > >> [email protected] > >> https://lists.sourceforge.net/lists/listinfo/virtuoso-users > > > >
smime.p7s
Description: S/MIME cryptographic signature
------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d
_______________________________________________ Virtuoso-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/virtuoso-users
