Python 在SPARQL筛选器语句中引用OWL类

Python 在SPARQL筛选器语句中引用OWL类,python,sparql,owl,rdflib,Python,Sparql,Owl,Rdflib,我开发了一个本体,您可以通过下面代码中的链接访问它。除过滤部分外,代码工作正常。若我在过滤器中使用equal运算符,它不会返回任何内容。如果我使用非相等运算符(!=),它不会过滤任何内容。我猜我在本体中对Brands类的引用“owl:Brands”不起作用。我缩短了url,因为我不希望它被网络爬虫索引。我在代码中使用了原始URL。您可以使用缩短的url访问原始url。您可以通过编辑器浏览本体。我很确定“猫头鹰:品牌”是行不通的,我尝试了许多其他的可能性,但不知道如何让它起作用 如果没有FILTE

我开发了一个本体,您可以通过下面代码中的链接访问它。除过滤部分外,代码工作正常。若我在过滤器中使用equal运算符,它不会返回任何内容。如果我使用非相等运算符(!=),它不会过滤任何内容。我猜我在本体中对Brands类的引用“owl:Brands”不起作用。我缩短了url,因为我不希望它被网络爬虫索引。我在代码中使用了原始URL。您可以使用缩短的url访问原始url。您可以通过编辑器浏览本体。我很确定“猫头鹰:品牌”是行不通的,我尝试了许多其他的可能性,但不知道如何让它起作用

如果没有FILTER语句,它的作用等同于“FILTER(?sub!=owl:Brands)”,因为没有与owl:Brands匹配的内容。仅供参考,我正在使用python和rdflib

    plugin.register(
     'sparql', rdflib.query.Processor,
     'rdfextras.sparql.processor', 'Processor')
    plugin.register(
       'sparql', rdflib.query.Result,
           'rdfextras.sparql.query', 'SPARQLQueryResult')

       qres = g.query(
             """
                PREFIX owl: <http://goo.gl/ZwwgT>
                SELECT ?class WHERE { ?sub rdfs:subClassOf ?class .
                FILTER(?sub=owl:Brands)}

                """)

       for row in qres.result:
         print(row)
plugin.register(
“sparql”、rdflib.query.Processor、,
'rdfextras.sparql.processor','processor')
plugin.register(
'sparql',rdflib.query.Result,
'rdfextras.sparql.query','SPARQLQueryResult')
qres=g.query(
"""
前缀owl:
选择{?子rdfs:Subassof?类所在的?类。
过滤器(?sub=owl:Brands)}
""")
对于qres.result中的行:
打印(行)

我只能假设您错误地转录了示例,或者rdflib有一个bug。我加载了你的本体,执行了你的查询(使用你本体的扩展URL),得到了一个结果Beer。但是,我没有使用RDFlib。您可以尝试将其提取为单个测试用例,并将其提供给RDFlib作者,以便他们能够解决问题,和/或研究使用不同的数据库