Если вы имеете в виду переменную Python в запросе, вы можете просто ...
qres = g.query(
"""SELECT ?x ?z ?y
WHERE {
"""+some_uri+""" course:termName ?x.
"""+some_uri+""" ?s ?t.
?s ?d ?z.
?t course:termName ?y.
FILTER (regex(?z,"[^a-z]","i") && isLiteral(?z) )
}"""
,initNs=dict(course=Namespace.....
Если вы хотите преобразовать курс: OSPF в переменную в SPARQL, то ...
qres = g.query(
"""SELECT ?newVar ?x ?z ?y
WHERE {
?newVar course:termName ?x.
?newVar ?s ?t.
?s ?d ?z.
?t course:termName ?y.
FILTER (regex(?z,"[^a-z]","i") && isLiteral(?z) )
}"""
,initNs=dict(course=Namespace.....
Если вы чуть подробнее объясните, что делает ваш запрос и как выглядят ваши данные, мы могли бы помочь вам лучше.
Отредактировано
Только изменитьВам может потребоваться сформулировать запрос SPARQL, не повторяя переменную, что-то вроде ...
q = """SELECT ?x ?z ?y
WHERE {
course:%s course:termName ?x;
?s ?t.
?s ?d ?z.
?t course:termName ?y.
FILTER (regex(?z,'[^a-z0-9]','i') && isLiteral(?z) )
}ORDER BY ASC(?s)
"""%var_value
Обратите внимание на ;
в конце первого тройного шаблона.Я не очень понимаю шаблон ?s ?d ?z
, мне нужно увидеть некоторые примеры данных.Я подозреваю, что вы пытаетесь добиться слишком многого с помощью этого запроса.Если ваш набор данных большой, этот запрос будет очень медленным.Я не могу сказать больше, чем это, не видя данных.