使用SPARQL获取个人的类

时间:2012-11-12 19:27:34

标签: rdf sparql owl rdflib

我想得到个人所属的班级。更详细地说,我想将参数传递给使用python的个体方法(使用rdflib),方法应该返回它所属的个体的类。

例如:我有一个AlcoholicBeverage类,它有子类Beer和Beer类有一个子类Brands。在Brands课程中,有很多人代表啤酒品牌。 我想将一个参数传递给一个方法,运行SPARQL查询来查找,xyz是一个Brands类的个体。

理想情况下我也想得到,xyz是啤酒(因为Brands类是Beer的子类)而啤酒是AlcoholicBeverage。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

怎么样:

SELECT ?class WHERE { xyz a ?class . }

请注意,ardf:type的简写 - 请参阅SPARQL specification部分4.2.4

如果已经将这些超级类别(AlcoholicBeverage,Beer)明确添加到您的RDF模型中,或者您有inference enabled(并且模式已加载到模型中),那么您将只从此查询中获取超类(AlcoholicBeverage,Beer),以便它们是隐含的。

你的架构有点奇怪 - 啤酒显然是AlcoholicBeverage的子类,但什么是品牌?为什么不让每个品牌成为啤酒的子类(暗示个人是实际的体力饮料:“这种饮料是Old Peculier,这是一种啤酒”),或者让每个品牌都成为啤酒的个体:“例如,Old Peculier是啤酒“。品牌似乎是一种非正式的占位符,在正式的架构中没有意义?当你的其他类名是单数时,为什么Brands是复数?