关于如何为DBpedia中共享类的实例找到不同的属性,我有一个问题。我认为更多的是关于如何在斯派克做这件事。我在这里试用了这个查询:
SELECT DISTINCT ?p WHERE {
?s a <http://dbpedia.org/ontology/Film> .
?s ?p ?o.
} 但是,我意识到这个查询为您提供了所有实例使用的所有不同属性,而类实例的不同属性可能保持不变--例如,在卢中--例如,在像DBpedia这样的基于维基百科的实际提取集中,您没有这些属性。因此,对上面的查询进行计数将给我1767 distinct properties。但是,如何找到SPARQL中的类实例所共有的所有属性呢?如所示,为类的实例而出现的一组属性,对于整个集合来说是常见的。这应该比1767年小一点,对吧?同样,对于LUBM,上面的查询会这样做,似乎所有实例都共享同一组不同的属性。我想对DBpedia来说,情况不会是这样的。例如,我还知道这可以在Java中完成。我只需遍历类的所有实例的所有属性,并保存出现在所有实例中的属性。我认为这太贵了,我在想在斯巴克尔是否有可能。
PS:有人问了一个相关的问题,这里,但正如我在这里所写的,我不确定这是否真的包含了所有类的公共属性。
发布于 2016-09-09 14:59:29
如果您正在寻找这样的属性,即每个胶片都有这些属性的值,那么您可以使用如下的查询来表示:
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。
发布于 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查询胶片的域和范围属性:
SELECT ?predicate
WHERE {
?predicate rdfs:domain|rdfs:range <http://dbpedia.org/ontology/Film>
}https://stackoverflow.com/questions/39413265
复制相似问题