1

ここで問題が発生しました。簡単に見えますが、Sparal クエリに詳しくないため、解決策を見つけることができませんでした。

PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?MontrealC) as ?Montrea
count(?TorontoC) as ?Toronto
count(?OttawaC) as ?Ottawa
count(?VancouverC) as ?Vancouver


WHERE
{
{?MontrealC rdf:type yago:HotelsInMontreal} UNION
{?TorontoC rdf:type yago:HotelsInToronto} UNION
{?OttawaC rdf:type yago:HotelsInOttawa} UNION
{?VancouverC a onto:Hotel .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street .
?street a yago:StreetsInVancouver}} UNION
{?VancouverC a yago:HotelsInBritishColumbia .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street.
?street a yago:StreetsInVancouver}
}}

このクエリを任意の dbpedia エンドポイントに適用すると、次のように 2 行と 4 列で表示される結果が得られます。

Montreal    Toronto     Ottawa    Vancouver
8           28          5         10

問題は、次のように2つの列と4つの行にする必要があることです:

Montreal    Toronto
8           28 
Ottawa    Vancouver
5         10

SPARQLクエリでそれは可能ですか?

4

1 に答える 1

3

これは、1 つの SPARQL クエリでは不可能です。ただし、すでに適切なデータを取得していて、それを別の表現にしたいだけなので、大きな問題にはなりません。このようにデータが必要な理由、質問するクエリの数、および手動で行うか、プログラムに埋め込むか (そうであれば、どのプログラミング言語を使用しますか) について、さらに詳しい説明をいただけますか?

本当にこの方法が必要な場合は、2 つのクエリに分割し、結果を追加します。

クエリ 1

PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?MontrealC) as ?Montreal
count(?TorontoC) as ?Toronto

WHERE
{
{?MontrealC rdf:type yago:HotelsInMontreal} UNION
{?TorontoC rdf:type yago:HotelsInToronto}
}

クエリ 2

PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX resu: <http://dbpedia.org/resource/>
PREFIX yago: <http://dbpedia.org/class/yago/>

SELECT 

count(?OttawaC) as ?Ottawa
count(?VancouverC) as ?Vancouver

WHERE
{
{?OttawaC rdf:type yago:HotelsInOttawa} UNION
{?VancouverC a onto:Hotel .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street .
?street a yago:StreetsInVancouver}} UNION
{?VancouverC a yago:HotelsInBritishColumbia .
{?VancouverC onto:location resu:Vancouver} UNION
{?VancouverC onto:location ?street.
?street a yago:StreetsInVancouver}
}}

マージ

  • 結果を query1.csv および query2.csv として保存します。
  • ターミナルで、「cat query1.csv query2.csv > query.csv」と入力します。

    $ cat query1.csv query2.csv
    "Montrea","Toronto"
    8,28
    "Ottawa","Vancouver"
    5,10
    
于 2012-04-04T12:38:25.460 に答える