You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Steven Blanchard <st...@microbiome.studio> on 2023/02/03 08:31:20 UTC

from a named graph in a federated query

Dear Jena users,

I would like to do a federated query (with SERVICE) but on a named 
graph and not on the default graph. How it is possible?

This query works if data are in the default graph :
query = """
PREFIX biolink: <<https://w3id.org/biolink/vocab/>>
PREFIX up: <<http://purl.uniprot.org/uniprot/>>
PREFIX reaction: <<http://sparql.microbiome.studio/reaction/>>

SELECT DISTINCT
        ?reaction
        (COUNT(DISTINCT ?soft) AS ?NSOFT)
FROM <urn:x-arq:UnionGraph>
WHERE {
    SERVICE 
<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>> 
{
        ?protein biolink:provided_by ?soft .
    }
    ?protein biolink:category biolink:Protein .
    ?reaction biolink:has_catalyst ?protein .

}
GROUP BY ?reaction
"""

But i have no results if data are in a named graph:
query = """
PREFIX biolink: <<https://w3id.org/biolink/vocab/>>
PREFIX up: <<http://purl.uniprot.org/uniprot/>>
PREFIX reaction: <<http://sparql.microbiome.studio/reaction/>>

SELECT DISTINCT
        ?reaction
        (COUNT(DISTINCT ?soft) AS ?NSOFT)
FROM <urn:x-arq:UnionGraph>
WHERE {
    SERVICE 
<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo2?graph=http://sparql.microbiome.studio/graph/SampleName>> 
{
        ?protein biolink:provided_by ?soft .
    }
    ?protein biolink:category biolink:Protein .
    ?reaction biolink:has_catalyst ?protein .

}
GROUP BY ?reaction
"""

What is the synthax to query a named graph by SERVICE ?

Thanks in advance,

Steven


Re: from a named graph in a federated query

Posted by Steven Blanchard <st...@microbiome.studio>.
Yes, it's perfect.

Thank you very much,

Steven

Le ven., févr. 3 2023 at 09:12:53 +0000, Rob @ DNR 
<rv...@dotnetrdf.org> a écrit :
> The SERVICE clause can include any clauses you can use elsewhere in 
> the query.  You can use a GRAPH clause inside your SERVICE clause i.e.
> 
>     SERVICE 
> <<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>>
>     {
>         GRAPH ?g { ?protein biolink:provided_by ?soft . }
>     }
> 
> If the results might be in the default graph or a named graph you can 
> use UNION and GRAPH within your SERVICE clause i.e.
> 
>     SERVICE 
> <<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>>
>     {
>         { GRAPH ?g { ?protein biolink:provided_by ?soft . } } UNION { 
> ?protein biolink:provided_by ?soft }
>     }
> 
> Hope this helps,
> 
> Rob
> 
> From: Steven Blanchard <steven.blanchard@microbiome.studio 
> <ma...@microbiome.studio>>
> Date: Friday, 3 February 2023 at 08:32
> To: users <users@jena.apache.org <ma...@jena.apache.org>>
> Subject: from a named graph in a federated query
> Dear Jena users,
> 
> I would like to do a federated query (with SERVICE) but on a named
> graph and not on the default graph. How it is possible?
> 
> This query works if data are in the default graph :
> query = """
> PREFIX biolink: <<<https://w3id.org/biolink/vocab/>>>
> PREFIX up: <<<http://purl.uniprot.org/uniprot/>>>
> PREFIX reaction: <<<http://sparql.microbiome.studio/reaction/>>>
> 
> SELECT DISTINCT
>         ?reaction
>         (COUNT(DISTINCT ?soft) AS ?NSOFT)
> FROM <urn:x-arq:UnionGraph>
> WHERE {
>     SERVICE
> <<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>>>
> {
>         ?protein biolink:provided_by ?soft .
>     }
>     ?protein biolink:category biolink:Protein .
>     ?reaction biolink:has_catalyst ?protein .
> 
> }
> GROUP BY ?reaction
> """
> 
> But i have no results if data are in a named graph:
> query = """
> PREFIX biolink: <<<https://w3id.org/biolink/vocab/>>>
> PREFIX up: <<<http://purl.uniprot.org/uniprot/>>>
> PREFIX reaction: <<<http://sparql.microbiome.studio/reaction/>>>
> 
> SELECT DISTINCT
>         ?reaction
>         (COUNT(DISTINCT ?soft) AS ?NSOFT)
> FROM <urn:x-arq:UnionGraph>
> WHERE {
>     SERVICE
> <<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo2?graph=http://sparql.microbiome.studio/graph/SampleName>>>
> {
>         ?protein biolink:provided_by ?soft .
>     }
>     ?protein biolink:category biolink:Protein .
>     ?reaction biolink:has_catalyst ?protein .
> 
> }
> GROUP BY ?reaction
> """
> 
> What is the synthax to query a named graph by SERVICE ?
> 
> Thanks in advance,
> 
> Steven


Re: from a named graph in a federated query

Posted by "Rob @ DNR" <rv...@dotnetrdf.org>.
The SERVICE clause can include any clauses you can use elsewhere in the query.  You can use a GRAPH clause inside your SERVICE clause i.e.

    SERVICE <http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>
    {
        GRAPH ?g { ?protein biolink:provided_by ?soft . }
    }

If the results might be in the default graph or a named graph you can use UNION and GRAPH within your SERVICE clause i.e.

    SERVICE <http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>
    {
        { GRAPH ?g { ?protein biolink:provided_by ?soft . } } UNION { ?protein biolink:provided_by ?soft }
    }

Hope this helps,

Rob

From: Steven Blanchard <st...@microbiome.studio>
Date: Friday, 3 February 2023 at 08:32
To: users <us...@jena.apache.org>
Subject: from a named graph in a federated query
Dear Jena users,

I would like to do a federated query (with SERVICE) but on a named
graph and not on the default graph. How it is possible?

This query works if data are in the default graph :
query = """
PREFIX biolink: <<https://w3id.org/biolink/vocab/>>
PREFIX up: <<http://purl.uniprot.org/uniprot/>>
PREFIX reaction: <<http://sparql.microbiome.studio/reaction/>>

SELECT DISTINCT
        ?reaction
        (COUNT(DISTINCT ?soft) AS ?NSOFT)
FROM <urn:x-arq:UnionGraph>
WHERE {
    SERVICE
<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo>>
{
        ?protein biolink:provided_by ?soft .
    }
    ?protein biolink:category biolink:Protein .
    ?reaction biolink:has_catalyst ?protein .

}
GROUP BY ?reaction
"""

But i have no results if data are in a named graph:
query = """
PREFIX biolink: <<https://w3id.org/biolink/vocab/>>
PREFIX up: <<http://purl.uniprot.org/uniprot/>>
PREFIX reaction: <<http://sparql.microbiome.studio/reaction/>>

SELECT DISTINCT
        ?reaction
        (COUNT(DISTINCT ?soft) AS ?NSOFT)
FROM <urn:x-arq:UnionGraph>
WHERE {
    SERVICE
<<http://jena.int.microbiomestudio.fr:8080/jena-fuseki-war-4.7.0/demo2?graph=http://sparql.microbiome.studio/graph/SampleName>>
{
        ?protein biolink:provided_by ?soft .
    }
    ?protein biolink:category biolink:Protein .
    ?reaction biolink:has_catalyst ?protein .

}
GROUP BY ?reaction
"""

What is the synthax to query a named graph by SERVICE ?

Thanks in advance,

Steven