You might consider asking about SPARQL optimization on the Jena mailing list since the ARQ implementation will determine how much optimization is done.
> -----Original Message----- > From: [email protected] [mailto:topbraid-composer- > [EMAIL PROTECTED] On Behalf Of Scott Henninger > Sent: Thursday, October 16, 2008 11:45 AM > To: TopBraid Composer Users > Subject: [tbc-users] Re: Properties as subjects in SPARQL Queries > > > Don, these really are SPARQL issues. There are scattered resources on > the Web. And the biggest determinant, as Holger and Jeff point out, > will be to filter results early in the query. Performance will depend > on the triple store, so looking for information with Sesame/Mulgara, > which you mentioned earlier, is a good idea. > -- Scott > > On Oct 16, 9:57 am, donundeen <[EMAIL PROTECTED]> wrote: > > Hm, I tried flipping the triples around in the query, to: > > CONSTRUCT{ > > ?subj ?pred ?obj . > > ?pred rdfs:domain ?type}WHERE{ > > > > ?pred rdfs:domain ?type . > > FILTER(?pred = vocab:Objects_Type) . > > ?subj ?pred ?obj . > > > > } > > > > and I'm not percieving much of a difference in execution time. > > > > I'd love to find some more detailed documentation on how to write > > optimal SPARQL queries. > > Anyone have any links? > > > > On Oct 16, 9:29 am, donundeen <[EMAIL PROTECTED]> wrote: > > > > > Good Idea, Ill try that for sure. > > > But I was never clear on how the order of triples in my where clause > > > affect performance. I guess I assumed that the query would be > > > optimized for me. > > > > > any resources out there that give more details on how to optimize my > > > SPARQL queries? I'm running sesame/mulgara. > > > > > On Oct 15, 5:01 pm, "Schmitz, Jeffrey A" > > > > > <[EMAIL PROTECTED]> wrote: > > > > Not to make this a SPARQL message board, but have you tried re- > ordering your query? That first line: > > > > > > ?subj ?pred ?obj > > > > > > is I think going to build your entire model before moving on to the > next line. Try something like: > > > > > > CONSTRUCT{ > > > > ?subj ?pred ?obj . > > > > ?pred rdfs:domain ?type}WHERE{ > > > > > > ?pred rdfs:domain ?type . > > > > FILTER(?pred = vocab:Objects_Type) . > > > > ?subj ?pred ?obj . > > > > > > } > > > > -----Original Message----- > > > > From: donundeen [mailto:[EMAIL PROTECTED] > > > > Sent: Wednesday, October 15, 2008 2:52 PM > > > > To: TopBraid Composer Users > > > > Subject: [tbc-users] Re: Properties as subjects in SPARQL Queries > > > > > > well, ultimately I'd export all those triples, hence the construct. > > > > > > hmm, maybe I'm confused, but a predicate can be the subject of a > triple, like ?predicate rdfs:domain ?domain > > > > > > this query works: > > > > CONSTRUCT{ > > > > ?subj ?pred ?obj . > > > > ?pred rdfs:domain ?type > > > > }WHERE{ > > > > ?subj ?pred ?obj . > > > > ?pred rdfs:domain ?type . > > > > FILTER(?pred = vocab:Objects_Type) > > > > } > > > > > > but takes forever to return. > > > > Is there a reason these kinds of queries are so slow? it just seems > to perform significantly worse than similar queries that don't use > predicates as subjects. > > > > > > thanks > > > > > > don > > > > > > On Oct 15, 2:48 pm, Scott Henninger <[EMAIL PROTECTED]> > > > > wrote: > > > > > Don; I am not clear on what you mean by "...whenever I try to use > a > > > > > predicate as the subject of a query". SPARQL uses triple patterns > to > > > > > match a graph, such as: > > > > > ?subj ?pred ?obj > > > > > > > If you then try in the same query to do > > > > > ?pred ?x ?y > > > > > > > ...you won't find a match because the first pattern bound ?pred to > a > > > > > predicate and the second is looking for ?pred as a subject of a > > > > > triple. > > > > > > > So for example, if you had the following: > > > > > :xyz vocab:ObjTitles_Title :abc > > > > > :xyz vocab:ObjTitles_Title :uvw > > > > > > > then a query with the following: > > > > > ?obj ?outPred ?outObj . > > > > > > > The result would be bound in two result sets: > > > > > ?obj=:xyz ?outPred=vocab:ObjTitles_Title ?outObj=:abc > > > > > ?obj=:xyz ?outPred=vocab:ObjTitles_Title ?outObj=:uvw > > > > > > > If you tried a query with the following: > > > > > ?obj ?outPred ?outObj . > > > > > ?outPred ?x ?outPredProps . > > > > > > > It won't match anything because vocab:ObjTitles_Title is defined > in > > > > > the data as a predicate and cannot appear as a subject or an > object. > > > > > > > If that's not the issue you are getting at, then maybe some sample > > > > > data would help. I'm also not clear what purpose the CONSTRUCT > > > > > triples are serving, given that you seem to just want to get data, > not > > > > > map it to another structure. > > > > > > > -- Scott > > > > > > > On Oct 15, 12:27 pm, donundeen <[EMAIL PROTECTED]> wrote: > > > > > > > > Hi, > > > > > > I'm trying to do some queries, to gather all data "around" some > > > > > > resource. > > > > > > Basically, questions like "Get me all triples pointing in and > out of > > > > > > this resource, and all triples connected to THOSE resources." > > > > > > > > So I put together a query like: > > > > > > CONSTRUCT { > > > > > > ?obj ?outPred ?outObj . > > > > > > ?inObj ?inPred ?obj .} WHERE { > > > > > > > > ?x vocab:ObjTitles_Title ?objTitle . > > > > > > FILTER fn:matches(?objTitle, 'madame x' ,'i') . > > > > > > ?x vocab:ObjTitles_ObjectID ?obj . > > > > > > ?obj ?outPred ?outObj . > > > > > > ?inObj ?inPred ?obj . > > > > > > > > } > > > > > > > > That query works fine. > > > > > > However, Now I want to do two additional things: > > > > > > 1. go an additional hop out, in either direction (ie, get all > > > > > > triples connected to the ?outObj and ?inObj resources) 2. Get > all > > > > > > triples connected to the PREDICATES themselves. (this would > usually > > > > > > be ontological information, like domain, subproperty, etc) > > > > > > > > Attempting to add either 1 or 2, leads to queries that don't > seem to > > > > > > ever complete. > > > > > > Here's the query I have now: > > > > > > > > CONSTRUCT { > > > > > > ?obj ?outPred ?outObj . > > > > > > ?inObj ?inPred ?obj . > > > > > > ?inPred ?y ?inPredProps . > > > > > > ?outPred ?x ?outPredProps . > > > > > > ?outObj ?outOutPred ?outOutObj . > > > > > > ?inObj ?inOutPred ?inOutObj .} WHERE { > > > > > > > > ?x vocab:ObjTitles_Title ?objTitle . > > > > > > FILTER fn:matches(?objTitle, 'madame x' ,'i') . > > > > > > ?x vocab:ObjTitles_ObjectID ?obj . > > > > > > ?obj ?outPred ?outObj . > > > > > > ?inObj ?inPred ?obj . > > > > > > OPTIONAL {?outPred ?x ?outPredProps}. > > > > > > OPTIONAL {?inPred ?y ?inPredProps } . > > > > > > OPTIONAL { ?outObj ?outOutPred ?outOutObj } . > > > > > > OPTIONAL { ?inObj ?inOutPred ?inOutObj . } > > > > > > > > } > > > > > > > > I'm wondering if my querying is creating loops somehow, and > that's > > > > > > why trying to go extra hops on the graph is making the query > fail to > > > > > > complete? > > > > > > Or is it just that there's too much data to sift through? > > > > > > > > Also, I seem to notice a big reduction in performance whenever I > try > > > > > > to use a predicate as the subject in a query. Is there a > difference > > > > > > internally (Sesame/Mulgara) in how predicates are indexed, that > > > > > > would be the cause of it? > > > > > > > > perhaps there's a better approach to this problem, which is that > I > > > > > > want to extract a connected graph, centered around some node or > > > > > > group of nodes. > > > > > > > > thanks! > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TopBraid Composer Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/topbraid-composer-users?hl=en -~----------~----~----~----~------~----~------~--~---
