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

时间:2016-02-16 17:49:00

标签: sparql

我正在尝试使用JS开发一个用于标记图片的工具,因此我需要一组来自dbpedia的可能“东西”。我已经尝试以这种方式检索:

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

在第一种情况下,我只有房子“事物”的“实例”,而不是“房子”类本身。在第二个,我从来没有找到“房子”,类似的东西是“房子”。是否有基于dbpedia数据集检索更好词汇的替代方法?

1 个答案:

答案 0 :(得分:2)

如果您不想将自己限制在 owl:Thing skos:Concept ,您可以获得标签中包含“house”的内容。我选择使用包含 lcase ,而不是使用正则表达式,因为字符串包含可能比调用完整的正则表达式处理器便宜。

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

SPARQL results (limited to 200)