我正在尝试查询 DBPedia 以获取与本体中给定类相关的属性列表,但由于人类可读的“标签”并不总是清晰的,我还想提供数据库中的示例。问题是,虽然我想选择所有不同的属性,但我只想要每个属性的一个示例。这是我的查询在不捕获示例的情况下的外观:
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
如果我以这种方式更改它,我开始获得 ?prop 的重复值:
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 ?example 的东西,它为 prop 选择每个唯一值,并返回其标题和示例。