2013-12-09 40 views
1

讓我知道這個想法..SPARQL:查找葉的URI

目標:要提取的標籤的URI(葉的URI)傳遞。

其中一個葉子URI被定義爲一個URI,它沒有消歧義或重定向到另一個URI。

下面的查詢適用於除了URI有重定向並且重定向的URI已消除歧義之外的所有情況。

查詢:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?termURI ?redirects ?term ?disambiguates 
WHERE 
{ 
    ?termURI rdfs:label ?term . 
    OPTIONAL{ ?termURI <http://dbpedia.org/ontology/wikiPageRedirects> ?redirects .} 
    OPTIONAL{ ?termURI <http://dbpedia.org/ontology/wikiPageDisambiguates> ?disambiguates .} 
    OPTIONAL{ ?redirects <http://dbpedia.org/ontology/wikiPageDisambiguates> ?disambiguates .} 
    FILTER((?term = 'Build ups'@en)) 
} 

任何想法我怎麼能解決這個問題?

+0

請記住在發佈問題的代碼部分時使用代碼格式化按鈕(帶有{}}的問題。它使你的問題更容易閱讀和回答 – RobV

+0

謝謝,將來一定會做到這一點! –

回答

1

您應該能夠使用FILTER NOT EXIST來實現你的目標,像這樣:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbpedia: <http://dbpedia.org/ontology/> 

SELECT ?termURI ?term 
WHERE 
{ 
    ?termURI rdfs:label ?term . 
    FILTER NOT EXISTS 
    { 
    { ?termURI dbpedia:wikiPageRedirects [] } 
    UNION 
    { ?termURI dbpedia:wikiPageDisambiguates [] } 
    } 
    FILTER((?term = 'Build ups'@en)) 
} 

什麼這個查詢表示是要消除任何比賽爲其中有兩種重定向或消歧的鏈接。

請參閱SPARQL規範中的Filtering Using Graph Patterns以獲取有關這些語法元素的更多詳細信息。