特定のカテゴリの異なるネストされたサブカテゴリ(例:履歴)にある記事(例:要約、サムネイル)に関する情報を抽出する必要があります。 SPARQLクエリを使用してこれを行うにはどうすればよいですか?または、いくつかのSPARQLサブクエリを使用してPythonでこれを行う最適な方法は何ですか?dbPediaを使用してサブカテゴリ内のすべての記事を再帰的に抽出するには?
答えて
?sc
は、「履歴」よりも再帰的(または推移的)に狭い3つのサブカテゴリをすべて取得します。これはVirtuosoが理解できる{minDepth,maxDepth}
という表記で実装されています。他のtriplestoresはそれを理解していないかもしれません。また、IRIでトリプルを維持しながら、文字列リテラルに英語のフィルタリングを追加しました?o
。
SELECT ?sc ?lab ?p ?o
WHERE {
?sc skos:broader{1,3} <http://dbpedia.org/resource/Category:History> .
optional {?sc rdfs:label ?lab } .
?sc ?p ?o
filter (lang(?lab) = "en")
filter ((lang(?o) = "en") || isURI(?o))
}
さらに、このクエリは、?sc
のすべてのトリプルを対象として報告します。私は抄録(述語として<http://dbpedia.org/ontology/abstract>
を使用していますか?)またはサムネイル関係を見ませんでした。あなただけdistinct ?p
、あるいはカウントを投影していることを確認することができます
SELECT ?p (count(?p) as ?pcount)
WHERE {
?sc skos:broader{1,3} <http://dbpedia.org/resource/Category:History> .
optional {?sc rdfs:label ?lab } .
?sc ?p ?o
filter (lang(?lab) = "en")
filter ((lang(?o) = "en") || isURI(?o))
}
group by ?p
order by desc(?pcount)
あなたはより深い再帰を行う場合は、あなたには、いくつかの要約を見つけるでしょう。しかし、深い再帰は遅く、私は概念的に何かを欠いているように感じる。
SELECT *
WHERE {
?sc skos:broader{5,7} <http://dbpedia.org/resource/Category:History> .
?sc <http://dbpedia.org/ontology/abstract> ?a
}
本当に良い答えです。あるコメントでは、プロパティパスで 'property {n、m}'を使うのは非標準SPARQL構文であり、Virtuosoの拡張だけであることに言及してください。 [投稿フェーズ](https://www.w3.org/TR/sparql11-property-paths/)で議論されましたが、残念ながら正式な[W3C勧告](https://www.w3.org/TR/sparql11-query /#propertypaths)。乾杯! – AKSW
ありがとう!最初のクエリは非常に目標に近いです。 "en"にフィルタを追加するにはどうすればよいですか?列 "p"には "@en"という値が含まれていますが、最後の列には現在異なる言語の行が含まれています。 – sermal
フィードバックいただきありがとうございます。 「p」列に「en」の値が含まれているとはどういう意味ですか? pは述語であり、言語型のリテラルではありません。私は?labと?oのフィルタリングを表示する答えを更新しました。これはリテラルとは対照的に、oがIRIであるscとpの関係を隠すことに注意してください。たとえば、サムネイル画像のURLを非表示にすることがあります。 –
- 1. disqusを使用して記事からコメントを抽出する
- 2. 再帰ベースを使用して数字を抽出する
- 3. すべてのリーフノードを抽出する再帰関数
- 4. レポート内にすべてのサブオブジェクトを再帰的に表示
- 5. フォルダ内のすべての.phpファイルを再帰的に検索
- 6. メイクファイルのフォルダ内のすべてのファイルを再帰的にインクルードするには
- 7. ボイラーパイプを使用して英語以外の記事を抽出する
- 8. Delphiを使用してすべてのファイルとフォルダを再帰的に削除
- 9. Javascriptを使用してウェブサイトに存在するすべてのリンクを再帰的に取得するには?
- 10. VBAの式から値を再帰的に抽出します
- 11. アルターバッチスクリプトを再帰的にすべてのファイルタイプを変更するには、すべてのサブディレクトリ内の
- 12. TSQLを使用してすべての記事をパブリケーションに追加する
- 13. 配列内のすべてのサブセットを再帰的に再帰的に次の繰り返しにジャンプしないように出力する
- 14. DBPedia SpotlightでDBPediaカテゴリを抽出するには?
- 15. GroovyでJSONフィールドの値を再帰的に抽出する
- 16. 再帰を使用してすべての順列を出力します。
- 17. すべてのディレクトリを再帰的にリストする方法は?
- 18. 再帰的に(使用してPHP)
- 19. リスト内のすべての文字を再帰的に読み込むには?
- 20. フォルダ内のすべてのバイナリファイルを再帰的に削除します
- 21. リスト内のすべてのサブリストを再帰的に削除します
- 22. PHP - 再帰的なサブカテゴリの追加
- 23. PHPを使用してbody内のすべてのhtmlタグを抽出する
- 24. bashを使用すると、ディレクトリ内のすべてのファイルを検索する方法(再帰的に)
- 25. 記事内のすべての文字を除いたWikipedia APIが抽出を返しますか?
- 26. すべてのレベルのツリーを再帰的に解析する
- 27. ルートディレクトリのすべてのファイルを再帰的にマージする
- 28. excelマクロをフォルダ内のすべてのディレクトリで再帰的に実行する
- 29. ディレクトリ内のすべての.rarファイルを再帰的にリストする方法
- 30. ディレクトリ内のすべてのファイルを再帰的に取得するNodejS
たとえば、私は履歴カテゴリに興味があります。このカテゴリにはサブカテゴリがあり、各サブカテゴリにはサブカテゴリなどがあります。そして私は、Historyのサブカテゴリの異なるレベルからすべての記事を検索したいと思います。 PREFIXのDCT: SELECT X?{X DCT:被験者 } –
sermal
あなたの質問を編集し、質問に記入してください(そこに書式設定されたMarkdown) - コメントではありません – AKSW
サブカテゴリは 'skos:broader' respを使って取り出すことができます。 'skos:narrower'関係です。カテゴリ階層が大きすぎると高価すぎる可能性があるので、トラバーサルの深さを制限する必要があります。 – AKSW