检索更广泛的 dbpedia 词汇表以标记图片

Retrieving the wider dbpedia vocabulary for tagging pictures

我正在尝试用 JS 开发一个工具来标记图片,所以我需要一组来自 dbpedia 的可能的 "things"。我已经尝试过以这种方式检索:

select ?s ?l {
   ?s a owl:Class .
   ?s rdf:type ?l
   FILTER regex(str(?s), "House", "i").
}

http://dbpedia.org/snorql/?query=select+%3Fs+%3Fl+%7B%0D%0A+++%3Fs+a+owl%3AClass+.%0D%0A+++%3Fs+rdf%3Atype+%3Fl%0D%0A+++FILTER+regex%28str%28%3Fs%29%2C+%22House%22%2C+%22i%22%29.%0D%0A%7D

也是这样:

select ?label 
WHERE {
  ?concept a skos:Concept.
  ?concept skos:prefLabel ?label.
  FILTER regex(str(?label), "^House", "i").
}

http://dbpedia.org/snorql/?query=select+%3Flabel+%0D%0AWHERE+%7B%0D%0A++%3Fconcept+a+skos%3AConcept.%0D%0A++%3Fconcept+skos%3AprefLabel+%3Flabel.%0D%0A++FILTER+regex%28str%28%3Flabel%29%2C+%22%5EHouse%22%2C+%22i%22%29.%0D%0A%7D

在第一种情况下,我只有 "thing" 房子的 "instances",但没有 "House" class 本身。在第二个中,我从未检索到 "house",类似的是 "houses"。基于 dbpedia 数据集检索更好的词汇表的任何替代方法?

如果您不想将自己限制在 owl:Thingskos:Concept,您可以只需获取标签包含 "house" 的东西。我没有使用 regex,而是选择使用 containslcase,因为字符串包含可能更少比调用完整的正则表达式处理器昂贵。

select ?thing ?label where {
 ?thing rdfs:label ?label .
 filter contains(lcase(?label), "house")
}

SPARQL results (limited to 200)