Sparql 使用电子邮件链接两个图形
如果我有以下两张图:Sparql 使用电子邮件链接两个图形,sparql,Sparql,如果我有以下两张图: <http://example.com/graph1> :A foaf:mbox "A@example.com" 像下面这样的怎么样?由于电子邮件地址不使用相同的大小写,我使用对它们进行了规范化 select ?person ?phone { graph ?g { ?person foaf:mbox ?email1 } graph ?h { ?person_ foaf:mbox ?email2 ; foaf:phone ?phone } filt
<http://example.com/graph1>
:A foaf:mbox "A@example.com"
像下面这样的怎么样?由于电子邮件地址不使用相同的大小写,我使用对它们进行了规范化
select ?person ?phone {
graph ?g { ?person foaf:mbox ?email1 }
graph ?h { ?person_ foaf:mbox ?email2 ; foaf:phone ?phone }
filter (lcase(?email1) = lcase(?email2))
}
嗯,是否可以使用不区分大小写的正则表达式,比如
过滤正则表达式(?email1,concat(“^”),?email2,“$”,“i”)
?如果是这样的话,对性能会有什么影响?@TomaszPluskiewicz,这并不安全。电子邮件地址可以包含在正则表达式中有意义的字符。例如,a@example.com
将匹配a@example_com
,因为
是一个通配符。@JoshuaTaylor我尝试使用lcase,但使用了BIND
,在一个方向上可以,但在两个方向上都不行。现在我来试试过滤器。只是一个省略,没有在哪里
?我想我应该把实际的图形URI放在?g
中,而不是。@IvoVelitchkov,其中是可选的。参见参考。对于?g
,Joshua在这里做了一个假设。您提到了一些图形,因此是一个变量。上面的查询将匹配由电子邮件值连接的任意两个图形。如果将?g
变量替换为URI,则只能尝试连接两个特定的图形
----------------------
| person | phone |
======================
| A |"123456878"|
----------------------
select ?person ?phone {
graph ?g { ?person foaf:mbox ?email1 }
graph ?h { ?person_ foaf:mbox ?email2 ; foaf:phone ?phone }
filter (lcase(?email1) = lcase(?email2))
}