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))
}