使用SPARQL筛选DBpedia结果并返回特定结果的最佳方法

使用SPARQL筛选DBpedia结果并返回特定结果的最佳方法,sparql,rdf,dbpedia,virtuoso,Sparql,Rdf,Dbpedia,Virtuoso,我有一个小问题 从wikipedia页面ID的列表中,我想返回: 页面ID 摘要(英文) 缩略图 类型 仅适用于公司或大学页面 我有一个简单的SPARQL查询: PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> select ?pageid ?abstract ?thumbnail ?company ?type where { ?resource dbpedia-owl:wikiPageID ?pageid;

我有一个小问题

从wikipedia页面ID的列表中,我想返回:

  • 页面ID
  • 摘要(英文)
  • 缩略图
  • 类型
仅适用于公司或大学页面

我有一个简单的SPARQL查询:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
select ?pageid ?abstract ?thumbnail  ?company ?type 
where {
    ?resource dbpedia-owl:wikiPageID ?pageid;
    dbpedia-owl:abstract ?abstract 
. OPTIONAL { 
    ?resource dbpedia-owl:thumbnail ?thumbnail
     } 
 . OPTIONAL { 
    ?resource  dbpedia-owl:type ?type
    } 
. OPTIONAL { 
    ?resource ?company dbpedia-owl:Company 
    }

FILTER( 
?pageid = 14617 || ?pageid = 26989 || ?pageid = 31776 || 
?pageid = 256913 || ?pageid = 342924 || ?pageid = 1785141 || 
?pageid = 3057187 || ?pageid = 7529378 || ?pageid = 18978754 
)
FILTER(langMatches(lang(?abstract),"en"))
}
前缀dbpedia owl: 选择?页面ID?摘要?缩略图?公司?类型 在哪里{ ?资源dbpedia owl:wikiPageID?pageid; dbpedia猫头鹰:摘要?摘要 .可选{ ?资源dbpedia owl:缩略图?缩略图 } .可选{ ?资源dbpedia owl:type?type } .可选{ ?资源?公司数据库百科owl:公司 } 过滤器( pageid=14617 | | | pageid=26989 | | pageid=31776 | | pageid=256913 | | | pageid=342924 | | pageid=1785141 | | pageid=3057187 | | | pageid=7529378 | | pageid=18978754 ) 过滤器(langMatches(lang(?摘要),“en”)) } 我有一个结果:

我设法返回了我想要的数据,只是我不能只过滤公司和大学的数据


关于如何删除dbpedia查询结果中不属于公司或大学的页面,您有什么想法吗?

@AKSW提供了一个可以满足您需要的查询,但我认为最好对原因进行更详细的解释。这里是这个查询,有一堆空白和一些内联注释来帮助澄清--

前缀rdf:
前缀dbo:
选择?页面ID?摘要?缩略图?类型
哪里
{ 
#接下来的几行限制rdf:type值
值?类型
{dbo:公司dbo:大学}
#接下来的几行限制dbo:wikiPageID值
值?页面ID
{   14617     26989      31776
256913    342924    1785141
3057187   7529378   18978754 } 
#接下来的几行获取3个谓词的值
#每门课程你都需要
?资源dbo:wikiPageID?pageid;
rdf:类型?类型;
抽象?抽象。
#下一行是缩略图,如果它们存在的话
可选{?资源dbo:thumboil?thumboil}
#下一行将您收到的解决方案限制为
#带有标记为“en”的抽象语言
过滤器(langMatches(lang(?摘要),“en”))
}

@AKSW提供了一个可以满足您需求的查询,但我认为最好对原因进行更详细的解释。这里是这个查询,有一堆空白和一些内联注释来帮助澄清--

前缀rdf:
前缀dbo:
选择?页面ID?摘要?缩略图?类型
哪里
{ 
#接下来的几行限制rdf:type值
值?类型
{dbo:公司dbo:大学}
#接下来的几行限制dbo:wikiPageID值
值?页面ID
{   14617     26989      31776
256913    342924    1785141
3057187   7529378   18978754 } 
#接下来的几行获取3个谓词的值
#每门课程你都需要
?资源dbo:wikiPageID?pageid;
rdf:类型?类型;
抽象?抽象。
#下一行是缩略图,如果它们存在的话
可选{?资源dbo:thumboil?thumboil}
#下一行将您收到的解决方案限制为
#带有标记为“en”的抽象语言
过滤器(langMatches(lang(?摘要),“en”))
}

此操作的目的是什么:
可选的{资源?公司dbpedia owl:company}
前缀rdf:PREFIX dbo:SELECT?pageid?摘要?缩略图?类型{值?类型{dbo:company dbo:University}值?pageid{14617 26989 31776 256913 342924 1785141 3057187 7529378 18978754}资源dbo:wikiPageID?pageid;rdf:type?type;dbo:abstract?abstract.可选的{资源dbo:thumboil?thumboil}过滤器(langMatches(lang(?abstract),“en”)}
这个的目的是什么:
可选的{资源?公司dbpedia owl:company}
前缀rdf:PREFIX dbo:SELECT?pageid?abstract?缩略图?type where{VALUES?type{dbo:Company dbo:University}value?pageid{14617 26989 31776 256913 342924 1785141 3057187 7529378 18978754}?资源dbo:wikiPageID?pageid?rdf:type?type?type?dbo:abstract?abstract?可选的{?资源dbo:thumnail?缩略图}过滤器(langMatches(lang(?摘要),“en”)}
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT ?pageid ?abstract ?thumbnail ?type 
WHERE
  { 

  # the next couple lines limit rdf:type values
    VALUES ?type
           { dbo:Company dbo:University } 

  # the next few lines limit dbo:wikiPageID values
    VALUES ?pageid 
           {   14617     26989      31776
              256913    342924    1785141
             3057187   7529378   18978754 } 

  # the next few lines get values for the 3 predicates 
  # you required for each subject
               ?resource  dbo:wikiPageID  ?pageid ; 
                          rdf:type        ?type ; 
                          dbo:abstract    ?abstract . 

  # the next line gets thumbnails, if they exist
    OPTIONAL { ?resource  dbo:thumbnail   ?thumbnail } 

  # the next line limits the solutions you receive to those 
  # with an abstract langtagged as "en"
    FILTER ( langMatches ( lang ( ?abstract ), "en" ) ) 

  }