首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找DBpedia中的类共有的属性

查找DBpedia中的类共有的属性
EN

Stack Overflow用户
提问于 2016-09-09 13:56:20
回答 2查看 1.1K关注 0票数 0

关于如何为DBpedia中共享类的实例找到不同的属性,我有一个问题。我认为更多的是关于如何在斯派克做这件事。我在这里试用了这个查询:

代码语言:javascript
复制
SELECT DISTINCT ?p WHERE {
       ?s a <http://dbpedia.org/ontology/Film> .
       ?s ?p ?o.
} 

但是,我意识到这个查询为您提供了所有实例使用的所有不同属性,而类实例的不同属性可能保持不变--例如,在中--例如,在像DBpedia这样的基于维基百科的实际提取集中,您没有这些属性。因此,对上面的查询进行计数将给我1767 distinct properties。但是,如何找到SPARQL中的类实例所共有的所有属性呢?如所示,为类的实例而出现的一组属性,对于整个集合来说是常见的。这应该比1767年小一点,对吧?同样,对于LUBM,上面的查询会这样做,似乎所有实例都共享同一组不同的属性。我想对DBpedia来说,情况不会是这样的。例如,我还知道这可以在Java中完成。我只需遍历类的所有实例的所有属性,并保存出现在所有实例中的属性。我认为这太贵了,我在想在斯巴克尔是否有可能。

PS:有人问了一个相关的问题,这里,但正如我在这里所写的,我不确定这是否真的包含了所有类的公共属性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-09 14:59:29

如果您正在寻找这样的属性,即每个胶片都有这些属性的值,那么您可以使用如下的查询来表示:

代码语言:javascript
复制
select distinct ?p {
  #-- Find all the distinct properties 
  #-- of some reference Film.  It shouldn't
  #-- matter which Film we get.
  { select distinct ?p { 
    { select ?ex { ?ex a dbo:Film } limit 1 }

    ?ex ?p ?o
    }
  }

  #-- Now exclude any of those properties
  #-- if there is a Film that doesn't have
  #-- a value for them.
  filter not exists {
    ?f a dbo:Film .
    filter not exists { ?f ?p ?o }
  }
}

SPARQL结果

此查询查找单个胶片,然后获取其所有不同的属性。因为我们在寻找所有电影的属性,所以我们选择哪一种电影并不重要。然后我们过滤掉那些电影没有属性的属性。剩下的正是每一部电影所拥有的特性。

不幸的是,DBpedia数据中每个电影都拥有的唯一属性是rdf:type

票数 3
EN

Stack Overflow用户

发布于 2016-09-09 14:42:29

删除Film将告诉您在DBpedia中需要了解的关于Film的所有信息:

HTML资源:

http://mappings.dbpedia.org/server/ontology/classes/Film

RDF资源:

http://dbpedia.org/data3/Film.ttl

SPARQL查询胶片的域和范围属性:

代码语言:javascript
复制
SELECT ?predicate 
WHERE {
?predicate rdfs:domain|rdfs:range <http://dbpedia.org/ontology/Film>
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39413265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档