Python 如何使用筛选器选择不匹配的数据
我正在Python中使用Python 如何使用筛选器选择不匹配的数据,python,select,sparql,rdflib,Python,Select,Sparql,Rdflib,我正在Python中使用rdflib,并运行sparqlselect查询以获取相关数据 使用下面描述的filter命令(如filter regex(?pname),“+samplePersonalisedExperties+”,“i”))为某些条件筛选数据非常容易,但是如果我必须选择不匹配的数据,那么我们需要如何使用filter?我尝试过使用下面的过滤器(?personuri!=''''“+imURI+'''),但这不起作用 exprtppl= GraphR.query(""" PREFIX
rdflib
,并运行sparqlselect
查询以获取相关数据
使用下面描述的filter
命令(如filter regex(?pname),“+samplePersonalisedExperties+”,“i”)
)为某些条件筛选数据非常容易,但是如果我必须选择不匹配的数据,那么我们需要如何使用filter
?我尝试过使用下面的过滤器(?personuri!=''''“+imURI+''')
,但这不起作用
exprtppl= GraphR.query("""
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX bibo: <http://purl.org/ontology/bibo/>
SELECT ?nname
{
?puburi dc:title ?pname.
FILTER regex(?pname,'"""+samplepersnalisedexpertise+"""',"i")
?personuri foaf:publications ?puburi.
?personuri foaf:nick ?nname
FILTER (?personuri != '"""+imURI+"""')
}""")
exprtppl=GraphR.query(“”)
前缀foaf:
前缀owl:
前缀dc:
前缀bibo:
选择名称
{
?puburi dc:标题?pname。
过滤正则表达式(?pname,“”“+samplePersonalisedExperties+“”“,“i”)
?personuri foaf:出版物?puburi。
尼克?纳姆
过滤器(?personuri!='''''''imURI+''')
}""")
你们谁能帮忙解决这个问题吗。提前感谢。您正在尝试与URI值进行比较,URI值不应该用引号括起来,而是用鱼钩括起来:
FILTER(?personuri != <"""+imURI+""">)
过滤器(?personuri!=)
顺便说一句,上面@morphyn给出的建议(使用
str()
函数)也可以,但效率较低。您试图与URI值进行比较,URI值不应该用引号括起来,而是用鱼钩括起来:
FILTER(?personuri != <"""+imURI+""">)
过滤器(?personuri!=)
顺便说一句,上面@morphyn给出的建议(使用
str()
函数)也可以,但效率较低。在我看来没有错。什么是imURI
?就一根绳子?有没有办法在rdflib
中使用准备好的语句imURI
可能只是格式不好,它是否有
呢?顺便说一句,它是一个很好的地方,可以回答有关SPARQL
的问题。imURI是一个变量,它的值在这里被用作变量,就像SamplePersonalisedExperties是一个变量一样。实际上,我们必须看看这是一种正确的比较方式。谢谢你对其他论坛的建议。是的,=
是检查两个文本是否不相等的一种方法。还有!样本(?term1,?term2)
。但我认为你的问题是因为你比较URI造成的。也许可以试试过滤器(str(?personuri)!='“+imURI+”)
在我看来没有错。什么是imURI
?就一根绳子?有没有办法在rdflib
中使用准备好的语句imURI
可能只是格式不好,它是否有
呢?顺便说一句,它是一个很好的地方,可以回答有关SPARQL
的问题。imURI是一个变量,它的值在这里被用作变量,就像SamplePersonalisedExperties是一个变量一样。实际上,我们必须看看这是一种正确的比较方式。谢谢你对其他论坛的建议。是的,=
是检查两个文本是否不相等的一种方法。还有!样本(?term1,?term2)
。但我认为你的问题是因为你比较URI造成的。也许可以尝试FILTER(str(?personuri)!='“+imURI+”)
Jeen,请你详细说明一下“效率较低”?效率较低是因为你在进行字符串转换,然后进行词法比较,而不是直接进行值比较。大多数TripleStore在URI值查找方面很好,但在字符串搜索方面相对较差。虽然一些SPARQL查询引擎可能足够聪明,可以看出您实际上只是在比较标识符,但并非所有的搜索引擎都可以。Jeen,请您详细说明一下“效率较低”这一点?效率较低,因为您正在进行字符串转换,然后进行词法比较,而不是直接进行值比较。大多数TripleStore在URI值查找方面很好,但在字符串搜索方面相对较差,虽然一些SPARQL查询引擎可能足够聪明,可以看出您实际上只是在比较标识符,但并非所有的搜索引擎都可以。