2

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

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

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

谢谢你的帮助。

4

1 回答 1

3

怎么样:

SELECT ?class WHERE { xyz a ?class . }

请注意,这a是简写rdf:type- 请参阅SPARQL 规范第 4.2.4 节

如果超类(AlcoholicBeverage、Beer)已显式添加到您的 RDF 模型中,或者您启用了推理(并且模式已加载到模型中),那么您只会从该查询中获取超类(AlcoholicBeverage、Beer),以便隐式添加它们。

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

于 2012-11-12T19:44:45.443 回答