2016-05-25 4 views
1

このSPARQL文が作品をリダイレクトします。たとえば、Pacific_Beach、_CaliforniaPacific_Beach、_San_Diegoにリダイレクトされます。これをどうすれば処理できますか?SPARQL処理は

私はRetrieving dbpedia-owl:type value of resource with dbpedia-owl:wikiPageRedirect value?Joshua Taylor's answerを読んだ、と私は私ののかしら:接頭辞はここで私をめちゃくちゃにされて? 、

ウィキブックスの章を読む:いくつかの他のリソースが組合を使用することをお勧め

select ?type where { 
    dbpedia:Cupertino dbpedia-owl:wikiPageRedirects*/dbpedia-owl:type ?type 
} 

:私は彼のソリューションを実装するように見えることはできませんXQuery/DBpedia with SPARQL - Football teams私はさらに混乱してしまいます。

私はこのようなことを学びたいと思っていますが、私はすぐに「うまく動作させる」必要があります。解決策といくつかのリンクを読んでいただければ幸いです!

答えて

4

Pacific Beach, San Diegoは何にリダイレクトされませんが、リソースの数のリダイレクト対象です:

はDBOです:Pacific_Beach、_CA :

  • DBRのwikiPageRedirects
  • dbr:Pacific_Beach、_California
  • dbr:Pacific_Beach、_San_Diego、_CA
  • DBR:Pacific_Beach、_San_Diego、_California
  • DBR:Pacific_Beach、_San_Diego_California

クエリの修正版がうまく動作する必要があることを意味します

PREFIX s: <http://dbpedia.org/resource/Pacific_Beach,_San_Diego> 
PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT * WHERE { 
    OPTIONAL { s: dbp:officialName ?officialName . } 
    OPTIONAL { s: dbp:name ?foaf_name . } 
    #-- ... [ about 20 more lines like the above ] ... 
} LIMIT 2 

SPARQL results

プレフィックスを使用して1つのIRIを省略すると、珍しいことに注意してください。 ブロックを使用して、残りのクエリで使用できる特定の変数をバインドする方が一般的です。あなたは追加の都市の値を検索したい場合は、あなただけの値のリストに追加することができという利点を有する

PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT * WHERE { 
    values ?s { <http://dbpedia.org/resource/Pacific_Beach,_San_Diego> } 
    OPTIONAL { ?s dbp:officialName ?officialName . } 
    OPTIONAL { ?s dbp:name ?foaf_name . } 
    #-- ... [ about 20 more lines like the above ] ... 
} LIMIT 2; 

:つまり、私はそのクエリを記述します。今、他のものにリダイレクトする値を追加したい場合、それは問題ではありません。あなたはちょうどあなたがリダイレクトターゲットに従うことができます非オプションパターンを追加したいと思います:あなたがコピーしている場合は、そのように注意してください、最後の注意として、

SELECT * WHERE { 
    values ?x { <http://dbpedia.org/resource/Pacific_Beach,_California> } 
    ?x dbo:wikiPageRedirects* ?s . 
    OPTIONAL { ?s dbp:officialName ?officialName . } 
    OPTIONAL { ?s dbp:name ?foaf_name . } 
    #-- ... [ about 20 more lines like the above ] ... 
} LIMIT 2 

SPARQL results

をし、ブラウザーからURIを貼り付けて、照会で正しいURIを使用するようにしてください。ブラウザでDBpediaのリソース、例えば、http://dbpedia.org/ リソース/fooのを訪れたとき、あなたは人間が読める形式にリダイレクトしているhttp://dbpedia.org/ ページ/fooをブラウザに表示します。これはDBpediaの単なる奇抜なことです。 (実際には、コンテンツタイプのネゴシエーションを使用し、Webブラウザがリクエストを行っているときにHTMLドキュメントを返すだけです)

+0

ありがとう!あなたの最後の例では、 'Pacific_Beach、_California'文字列は正しい90%の時間変数ですが、Pacific_Beach、_San_Diegoにリダイレクトする必要があるときは、それをどのように記述して100%コールの?私は組合が必要な場所ですか? – Ricalsin

+0

@Ricalsin '?x dbo:wikiPageRedirects *?s .'ハンカチリダイレクト。 –

+0

@Ricalsin '?x dbo:wikiPageRedirects *?s'はリダイレクトを処理します。 –

4

私はもう一度 "ジョシュアテイラーの" this answerを見ることをお勧めします。提案の1つは、SPARQLを使用してデータを検査することです。したがって、このクエリを試してみてください。

SELECT * WHERE { 
    <http://dbpedia.org/resource/Pacific_Beach,_California> ?p ?o 
} 

これはあなたのURI <http://dbpedia.org/resource/Pacific_Beach,_San_Diego>ために利用可能なデータのすべてを与えます。このケースでは、dbpedia-owl:wikiPageRedirectsプロパティは含まれていません。リダイレクトはDBPediaブラウザの内部にあり、DBPediaデータには含まれていないようです。

上記のクエリを使用すると、実際に何がデータにあるかを見つけるのに役立ちます(この場合は何も面白くありません)。