2 つの問題があります。
問題1
この第 1 号には適切なドキュメントが Stack にありますが、他の誰も私と同じ結果を得ていないようです。次のクエリを実行すると:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?person ?commonName ?nationality WHERE {
?person a dbpedia-owl:Person ;
dbpedia-owl:commonName ?commonName . FILTER(lang(?commonName) = 'en')
?person a dbpedia-owl:Person;
dbpedia-owl:birthDate ?birthDate
}
LIMIT 30
この人のリストを取得します:
偉大な。今、私は重複を切り取ろうとしています (3 つの異なる言語で 3 回登場する Abba Suan のように、英語を維持したい) 私はこれを行います:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?person (SAMPLE(?commonName) as ?commonName) ?birthDate WHERE {
?person a dbpedia-owl:Person ;
dbpedia-owl:commonName ?commonName . FILTER(lang(?commonName) = 'en')
?person a dbpedia-owl:Person;
dbpedia-owl:birthDate ?birthDate
}
LIMIT 30
これらの結果: 新しい SPARQL の結果
だから、私には2つのまったく異なる人々のリストがあるように思えます. この方法で人を失っていないことをどうやって知ることができますか? 特定の属性を持つウィキペディアのすべての人をダウンロードしようとしていますが、これは 2 を発行するための素晴らしいセグウェイです。
問題2
上記のコードを記述すると、これら 2 つの属性に対して正常に機能します。ただし、nationality 属性と knownFor 属性を追加しようとすると (これらが何をしたか、どこから来たかがわかります)、コードがバグります。これらの属性はすべて、DBPedia 構造の Person の同じページにあります。
このコードでは、nationality フィールドと knownFor フィールドに何も表示されません。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?person (SAMPLE(?commonName) as ?commonName) ?birthDate ?nationality ? knownFor WHERE {
?person a dbpedia-owl:Person ;
dbpedia-owl:commonName ?commonName . FILTER(lang(?commonName) = 'en')
?person a dbpedia-owl:Person;
dbpedia-owl:birthDate ?birthDate .
OPTIONAL {?person a dbpedia-owl:Person;
dbpedia-owl:nationality ?nationality .}
OPTIONAL {?person a dbpedia-owl:Person;
dbpedia-owl:knownFor ?knownFor .}
}
LIMIT 30
これらの結果:
問題のいずれかに対するヘルプは非常に役立ちます! ありがとう