我想得到个人所属的班级。更详细地说,我想将参数传递给使用python的个体方法(使用rdflib),方法应该返回它所属的个体的类。
例如:我有一个AlcoholicBeverage类,它有子类Beer和Beer类有一个子类Brands。在Brands课程中,有很多人代表啤酒品牌。 我想将一个参数传递给一个方法,运行SPARQL查询来查找,xyz是一个Brands类的个体。
理想情况下我也想得到,xyz是啤酒(因为Brands类是Beer的子类)而啤酒是AlcoholicBeverage。
感谢您的帮助。
答案 0 :(得分:2)
怎么样:
SELECT ?class WHERE { xyz a ?class . }
请注意,a
是rdf:type
的简写 - 请参阅SPARQL specification部分4.2.4
如果已经将这些超级类别(AlcoholicBeverage,Beer)明确添加到您的RDF模型中,或者您有inference enabled(并且模式已加载到模型中),那么您将只从此查询中获取超类(AlcoholicBeverage,Beer),以便它们是隐含的。
你的架构有点奇怪 - 啤酒显然是AlcoholicBeverage的子类,但什么是品牌?为什么不让每个品牌成为啤酒的子类(暗示个人是实际的体力饮料:“这种饮料是Old Peculier,这是一种啤酒”),或者让每个品牌都成为啤酒的个体:“例如,Old Peculier是啤酒“。品牌似乎是一种非正式的占位符,在正式的架构中没有意义?当你的其他类名是单数时,为什么Brands是复数?