Nlp SPARQL如何处理不同的大小写查询?
我对SPARQL还是有点陌生。我已经为我们公司建立了一个dbpedia端点。我不知道最终用户将查询什么,因为DBpedia是区分大小写的,所以我传递主题的标题大小写和大写版本,而不是像person这样的内容;e、 g.“计算机编程”与“Alcia_键”。与其传入两个单独的查询,实现这一点最有效的方法是什么?我试过(从)的IN接线员,但似乎在什么地方失败了Nlp SPARQL如何处理不同的大小写查询?,nlp,sparql,wikipedia,dbpedia,sparqlwrapper,Nlp,Sparql,Wikipedia,Dbpedia,Sparqlwrapper,我对SPARQL还是有点陌生。我已经为我们公司建立了一个dbpedia端点。我不知道最终用户将查询什么,因为DBpedia是区分大小写的,所以我传递主题的标题大小写和大写版本,而不是像person这样的内容;e、 g.“计算机编程”与“Alcia_键”。与其传入两个单独的查询,实现这一点最有效的方法是什么?我试过(从)的IN接线员,但似乎在什么地方失败了 select ?label ?abstract where { IN (<http://dbpedia.org/resource/
select ?label ?abstract where {
IN (<http://dbpedia.org/resource/alicia_keys>, <http://dbpedia.org/resource/Alicia_Keys>) rdfs:label ?label;
dbpedia-owl:abstract ?abstract.
}
LIMIT 1"""
选择?标签?摘要在哪里{
在(,)rdfs中:标签?标签;
dbpedia猫头鹰:摘要?摘要。
}
限制1“
因为DBpedia是区分大小写的,所以我同时传递标题大小写和大写字母
主题与人物的版本;例如。
“计算机编程”与“Alcia_键”。而不是通过两个单独的
质疑实现这一目标最有效的方法是什么
URI应该被视为不透明的,而DBpedia通常有一些很好的结构,因此可以通过连接http://dbpedia.org/resource
和一些用
替换
的字符串,这确实不是一种非常可靠的方法。更好的方法是注意,您得到的字符串可能是他把它看作是某种资源的标签,在case中的模变化。鉴于此,最好的办法是寻找具有相同标签的东西,模case。例如
select ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这实际上会非常慢,因为你必须找到每一个资源,在它的标签上做一些字符串处理
可以做些什么来让它变得更好呢?好吧,如果你知道你在寻找什么样的东西,那会有很大帮助。例如,你可以将查询限制为个人:
select distinct ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdf:type dbpedia-owl:Person ;
rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这是一个改进,但仍然没有那么快。至少在概念上,它仍然需要接触每个人并检查他们的姓名。一些SPARQL端点支持文本索引,如果您想有效地这样做,这可能就是您所需要的
当然,最好的选择是简单地向您的用户询问更多的信息,并提前对数据进行规范化。如果您的用户提供“AliCIA密钥”,那么您可以对“AliCIA密钥”@en进行规范化,然后执行类似的操作:
select distinct ?resource where {
values ?input { "Alicia Keys"@en }
?resource rdfs:label ?input .
}
因为DBpedia是区分大小写的,所以我同时传递标题大小写和大写字母
主题与人物的版本;例如。
“计算机编程”与“Alcia_键”。而不是通过两个单独的
质疑实现这一目标最有效的方法是什么
URI应该被视为不透明的,而DBpedia通常有一些很好的结构,因此可以通过连接http://dbpedia.org/resource
和一些用
替换
的字符串,这确实不是一种非常可靠的方法。更好的方法是注意,您得到的字符串可能是他把它看作是某种资源的标签,在case中的模变化。鉴于此,最好的办法是寻找具有相同标签的东西,模case。例如
select ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这实际上会非常慢,因为你必须找到每一个资源,在它的标签上做一些字符串处理
可以做些什么来让它变得更好呢?好吧,如果你知道你在寻找什么样的东西,那会有很大帮助。例如,你可以将查询限制为个人:
select distinct ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdf:type dbpedia-owl:Person ;
rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这是一个改进,但仍然没有那么快。至少在概念上,它仍然需要接触每个人并检查他们的姓名。一些SPARQL端点支持文本索引,如果您想有效地这样做,这可能就是您所需要的
当然,最好的选择是简单地向您的用户询问更多的信息,并提前对数据进行规范化。如果您的用户提供“AliCIA密钥”,那么您可以对“AliCIA密钥”@en进行规范化,然后执行类似的操作:
select distinct ?resource where {
values ?input { "Alicia Keys"@en }
?resource rdfs:label ?input .
}
因为DBpedia是区分大小写的,所以我同时传递标题大小写和大写字母
主题与人物的版本;例如。
“计算机编程”与“Alcia_键”。而不是通过两个单独的
质疑实现这一目标最有效的方法是什么
URI应该被视为不透明的,而DBpedia通常有一些很好的结构,因此可以通过连接http://dbpedia.org/resource
和一些用
替换
的字符串,这确实不是一种非常可靠的方法。更好的方法是注意,您得到的字符串可能是他把它看作是某种资源的标签,在case中的模变化。鉴于此,最好的办法是寻找具有相同标签的东西,模case。例如
select ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这实际上会非常慢,因为你必须找到每一个资源,在它的标签上做一些字符串处理
可以做些什么来让它变得更好呢?好吧,如果你知道你在寻找什么样的东西,那会有很大帮助。例如,你可以将查询限制为个人:
select distinct ?resource where {
values ?input { "AliCIA KeYS" }
?resource rdf:type dbpedia-owl:Person ;
rdfs:label ?label .
filter ( ucase(str(?label)) = ucase(?input) )
}
这是一个改进,但仍然没有那么快。至少在概念上,它仍然需要接触每个人并检查他们的姓名。一些SPARQL端点支持文本索引,如果您想有效地这样做,这可能就是您所需要的
当然,最好的选择是简单地向您的用户询问更多的信息,并提前对数据进行规范化。如果您的用户提供“AliCIA密钥”,那么您可以对“AliCIA密钥”@en进行规范化,然后执行类似的操作:
select distinct ?resource where {
values ?input { "Alicia Keys"@en }
?resource rdfs:label ?input .
}
因为DBpedia是区分大小写的,所以我同时传递标题大小写和大写字母
主题与人物的版本;例如。
“计算机编程”与“Alcia_键”。而不是通过两个单独的
质疑实现这一目标最有效的方法是什么
URI应该被视为不透明的,而DBpedia通常有一些ni