如何使用SPARQL区分Thing和无生命对象

时间:2014-03-10 15:20:03

标签: rdf sparql semantics dbpedia

使用SPARQL,我可以很容易地获得有关某些资源的所有相关信息,但我很难弄清楚如何实际区分事物和事物 - 其中{{1是所有类的超类,以及无生命对象的东西,如杯子,勺子,铅笔等。

例如,以下是DBPedia中的一些无生命的对象:

这就是事情 - 我知道很多本体都没有特定的类型,很容易让你能够查询对象,但是,也许这是一种判断某些东西是否是的东西的方法因为它没有子类,或者它的类型的属性路径可以用来区分某种迂回方式。

但是,一般来说,我想知道是否可以使用SPARQL查询区分Thing事物?如果是的话,怎么样?

2 个答案:

答案 0 :(得分:4)

这取决于您使用的本体。如果没有其他信息,通常无法确定。您的本体很可能甚至不会尝试做出这样的区分。

关于DBpedia,值得关注DbPedia Classifications,目前他们提供三个:

  • 维基百科类别:使用SKOS词汇表和DCMI术语表示
  • YAGO Classification:源自使用Word Net的维基百科类别系统
  • Word Net Synset链接:通过手动关联Wikipedia Infobox模板和Word Net同义词生成,应该比维基百科类别更精确

您也可以尝试使用这些分类来区分有生命和无生命的对象。

但是,要使用类别,您可能必须遍历skos:broader层次结构,在这种情况下您应该小心,因为它包含循环,请参阅http://wikiloopr.com/

最好从约书亚在他的回答中提出的建议开始,如果还不够,可以用分类来补充它。

答案 1 :(得分:2)

您可以在线浏览DBpedia ontology classes。在owl:Thing下,有许多顶级类。虽然它不是一个完美的匹配,因为它包含一些集体实体,看起来Agent类及其补充可能与动画和无生命对象相当好。您可能还需要考虑Animal类,或者Species类下的其他一些东西。还有一些非DBpedia类,例如,foaf:你也应该考虑的人。无论如何,这里最重要的方法是选择您认为代表动画和无生命事物的层次结构中的哪些类,然后使用它来决定实例。

例如,您可以使用这样的查询来查找动画内容(如果我们将动画定义为代理和动物):

select ?x where { 
  ?x a owl:Thing 
  filter exists {
    ?x a ?type .
    filter( ?type in ( dbpedia-owl:Agent, dbpedia-owl:Animal ) )
  }
}
limit 100 

SPARQL results