首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择至少出现N个抽象词的DBpedia资源?

选择至少出现N个抽象词的DBpedia资源?
EN

Stack Overflow用户
提问于 2015-11-19 18:20:16
回答 2查看 132关注 0票数 1

我有一个请求,它会产生一些DBpedia资源和它们的摘要。我如何过滤结果,以获得其摘要中至少包含特定单词的数量的资源?

代码语言:javascript
复制
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl:<http://www.dbpedial.org/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select distinct ?resource ?url ?resume where {
   ?resource rdfs:label ?Nom.
   ?resource foaf:isPrimaryTopicOf ?url.
   ?resource dbo:abstract ?resume.
   FILTER langMatches( lang(?Nom), "EN" )
   FILTER langMatches( lang(?resume), "EN" )
   ?Nom <bif:contains> "apple".             
}  

这是没有绑定函数的新请求:

代码语言:javascript
复制
select (strlen(replace(replace(Lcase(?resume), 'Jobs', '_'),'[^_]', '')) as ?nbr )  ?resource ?url 
where {
?resource rdfs:label ?Nom.
   ?resource foaf:isPrimaryTopicOf ?url.
   ?resource dbo:abstract ?resume.
FILTER langMatches( lang(?Nom), "EN" )    
FILTER langMatches( lang(?resume), "EN" )
?Nom <bif:contains> "Apple".}
GROUP BY ?Nom
Having(?nbr >= 1)      
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-19 18:40:51

这并不是绝对完美的,但是对于你想要完成的事情来说,它应该是比较好的。您可以使用替换来用单个字符(例如“_”)替换要计数的单词的所有实例。然后,您可以再次使用替换来替换除该字符外的所有内容,并使用空字符串。然后,您有一个字符串,如‘_’,其中长度是单词在字符串中出现的次数。例如,这里有一个在抽象中计数' the‘的查询,并且只保留那些'the’出现至少五次的查询。

代码语言:javascript
复制
select ?x ?nThe {
  values ?x { dbr:Horse dbr:Cat dbr:Dog }
  ?x dbo:abstract ?abs 
  filter langMatches(lang(?abs),'en')
  bind(strlen(replace(replace(?abs, '\\sthe\\s', '_'),'[^_]', '')) as ?nThe)
  filter (?nThe >= 5)
}

SPARQL结果

票数 2
EN

Stack Overflow用户

发布于 2015-11-27 19:43:33

没关系,我为我的请求找到了另一份表格:

代码语言:javascript
复制
PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo:     <http://dbpedia.org/ontology/> 
select distinct ?Nom ?resource ?url 
where {
   ?resource rdfs:label ?Nom.
   ?resource foaf:isPrimaryTopicOf ?url.
   ?resource dbo:abstract ?resume.
FILTER langMatches( lang(?Nom), "EN" )    
FILTER langMatches( lang(?resume), "EN" )
?Nom <bif:contains> "Apple".
FIlTER regex(?resume,"Jobs")}

对那些试图帮助我的人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33811501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档