我很困惑Freebase中的实体有多种类型,我如何知道某些子知识图中表达的类型是什么。例如,有一个子图:
['m.0f010_', 'food.dish.cuisine', 'm.042ck']
,实体'm.042ck'
有以下类型:
['base.food_menu.regional_cuisine', 'base.food_menu.summary_cuisine', 'base.ontologies.ontology_instance', 'book.book_subject', 'business.industry', 'common.topic', 'dining.cuisine', 'organization.organization_sector']
我怎样才能知道子图中表达的是哪种类型?
我使用以下Sparql来查询实体类型,有什么方法可以做到这一点
sql = '''PREFIX fb: <http://rdf.freebase.com/ns/>
select ?o1 where {
fb:%s fb:type.object.type ?o1.
} '''%entity
仅供参考,这些主题的英文标签是 Monjayaki 和 Japanese Cuisine。
除非您的子图对类型空间进行了分区,否则该实体具有“所有”列出的类型,尽管其中一些类型不会被认为是重要的。任何带有 base.
前缀的类型都属于单个用户创建的类型系统的一部分。由于它们未经社区审查/批准,因此在大多数情况下可以忽略它们。类型
common.topic
基本上被分配给所有不是内部管理实体的东西,因此没有什么价值。请注意,Freebase 是众包的,就像维基数据一样,因此它可能代表比专业本体论更随意的世界观。此外,最终快照代表了不断发展的知识图谱的单个时间点。
在这种特殊情况下,可以说至少有两个不同的实体合并在一起:
'业务.行业'、'组织.组织_部门'
在您所说的三元组的上下文中,使用谓词“food.dish.cuisine”,最相关的类型是“dining.cuisine”,因为根据此三元组,这是“预期类型”:
<http://rdf.freebase.com/ns/food.dish.cuisine> <http://rdf.freebase.com/ns/type.property.expected_type> <http://rdf.freebase.com/ns/dining.cuisine>
如果您可以回答@UninformedUser 关于子图的问题,我们也许可以提供更多详细信息。