Rdf 如何用SPARQL区分物体和无生命物体

Rdf 如何用SPARQL区分物体和无生命物体,rdf,sparql,semantics,dbpedia,Rdf,Sparql,Semantics,Dbpedia,使用SPARQL,我可以很容易地获得有关某个资源的所有相关信息,但我很难弄清楚如何真正区分事物和事物,其中Thing是所有类的超类,以及无生命对象,如杯子、勺子、铅笔等 例如,以下是DBPedia中的几个innanimate对象: 叉子: 罐子: 信封: 棒球手套: 螺丝刀: 事情是这样的——我知道很多本体都没有一个特定的类型,可以很容易地让你查询对象,但是,也许有一种方法可以判断某个东西是否是一个东西,因为它没有子类,或者它的类型的属性路径可以用来以某种迂回的方式进行区分 但是,一般来说,

使用SPARQL,我可以很容易地获得有关某个资源的所有相关信息,但我很难弄清楚如何真正区分事物和事物,其中
Thing
是所有类的超类,以及无生命对象,如杯子、勺子、铅笔等

例如,以下是DBPedia中的几个innanimate对象:

  • 叉子:
  • 罐子:
  • 信封:
  • 棒球手套:
  • 螺丝刀:
事情是这样的——我知道很多本体都没有一个特定的类型,可以很容易地让你查询对象,但是,也许有一种方法可以判断某个东西是否是一个东西,因为它没有子类,或者它的类型的属性路径可以用来以某种迂回的方式进行区分


但是,一般来说,我想知道是否有可能区分
事物
和使用SPARQL查询的事物?如果是这样,怎么做?

这取决于您使用的本体。如果没有额外的信息,一般无法决定。很有可能你的本体论甚至没有试图做出这样的区分

关于DBpedia,值得一看,目前它们提供了三种:

  • 维基百科分类:使用SKOS词汇表和DCMI术语表示
  • :源自使用Word Net的Wikipedia分类系统
  • Word Net语法集链接:通过手动关联Wikipedia Infobox模板和Word Net语法集生成,应该比Wikipedia类别更精确
您还可以尝试使用这些分类来区分有生命和无生命的对象

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

最好从约书亚在回答中的建议开始,如果不够的话,用分类来补充。你可以在线浏览。在
owl:Thing
下,有许多顶级类。虽然它不是一个完美的匹配,因为它包含一些集合实体,但它看起来像代理类及其补充可能相当好地对应于有生命和无生命的对象。你也可能需要考虑动物类,或者物种类别下的其他一些东西。也有一些非DbPydia类,例如,FAAF:你也应该考虑的人。无论如何,这里的主要方法是选择你认为代表动画和无生命事物的层次结构中的哪些类,然后用它来决定实例。< /P> 例如,您可以使用这样的查询来查找动画对象(如果我们将动画对象定义为代理和动物):


正如@jkbkot所解释的,SPARQL中的这些资源集之间没有内在的区别,它们在所有本体中都是有效的。如果您特别询问DBpedia数据,那么这个问题与SPARQL无关,尤其是与DBpedia更相关。请考虑在你的问题和它的标签中反映出来。我给问题增加了更多的内容。我在DBPedia中给出了对象的例子,因为这样可以方便地查看这些项目的可用第三级信息。。。这很有帮助,伊姆霍。对不起,但是当你说“代理类和它的赞美”时,你指的是哪个类?@Kristian不是它的赞美;其名称:)“代理人”和“非代理人”<代码>?i a dbpedia owl:Agent和
?i[]]。过滤器不存在{i a dbpedia owl:Agent}
。一个本体类的补码的定义是什么?@Nordlöw它就像集合论中的补码一样。这可能是一个有用的起点。
select ?x where { 
  ?x a owl:Thing 
  filter exists {
    ?x a ?type .
    filter( ?type in ( dbpedia-owl:Agent, dbpedia-owl:Animal ) )
  }
}
limit 100