Thanks, Andy!

S.

On 10/13/17, 3:40 AM, "Andy Seaborne" <a...@apache.org> wrote:

    Thanks.
    
    The inner SELECT isn't really necessary - it is just hiding ?p so rename 
    that and don't have it in the outer projection:
    
    SELECT ?s ?p ?o
    FROM named_graph:m_p
    FROM NAMED named_graph:m_p_s
    WHERE
    {
       ?s ?p ?o
       GRAPH named_graph:m_p_s { ?o ?px w:frnd }
    }
    
         Andy
    
    On 13/10/17 11:14, Lorenz Buehmann wrote:
    > I answered it on StackOverflow. And the formulation of the question was
    > confusing. He probably meant that the subjects of the second graph are
    > the object of the first graph. Anything else wouldn't make sense...
    > 
    > 
    > Here is the data that I used for testing, thus, Andy could also use it:
    > 
    > Graph named_graph:m_p
    > 
    > @prefix : <http://ex.org/> .
    > :p1    :pred1    :mp1 .
    > :p2    :pred1    :mp1 .
    > :p3    :pred1    :mp2 .
    > :p4    :pred1    :mp2 .
    > :p5    :pred1    :mp3 .
    > :p6    :pred1    :mp3 .
    > 
    > 
    > Graph named_graph:m_p_s
    > 
    > @prefix : <http://ex.org/> .
    > @prefix w: <http://ex.org/w/> .
    > 
    > :mp1   :pred2    w:frnd .
    > :mp1   :pred2    w:fdlfkdl .
    > :mp2   :pred2    w:kdsjflk .
    > :mp2   :pred2    w:jflksdlkj .
    > :mp3   :pred2    w:frnd .
    > :mp3   :pred2    w:fjksldjfls .
    > 
    > 
    > Working query:
    > 
    > PREFIX named_graph: <http://ex.org/graphs/>
    > PREFIX w: <http://ex.org/w/>
    > 
    > SELECT *
    > FROM named_graph:m_p
    > FROM NAMED named_graph:m_p_s
    > WHERE
    > {
    >    ?s ?p ?o
    >    {
    >       SELECT ?o WHERE {
    >         GRAPH named_graph:m_p_s { ?o ?p w:frnd }
    >        }
    >    }
    > }
    > 
    > 
    > Cheers,
    > 
    > Lorenz
    > 
    > 
    > 
    > On 13.10.2017 10:20, Andy Seaborne wrote:
    >>
    >>
    >> On 13/10/17 02:36, Dimov, Stefan wrote:
    >>> Hello,
    >>>
    >>> I have two graphs:
    >>
    >> Which storage system are they in?
    >> Which version of Jena?
    >>
    >>>
    >>> m_p
    >>>
    >>> p1    pred1    mp1
    >>> p2    pred1    mp1
    >>> p3    pred1   mp2
    >>> p4    pred1   mp2
    >>> p5    pred1   mp3
    >>> p6    pred1   mp3
    >>>
    >>> and m_p_s
    >>>
    >>> mp1   pred2    w:frnd
    >>> mp1   pred2    w:fdlfkdl
    >>> mp2   pred2    w:kdsjflk
    >>> mp2   pred2   w:jflksdlkj
    >>> mp3   pred2   w:frnd
    >>> mp3   pred2   w:fjksldjfls
    >>
    >> Please could you provide complete data such as TriG?
    >>
    >> It is a barrier to volunteers who answers questions if the first thing
    >> you have to do is mangle email, data preparation and disentangle
    >> partial queries.
    >>
    >>> and I want to get all the triples in m_p which objects are predicates
    >>> in m_p_s and the object of that predicates in m_p_s is w:frnd
    >>>
    >>> In other words I want to make query that returns (results with) p1,
    >>> p2, p5 and p6 from m_p and doesn’t return p3 and p4.
    >>>
    >>> I’m trying to do this with nested queries,
    >>
    >> You don't need a nested SELECT.
    >>
    >> SELECT * {
    >>     GRAPH m_p   { ?s ?p ?o }
    >>     GRAPH m_p_s { ?x ?o w:frnd }
    >> }
    >>
    >> (untested)
    >>
    >>> but it doesn’t work: E.g.
    >>>
    >>>       SELECT $subj $pred $pr
    >>
    >> $subj and $pred are not set in the query.
    >>
    >> This isn't SQL! In SPARQL, variables get bound in graph patterns.
    >>
    >>>                   FROM NAMED named_graph:m_p
    >>
    >> The RDF dataset for this query is a single named graph and empty
    >> default graph.
    >>
    >> Did you mean:
    >>
    >> FROM NAMED named_graph:m_p
    >> FROM NAMED named_graph:m_p_s
    >>
    >> ?
    >>
    >> or indeed no FROM NAMED and use a dataset directly.
    >>
    >>
    >>>                   WHERE
    >>>       {
    >>>           SELECT $pr
    >>>           WHERE
    >>>           {
    >>>              GRAPH named_graph:m_p_s { $pr $pred0 w:frnd }
    >>
    >> the m_p_s graph isn't in the dataset hence this pattern is empty.
    >>
    >> GRAPH is for access; FROM NAMED for setting up.
    >>
    >>>           }
    >>>       }
    >>>
    >>> returns empty result. I tried different things, but either I get an
    >>> error
    >>
    >> What is the error?
    >>
    >>> or empty result or everything in m_p.
    >>>
    >>> I don’t want to use UNION or FILTER for performance reasons.
    >>>
    >>> Do you have an idea how I can do it?
    >>>
    >>> Regards,
    >>> Stefan
    >>>
    > 
    

Reply via email to