1

このクエリを実行すると

SELECT ?a ?b ?c ?g ?maxtrust
WHERE
{
  {
    SELECT ?a (MAX(?t) AS ?maxtrust)
    WHERE{
    GRAPH ?g { ?a a gr:productorservicemodel } 
    GRAPH <uri:trust> { ?g exepo:trust ?t}
    }
    GROUP BY ?a
  }
GRAPH ?g {?a ?b ?c}
GRAPH <uri:trust> { ?g exepo:trust ?maxtrust}
}

私はこの応答を受け取ります:

| a         | b                | c                        | g         | maxtrust |
|-----------|------------------|--------------------------|-----------|----------|
| uri:prodA | rdf:type         | gr:ProductOrServiceModel | uri:alice | 1.0      |
| uri:prodA | exe:EarCoupling  | Intraaural               | uri:alice | 1.0      |
| uri:prodA | exe:WearingStyle | In-ear                   | uri:alice | 1.0      |
| uri:prodB | rdf:type         | gr:ProductOrServiceModel | uri:bob   | 0.5      |
| uri:prodB | exe:EarCoupling  | Extraauricolare          | uri:bob   | 0.5      |

私は と の関係にしか興味がないので 、このクエリでうまくいくaと 思いました。g

SELECT ?a ?g
WHERE
{
  {
    SELECT ?a (MAX(?t) AS ?maxtrust)
    WHERE{
    GRAPH ?g { ?a a gr:productorservicemodel } 
    GRAPH <uri:trust> { ?g exepo:trust ?t}
    }
    GROUP BY ?a
  }
GRAPH ?g {?a ?b ?c}
GRAPH <uri:trust> { ?g exepo:trust ?maxtrust}
}

私はこの結果を期待していました:

| a         | g         |
|-----------|-----------|
| uri:prodA | uri:alice |
| uri:prodA | uri:alice |
| uri:prodA | uri:alice |
| uri:prodB | uri:bob   |
| uri:prodB | uri:bob   |

代わりに私はこれを得ました:

| a         | g         |
|-----------|-----------|
| uri:prodA | uri:alice |
| uri:prodA | uri:alice |
| uri:prodA | uri:alice |

何が起こっている?SPARQL ロジックの私の理解は完全に間違っていますか?

編集:詳細

データセットは次のとおりです。

アリス ( GRAPH uri:alice):

uri:prodA
    a gr:ProductOrServiceModel;
    exe:EarCoupling "Intraaural"^^xsd:string ;
    exe:WearingStyle "In-ear"^^xsd:string .

ボブ ( GRAPH uri:bob):

uri:prodA
    a gr:ProductOrServiceModel;
    exe:EarCoupling "Intraauricolare"^^xsd:string .
uri:prodB
    exe:WearingStyle "extraauricolare"^^xsd:string .

信頼 ( GRAPH uri:trust):

uri:alice exe:trust "1.0"^^xsd:float .
uri:bob exe:trust "0.5"^^xsd:float .

stardog をトリプルストアとして使用しています

4

1 に答える 1

0

と の関係のみに関心がある場合は、クエリがはるかに簡単になる可能性が?aあります。?g

select distinct ?a ?g where {
  graph ?g { ?a [] [] }
}
于 2015-05-10T17:28:09.030 に答える