10

Wikipedia:Stack OverflowのようなWikipediaページを考えると、多くの場合、インフォボックスがあります(ほとんどの場合、ページ上部の右側にあります)。スクリーンショットの例:

ウィキペディアのStackoverflowインフォボックス

  1. DBPediaは、これらすべての属性をRDFトリプルとしてリストします。DBPedia:StackOverflowで例を見ることができます。そこには、興味深いdbpprop:wikiPageUsesTemplate値を持つプロパティが表示されます。dbpedia:Template:Infobox_websiteどのウィキペディアのページがこのテンプレートを使用しているか知りたいです。どうすればそれを実行し、Infobox_websiteテンプレートを使用するすべてのページを一覧表示できますか?できればSPARQLクエリを使用しますが、他の簡単なソリューションも利用できます。

  2. 次は、すべてのインフォボックステンプレートのリストです。ウィキペディア:カテゴリインフォボックステンプレートには、目的のウィキペディアカテゴリの階層が表示されます。これは私が探しているもののように見えます。しかし、私はこれらすべてを1ページに機械可読形式で表示したいと考えています。たぶん、DBPediaはここでも正しいことですか?DBPedia :Category Infox TemplatesおよびDBPedia:INFOBOXでは、情報がほとんど見つかりません。しかし、これらは非常に有望に見えます。SPARQLを使用してすべてのインフォボックスタイプを検索し、それぞれに対してステップ1を繰り返し実行するにはどうすればよいですか?

これを使用して、SPARQLクエリをテストできます:http://dbpedia.org/snorql/

アップデート1

問題番号1を解決したようです:SPARQL:Infobox_websiteですべてのページを一覧表示します

アップデート2

また、これは問題番号2のクエリのようです。SPARQL:すべてのインフォボックスを一覧表示します

4

3 に答える 3

8

わかりました。解決策を見つけたようですが(おそらく最善ではないでしょう)、それらを共有したいと思います。

1)このSPARQLクエリを使用して、特定のインフォボックスタイプを含むすべてのページを検索できます。

SELECT * WHERE {?page dbpedia2:wikiPageUsesTemplate<http://dbpedia.org/resource/Template:Infobox_website>。?page dbpedia2:name?name。}

SNORQLでのリンク


2)このSPARQLクエリは、すべてのインフォボックスタイプを検索するために使用できます。

SELECT DISTINCT?template WHERE {?page dbpedia2:wikiPageUsesTemplate?template。FILTER(regex(?template、 "Infobox"))。} ORDER BY?template

SNORQLでのリンク

于 2011-11-04T05:04:30.110 に答える
2

以前の回答は機能しなくなったようです。ただし、 http: //live.dbpedia.org/sparqlにある新しいdbpediaクエリエンドポイントで機能させるために必要な変更はわずかです。

このクエリを使用するすべてのページとテンプレートのリストを取得するには、次のようにします。

SELECT * WHERE {  ?page  dbpprop:wikiPageUsesTemplate ?template . }

結果を見る(100に制限)

特定のテンプレートを探している場合:

SELECT * WHERE {  
   ?page  
   dbpprop:wikiPageUsesTemplate 
   <http://dbpedia.org/resource/Template:Infobox_website> . 
}

結果を見る

また、私のユースケースでは、DBPediaページではなくWikipediaのURLに関心があるため、次のクエリを使用しています。

SELECT ?wikipedia_url WHERE {  
   ?page  
   dbpprop:wikiPageUsesTemplate 
   <http://dbpedia.org/resource/Template:Infobox_website> . 
   ?page foaf:isPrimaryTopicOf ?wikipedia_url .
}

結果を見る

curlまた、結果をスクリプトにプルするために使用しています。

$ curl -s "http://live.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=SELECT+%3Fwikipedia_url+WHERE+%7B+%0D%0A%09+%3Fpage+%0D%0A%09+dbpprop%3AwikiPageUsesTemplate+%0D%0A%09+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3AInfobox_website%3E+.+%0D%0A+%3Fpage+foaf%3AisPrimaryTopicOf+%3Fwikipedia_url+.%0D%0A%0D%0A%09%7D&format=text%2Ftab-separated-values" \
| tr -d \" | grep -v "^wikipedia_url$" | head
http://en.wikipedia.org/wiki/U.S._News_&_World_Report
http://en.wikipedia.org/wiki/FriendFinder
http://en.wikipedia.org/wiki/Debkafile
http://en.wikipedia.org/wiki/GTPlanet
http://en.wikipedia.org/wiki/Lithuanian_Wikipedia
http://en.wikipedia.org/wiki/Connexions
http://en.wikipedia.org/wiki/Hypno5ive
http://en.wikipedia.org/wiki/Scoop_(website)
http://en.wikipedia.org/wiki/Bhoomi_(software)
http://en.wikipedia.org/wiki/Brainwashed_(website)

ただし、これで完全な結果セットが得られるかどうかはわかりません。1698の結果が返されるのに対し、wmflabs.orgは4439の結果が必要であると示唆しているようです。


質問の2番目の部分では、すべてのテンプレートのリストを取得するために、前のクエリからわずかな変更を加えるだけで済みます。

SELECT DISTINCT ?template WHERE { 
    ?page  
    dbpprop:wikiPageUsesTemplate  
    ?template . 
    FILTER (regex(?template, "Infobox")) . 
} ORDER BY ?template

結果を見る

于 2015-08-13T16:50:18.627 に答える
1

MediaWiki APIの埋め込みクエリを使用して、特定のテンプレートを含むすべてのページのリストを返すこともできます。ただし、APIにアクセスするためにライブラリを使用することをお勧めしますが、どの言語を使用しますか?Rubyの場合は、MediaWiki::Gatewayをお勧めします。

于 2011-11-04T00:03:05.280 に答える