1

私は現在、dbpedia または LinkedGeoData からさまざまな情報を取得する方法を見つけるために、数時間試しています。このインターフェース (http://dbpedia.org/snorql) を使用して別のアプローチを試みましたが、必要な結果が得られませんでした。

私がこのようなものを使用する場合:

SELECT * WHERE {
?subject rdf:type <http://dbpedia.org/ontology/City>.
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/populationTotal> ?populationTotal.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/populationUrban> ?populationUrban.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/areaTotal> ?areaTotal.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/populationUrbanDensity> ?populationUrbanDensity.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/isPartOf> ?isPartOf.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/country> ?country.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/ontology/utcOffset> ?utcOffset.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/property/janHighC> ?utcOffset.
    }
    OPTIONAL {
        ?subject <http://dbpedia.org/property/janLowC> ?utcOffset.
    }
}
LIMIT 20

私は限界を使い果たします。

私もこれを試しました:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT *  WHERE {
  ?subject rdf:type <http://dbpedia.org/ontology/City>.
  ?subject rdfs:label ?label.
FILTER ( lang(?label) = 'en'
}
LIMIT 100

しかし、それは私に理解できないエラーを与えます。FILTER を削除すると機能しますが、すべての言語のラベルが表示されます...

私が探しているのは、次のようなものですhttp://dbpedia.org/page/Vancouver ただし、すべてのデータではありませんが、人口、面積、国、標高、緯度、経度、タイムゾーン、label@en などのデータもあります。 abstract@en など

誰かが構文を機能させるのを手伝ってくれますか?

助けてくれてありがとう。


アップデート:

これまでのところ、次のように動作するようになりました。

SELECT DISTINCT *
WHERE {
   ?city rdf:type dbpedia-owl:Settlement ;
         rdfs:label ?label;
         dbpedia-owl:abstract ?abstract ;
         dbpedia-owl:populationTotal ?pop ;
         dbpedia-owl:country ?country ;
         dbpprop:website ?website .
   FILTER ( lang(?abstract) = 'en' && lang(?label) = 'en')
}
LIMIT 20

しかし、すべての入植地を取得したい場合は、まだ制限が不足しています。ところで。すべての都市と集落を 1 つのテーブルに入れる方法はありますか?

4

1 に答える 1

1

「制限を超えた」とは、「帯域幅制限を超えた URI = '/!sparql/'」というエラーのことですか? これは、実行に「永遠に」かかるクエリであふれないようにするために dbpedia によって設定された制限だと思います。OFFSET、LIMIT、および ORDER BY を使用して、チャンクでデータを要求できます。 http://www.w3.org/TR/rdf-sparql-query/#modOffsetを参照してください。

更新: はい、これが進むべき道のようです: http://www.mail-archive.com/dbpedia-discussion@lists.sourceforge.net/msg03368.html

2 番目のクエリでは、エラーは括弧の欠落です。これ

FILTER ( lang(?label) = 'en'

する必要があります

FILTER ( lang(?label) = 'en')

最後の質問については、1 つのクエリ/テーブルで複数のもの/(同様のクエリ) を収集する自然な方法は、UNION を使用することです。

SELECT ?x
WHERE {
  { ?x rdf:type dbpedia-owl:City }
UNION
  { ?x rdf:type dbpedia-owl:Settlement }
}
于 2012-10-12T07:49:51.057 に答える