I appreciate that, but that was just an example to point out that you
CAN make predicates the subject in a triple.

in reality, I'm doing other stuff with the predicate than just
checking its value.

On Oct 15, 3:58 pm, Holger Knublauch <[EMAIL PROTECTED]> wrote:
> Don,
>
> your first row iterates over all triples in the model.  In your query  
> below you can replace ?pred with the constant vocab:Objects_Type and  
> it will become lightning fast.
>
> Holger
>
> On Oct 15, 2008, at 12:52 PM, donundeen wrote:
>
>
>
> > 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to