【问题标题】:SPARQL query in python - invalid replace string due to escapes not workingpython中的SPARQL查询-由于转义不起作用而导致无效的替换字符串
【发布时间】:2021-12-07 10:17:44
【问题描述】:

我正在尝试在 Python 中运行 SPARQL 查询,但是,当尝试使用绑定和替换时,转义 " 不起作用导致错误。

我试图找到一些关于 unicoding 的信息,但似乎很难将其包含在此查询中。

有没有人可以解决这个问题?

文字:

from rdflib import Graph
from rdflib.namespace import RDF, SKOS

g = Graph()
g.parse('\Python\Molenakker.orox.ttl')

len(g)

print(len(g))

gmls = g.query(''' 
PREFIX gwsw: <http://data.gwsw.nl/1.5/totaal/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sparql: <http://sparql.gwsw.nl/bim/juinen#>

SELECT ?XYZ
WHERE {
    { 
    ?uri rdf:type gwsw:GemengdRiool;
         gwsw:hasAspect ?ori.
    ?ori gwsw:hasAspect ?lijn.
    ?lijn gwsw:hasValue ?GML.
    BIND(REPLACE(STR(?GML),"<gml:LineString xmlns:gml=\"http://www.opengis.net/gml\"><gml:posList srsDimension=\"3\">","") AS ?gml)
    BIND(REPLACE(STR(?gml),"</gml:posList></gml:LineString>","")AS ?XYZ)
       
    }
    UNION
    { 
    ?uri rdf:type gwsw:Hemelwaterriool;
         gwsw:hasAspect ?ori.
    ?ori gwsw:hasAspect ?lijn.
    ?lijn gwsw:hasValue ?GML.
    BIND(REPLACE(STR(?GML),"<gml:LineString xmlns:gml=\"http://www.opengis.net/gml\"><gml:posList srsDimension=\"3\">","") AS ?gml)
    BIND(REPLACE(STR(?gml),"</gml:posList></gml:LineString>","")AS ?XYZ)
       
    }
    UNION
    { 
    ?uri rdf:type gwsw:Vuilwaterriool;
         gwsw:hasAspect ?ori.
    ?ori gwsw:hasAspect ?lijn.
    ?lijn gwsw:hasValue ?GML.
    BIND(REPLACE(STR(?GML),"<gml:LineString xmlns:gml=\"http://www.opengis.net/gml\"><gml:posList srsDimension=\"3\">","") AS ?gml)
    BIND(REPLACE(STR(?gml),"</gml:posList></gml:LineString>","")AS ?XYZ)
    }
    }''')

for gml in gmls:
    print(f"{gml.XYZ}")

【问题讨论】:

  • 能否以文本格式分享查询
  • 我用文本格式的查询编辑了帖子

标签: python sparql


【解决方案1】:

由于您使用三引号来构造多行字符串,所以反斜杠双引号变成了简单的双引号。

'''
"<gml:LineString xmlns:gml=\"http://www.opengis.net/gml\"><gml:posList srsDimension=\"3\">"
'''

变成

'''
"<gml:LineString xmlns:gml="http://www.opengis.net/gml"><gml:posList srsDimension="3">"
'''

这可能不是你想要的。

尝试改写为

'''
'<gml:LineString xmlns:gml="http://www.opengis.net/gml"><gml:posList srsDimension="3">'
'''

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2018-04-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多