【问题标题】:Getting class of an individual, using SPARQL使用 SPARQL 获取个人的班级
【发布时间】:2012-11-01 06:11:40
【问题描述】:

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: rdf sparql owl rdflib


    【解决方案1】:

    怎么样:

    SELECT ?class WHERE { xyz a ?class . }
    

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

    如果超类 (AlcoholicBeverage, Beer) 已显式添加到您的 RDF 模型中,或者您有 inference enabled(以及已加载到模型中的模式),您将只能从该查询中获取超类(AlcoholicBeverage、Beer),因此它们是隐式添加。

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

    【讨论】:

    • 感谢您的回复和建议。我相信我的问题是,我不能以正确的方式引用 xyz。没有过滤器部分,以下查询工作正常,但使用过滤器部分,它什么也不返回。如何在 .owl 文件中引用班级或个人?前缀猫头鹰:[链接] (goo.gl/ZwwgT) SELECT ?class WHERE { ?sub rdfs:subClassOf ?class .过滤器(?sub=owl:品牌)}
    猜你喜欢
    • 2018-03-13
    • 2012-09-02
    • 1970-01-01
    • 2014-03-17
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多