2

私は国や都市のためにOWLでオントロジーを構築しようとしています(そのような実装がすでに存在する場合は、それを私に指摘してください)

データを取得するために、次のコードでsparqlを使用しようとしています。

SELECT ?c WHERE {
   ?c rdfs:label ?name .
   ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}

私はsparqlとdbpediaの初心者です。上記のコードは、すべての都市とそれらが存在する国を返しているわけではありません。これを実現するには、dbpediaを使用する必要があります。

なにか提案を?

4

2 に答える 2

7

SPARQLは大文字と小文字を区別します(RDFは大文字と小文字を区別するため)。DBpediaでは、プロパティ名は小文字で始まり(たとえばdbpedia-owl:country、「Xに属する国は...」)、クラス名は大文字で始まるという規則を使用しています(たとえばdbpedia-owl:Country)。

動作によって、つまり結果が返される場合、これは(Cityの代わりにcity)動作します:

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbpedia-owl:City ; 
              rdfs:label ?label ; 
              dbpedia-owl:country ?country 
}

ただし、あなたと私が都市と呼ぶすべての場所が-として定義されているわけではないことに注意してくださいdbpedia-owl:City-それらはクラスdbpedia-owl:Settlementまたは他のクラスのものである可能性があります。したがって、上記のクエリでは、必要なすべての都市が得られるとは限りません。

また、オントロジーを構築するために、「データ」は必要ありません。オントロジーは、たとえば、すべての都市が人口の多い場所であり、すべての人口の多い場所が場所であることを定義します。それを言うことができるために、あなたはエジンバラがイギリスにいることを知る必要はありません。

于 2013-03-26T17:54:55.723 に答える
1

https://dbpedia.org/sparqlで次のコードを使用します

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbo:City ; 
        rdfs:label ?label ; 
        dbo:country ?country 
     }
于 2017-06-05T06:39:20.950 に答える