[英]How to get token position in sparql query in rdflib
如何使用rdflib从给定的 sparql 查询中获取给定的标记类型(uri、literal、...)和位置?
例如,给定以下查询:
SELECT count(DISTINCT ?uri) as ?count
FROM graph WHERE {
?uri a ?type;
graph:predicate_a ?c;
FILTER(?c = xyz AND ?type != abc)
}
我想实现一个函数get_token_position
这样get_token_position('AND')
将返回124
(location) 和类似OperatorType
东西。
阅读文档,我注意到该库实现了实用程序来为查询构建解析树,因此我认为使用该库可以轻松完成此功能。
Ps.:我的动机是我需要将“AND”和“OR”转换为“&&”和“||” 每当这些字符串用作操作时。 另外,我认为使用解析树比使用正则表达式模式更好。
你能进一步解释你想做什么吗? 似乎您想为字符串替换实现一组极其复杂的函数?
s = """
SELECT count(DISTINCT ?uri) as ?count
FROM graph WHERE {
?uri a ?type;
graph:predicate_a ?c;
FILTER(?c = xyz AND ?type != abc)
}
"""
s = s.replace(" AND ", " && ") # spaces around AND to avoid in-word matches
如果您想确保替换不会影响通过变量替换可能出现在查询中的任何值,您可以先简单地执行此 AND/&& 等替换,然后再进行变量替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.