SPARQL-统计对象中子字符串的出现次数

SPARQL-统计对象中子字符串的出现次数,sparql,graphdb,Sparql,Graphdb,我对链接数据和SPARQL还比较陌生,但我了解这个概念和一些查询,因为我对SQL有一定的了解。使用rdfdata.org中的一些示例数据,我成功地用一个 使用一些基本查询,如 选择*WHERE{s?p?o}并对对象值进行过滤,我能够获得一些在表中可见的基本数据。我有使用正则表达式的经验,所以我决定使用SPARQL来计算对象中Elvis的出现次数。然而,无论我做什么,我都无法做到这一点 这是一个问题,因为我的三元组多次包含猫王的一种形式: s: http://www.gigmasters.com

我对链接数据和SPARQL还比较陌生,但我了解这个概念和一些查询,因为我对SQL有一定的了解。使用rdfdata.org中的一些示例数据,我成功地用一个

使用一些基本查询,如 选择*WHERE{s?p?o}并对对象值进行过滤,我能够获得一些在表中可见的基本数据。我有使用正则表达式的经验,所以我决定使用SPARQL来计算对象中Elvis的出现次数。然而,无论我做什么,我都无法做到这一点

这是一个问题,因为我的三元组多次包含猫王的一种形式:

 s: http://www.gigmasters.com/elvis/bobjames/
 p: ep:influences
 o: Elvis Elvis Elvis! I also do a Neil Diamond tribute as well, and have 
     been a DJ, MC, and musician for many years.
正如你所看到的,猫王出现了三次,只算1次

以下是SPARQL查询,用于选择三元组并计算出现次数:

SELECT ?s ?p ?o (count(regex( ?o ,"[Ee]lvis")) as ?count)
WHERE {
    ?s ?p ?o.
    filter(regex( ?o ,"([Ee]lvis.){3}")) //only return the triple above
}
GROUP BY ?s ?p ?o
这些事件怎么可能不被计算在内?我尝试使用str?o,但由于对象是字符串文字,所以这不重要

预期结果:

具有4列的le表格:|?s |?p |?o |计数|,
其中count应该是3^^xsd:integer

SPARQL count用于计算RDF数据中匹配的可能绑定的数量,或者简单地说是匹配行的数量。实际上,只有一个对象与正则表达式匹配,因此,只有一行。 不幸的是,SPARQL没有任何爆炸的概念,不能用一行创建多行,或者更好地说,我不知道

作为一种解决方法,我使用正则表达式+字符串破解编写了一个SPARQL查询。我们的想法是

用一些希望不会出现的特殊角色替换猫王的每一次出现。我在这里选择了Å作为演示。 删除文本中的其他字符 计算剩余字符串的长度 查询 前缀ep: 选择s?p?o?cnt 在哪里{ s?p?o。 滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器。 绑定 斯特伦 代替 替换str?o,[Ee]lvis.,Å , [^Å], as?cnt } 输出样本
SPARQL count用于计算RDF数据中匹配的可能绑定的数量,或者简单地说是匹配行的数量。实际上,只有一个对象与正则表达式匹配,因此,只有一行。 不幸的是,SPARQL没有任何爆炸的概念,不能用一行创建多行,或者更好地说,我不知道

作为一种解决方法,我使用正则表达式+字符串破解编写了一个SPARQL查询。我们的想法是

用一些希望不会出现的特殊角色替换猫王的每一次出现。我在这里选择了Å作为演示。 删除文本中的其他字符 计算剩余字符串的长度 查询 前缀ep: 选择s?p?o?cnt 在哪里{ s?p?o。 滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器滤器。 绑定 斯特伦 代替 替换str?o,[Ee]lvis.,Å , [^Å], as?cnt } 输出样本
您可以通过获取输入字符串(例如A B A C)来实现这一点,将目标字符串(例如A)替换为空字符串以获得更新字符串(例如B C)。然后,计算更新字符串的长度与输入字符串之间的差值。除以目标的长度,这就是目标在输入中出现的次数。例如:

@前缀: 字体a:哈斯特林我喜欢埃尔维斯。 :b:Hassering Elvis的名字叫Elvis。 :c:这里没有提到Hastring。 :d:hasString日复一日。 前缀: 选择?x?s?t?计数,其中{ 值?t{Elvis daybayday} x:Hastring?s。 bindstrlen?s-strlenre?s,?t,/strlen?t作为计数 } ---------------------------- |x | s | t |计数| ======================================================= |:我喜欢埃尔维斯埃尔维斯| 1.0| |:b |埃尔维斯的名字叫埃尔维斯埃尔维斯| 2.0| |:c |此处未提及|猫王| 0.0| |:d | daybaybyday | Elvis | 0.0| |:我喜欢埃尔维斯日复一日| 0.0| |:b |埃尔维斯的名字叫埃尔维斯日复一日| 0.0| |:c |此处未提及|每天| 0.0| |:d | daybaybyday | daybayday | 1.0| ---------------------------- 这里有几个警告

目标字符串必须是普通字符串。例如,如果它是一个真正的正则表达式模式,可以扩展到不同长度的文本,那么这种方法将不起作用。 您需要知道这是如何处理重叠字符串的。例如,如果您的输入文本是daybaybyday,目标是daybayday,那么您希望计算一次还是两次?使用这个方法,您只会得到一个,因为一旦替换了一个匹配项,剩下的字符串就没有了。
您可以通过获取输入字符串(例如A B A C)来实现这一点,将目标字符串(例如A)替换为空字符串以获得更新字符串(例如B C)。然后,计算更新字符串长度与输入字符串长度之间的差值 特林。除以目标的长度,这就是目标在输入中出现的次数。例如:

@前缀: 字体a:哈斯特林我喜欢埃尔维斯。 :b:Hassering Elvis的名字叫Elvis。 :c:这里没有提到Hastring。 :d:hasString日复一日。 前缀: 选择?x?s?t?计数,其中{ 值?t{Elvis daybayday} x:Hastring?s。 bindstrlen?s-strlenre?s,?t,/strlen?t作为计数 } ---------------------------- |x | s | t |计数| ======================================================= |:我喜欢埃尔维斯埃尔维斯| 1.0| |:b |埃尔维斯的名字叫埃尔维斯埃尔维斯| 2.0| |:c |此处未提及|猫王| 0.0| |:d | daybaybyday | Elvis | 0.0| |:我喜欢埃尔维斯日复一日| 0.0| |:b |埃尔维斯的名字叫埃尔维斯日复一日| 0.0| |:c |此处未提及|每天| 0.0| |:d | daybaybyday | daybayday | 1.0| ---------------------------- 这里有几个警告

目标字符串必须是普通字符串。例如,如果它是一个真正的正则表达式模式,可以扩展到不同长度的文本,那么这种方法将不起作用。 您需要知道这是如何处理重叠字符串的。例如,如果您的输入文本是daybaybyday,目标是daybayday,那么您希望计算一次还是两次?使用这个方法,您只会得到一个,因为一旦替换了一个匹配项,剩下的字符串就没有了。
SPARQL count用于计算RDF数据中匹配的可能绑定的数量,或者简单地说是匹配行的数量。实际上,只有一个对象与正则表达式匹配,因此,只有一行.SPARQL计数用于计算RDF数据中匹配的可能绑定的数量,或者简单地说,是匹配行的数量。事实上,只有一个对象与正则表达式匹配,因此,只有一行。这也可能无法获得所有内容。考虑字符串是否是ELVISELVIS。移除第一个猫王将产生猫王。移除第二个猫王也是如此。不同的是字符串中Elvis的索引,它将产生0和5或1和6;我不记得索引在XSD字符串中从何处开始。的确,你是对的,但我从来没有说过我的解决方法是完美的:D它只是在中制作的东西,你可以通过用空字符串替换Elvis和字符串中其后的所有文本来获取索引,例如,欢迎Elvis来到大楼->欢迎,结果的长度将提供被替换事件的索引。嗯,好主意-但是如果我错了,请纠正我,这在SPARQL中不起作用,因为您必须对每个事件迭代执行。我已经实现了我提到的最后一个方法,用空字符串替换目标,将输入和结果的差值除以模式的长度,然后加上。这也可能不会得到所有结果。考虑字符串是否是ELVISELVIS。移除第一个猫王将产生猫王。移除第二个猫王也是如此。不同的是字符串中Elvis的索引,它将产生0和5或1和6;我不记得索引在XSD字符串中从何处开始。的确,你是对的,但我从来没有说过我的解决方法是完美的:D它只是在中制作的东西,你可以通过用空字符串替换Elvis和字符串中其后的所有文本来获取索引,例如,欢迎Elvis来到大楼->欢迎,结果的长度将提供被替换事件的索引。嗯,好主意-但是如果我错了,请纠正我,这在SPARQL中不起作用,因为您必须对每个事件迭代执行。我已经实现了我提到的最后一个方法,用空字符串替换目标,将输入和结果的差值除以图案的长度,然后相加。
+-----------------------------------------------+-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+
|                       s                       |                  p                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                               o                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | cnt  |
+-----------------------------------------------+-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+
| http://www.gigmasters.com/elvis/ChuckBaril/   | http://www.snee.com/ns/epinfluences | Elvis, Donny Osmond, Barry Manilow, Pebo Bryson, James Ingram, George Benson, and George Strait                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |    1 |
|  http://www.gigmasters.com/elvis/DukeHicks/   |  dc:description                     | Been performing Elvis tribute shows for 10 yrs. Having been in the music business for twenty years Duke knows how to please the audience. Duke started doing his tribute shows after several request from the audience members to do more and more of Elvis' songs and a request for him to do an Elvis Tribute Show. Duke has been asked several times if he is lip-syching to Elvis' songs and the answer is absolutely NO. The sound and stage presence is so close to 'The King' that it has startled many.                                                                                                                                                                                                                                                                                                                                                                                                                                                |    4 |
|  http://www.gigmasters.com/elvis/DukeHicks/   | http://www.snee.com/ns/epcategory   | Elvis Impersonator, Tribute Band                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |    1 |
|  http://www.gigmasters.com/elvis/DukeHicks/   | http://www.snee.com/ns/epinfluences | Elvis Presley                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |    1 |
|  http://www.gigmasters.com/elvis/ElvisByDano/ |  dc:description                     | For a great time at your next event, how about ELVIS by Dano? His main goal is to provide a show that reflects the raw energy, passion, and humor that The King once shared with us. Dano, being a huge Elvis fan since his eleventh year, has loved singing along with The Man his entire adult life. He started to impersonate Elvis in public about 1995, and his first long solo performance, with a full set of songs, was at a church social in 2002. Dano was also a seven year member of a classic rock band and often contributed an Elvis act that audiences always truly enjoyed. Starting in February, 2004 he has performed in many solo shows for benefits, auctions, various parties , a Theme Park, as well as much time donated to entertain the elderly. He uses quality audio equipment with great sounding background tracks. Longer travel distances will be considered. Contact Dano today if you want your next party 'all shook up'!!! |    3 |
+-----------------------------------------------+-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+