我試圖查詢DBPedia以獲取與本體中給定類相關的屬性列表,但由於人類可讀的「標籤」並不總是清晰的,我也想從數據庫中提供一個例子。問題是,雖然我想選擇所有不同的屬性,但我只想要每個屬性的單個示例。 Here's我查詢的外觀沒有捕捉例如:在SPARQL中選擇一些不同的和一些不明顯的標籤
SELECT DISTINCT ?prop ?title WHERE {
?thing ?prop [].
?thing a <http://dbpedia.org/ontology/Currency>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title.
} ORDER BY DESC(COUNT(DISTINCT ?thing))
LIMIT 100
如果我改變它在this way,我開始變得重複值道具:
SELECT DISTINCT ?prop ?title ?example WHERE {
?thing ?prop ?example.
?thing a <http://dbpedia.org/ontology/Currency>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title.
} ORDER BY DESC(COUNT(DISTINCT ?thing))
LIMIT 100
我很新的使用SPARQL和數據庫一般的查詢,所以我不清楚如何做到這一點。理想情況下,我會使用DISTINCT(?prop)?title?示例,它爲prop選擇每個唯一值,並返回其標題和示例。
這工作很漂亮,但就是GROUP BY必要爭論?我用ORDER BY DESC(COUNT(DISTINCT?thing))實現了它,它似乎仍然工作。 ORDER BY會給出一些令人不愉快的結果,而這種情況不會發生嗎? – Paul 2011-03-22 21:38:06
@Paul要成爲合適的有效查詢,您不能直接對集合進行ORDER BY - 這是SPARQL 1.1規範所不允許的。這大概是一個Virtuoso擴展,並且會使查詢不可移植,即它不一定在非Virtuoso端點上工作。請查看我的答案,以查找適合做同樣事情並且便於攜帶的查詢表單 – RobV 2011-03-23 08:56:45