我开发了一个本体,您可以通过下面代码中的链接访问它。除 FILTER 部分外,代码工作正常。如果我在 FILTER 中使用相等运算符,它不会返回任何内容。如果我使用不等于运算符 (!=),它不会过滤任何内容。我想我在本体中使用“owl:Brands”对 Brands 类的引用不起作用。我缩短了 url,因为我不希望它被网络爬虫索引。我在代码中使用原始 URL。您可以使用缩短的网址访问原始网址。您可以通过编辑器浏览本体。我很确定“owl:Brands”不起作用,我尝试了许多其他可能性,但不知道如何使它起作用。
如果没有 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)