关于dbpedia的Sparql:万维网

关于dbpedia的Sparql:万维网,sparql,dbpedia,Sparql,Dbpedia,我是语义网的新手,我正试图弄清楚如何编写SPARQL查询,以便从dbpedia中提取有关特定主题的所有信息。不仅是礼节问题,还有与之相关的一切问题 我甚至不知道如何开始这样的查询 我想得到所有关于万维网的三倍 PREFIX dbpedia: <http://dbpedia.org/resource/> SELECT DISTINCT ?s ?p ?o WHERE { ?s ?p ?o . ?s ?p dbpedia:World_Wide_Web # FILT

我是语义网的新手,我正试图弄清楚如何编写SPARQL查询,以便从dbpedia中提取有关特定主题的所有信息。不仅是礼节问题,还有与之相关的一切问题

我甚至不知道如何开始这样的查询

我想得到所有关于万维网的三倍

PREFIX dbpedia: <http://dbpedia.org/resource/>

SELECT DISTINCT ?s ?p ?o 
WHERE  {
  ?s ?p ?o .
  ?s ?p dbpedia:World_Wide_Web  

  #  FILTER( lang(?s) = "en" )   -- doesn't work with filter

}Limit 100
这只返回一些带有owl:sameAs谓词的三元组


你能帮我吗?

你可以通过这样的查询得到所有以dbpedia:World\u Wide\u Web为主题或对象的三元组,当然,这样的查询只给出1000。对于任何文本对象,我们可以限制其语言值:

select ?s ?p ?o where {
  values ?web { dbpedia:World_Wide_Web }
  { ?web ?p ?o bind( ?web as ?s ) } union
  { ?s ?p ?web bind( ?web as ?o ) }

  # for literal objects, take only English ones
  filter( !isLiteral(?o) || langMatches(lang(?o),'en') )
}
limit 1000
这包括如下结果,这似乎与您在评论中提到的一致:

http://dbpedia.org/resource/World_Wide_Web  http://dbpedia.org/property/company  http://dbpedia.org/resource/CERN
http://dbpedia.org/resource/World_Wide_Web  http://dbpedia.org/property/inventor  http://dbpedia.org/resource/Tim_Berners-Lee
这将产生大量结果,因此您可能希望限制可以使用的属性。您应该能够执行以下操作,但在当前DBpedia端点上,它会导致错误

select ?s ?p ?o where {
  values ?web { dbpedia:World_Wide_Web }
  values ?p   { rdf:type dbpedia-owl:abstract }

  { ?web ?p ?o bind( ?web as ?s ) } union
  { ?s ?p ?web bind( ?web as ?o ) }
}
limit 1000

你所说的与之相关的一切都不是很清楚。RDF大约是三倍。对事物的唯一描述是它的主语或宾语的三元组。您的查询只是询问所有将dbpedia:World\u Wide\u Web作为对象的主题。您的过滤器工作正常。然而,只有文字才有语言,文字不能成为RDF中三元组的主题,所以你不会得到任何结果。我想了解一些关于用于web的编程语言以及开发WWW和WWW事件的人的信息。。。诸如此类的东西你可以浏览dbpedia数据,例如。你到底想逃离的是什么?请注意,询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。你在寻找什么样的预期结果?我想知道我如何能从关于TBL的事情中获得,例如Woow!非常感谢约书亚!我从没想过会这样。我还可以插入我想要允许的谓词列表吗?这会像值一样吗?p{rdf:type,dc:terms/alternative}bind{what your do}?太棒了!我怎么能把一个查询限制在我输入的一系列属性中?太棒了!谢谢!如果你来罗马尼亚,我给你拿瓶啤酒!你帮了我很多。我将试着看看为什么这不起作用,我;如果我知道了,我会把答案贴出来。再次非常感谢@我更新了答案。值?p{p1 p2…}的简单答案应该有效,但DBpedia的端点出于某种原因拒绝了它。你可以在p1,p2,…`相反希望过滤器能像值一样高效。
Virtuoso 37000 Error SP031: SPARQL compiler: Internal error: sparp_gp_attach_filter_cbk(): attempt to attach a filter with used variable

SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> select ?s ?p ?o where {
  values ?web { dbpedia:World_Wide_Web }
  values ?p   { rdf:type dbpedia-owl:abstract }

  { ?web ?p ?o bind( ?web as ?s ) } union
  { ?s ?p ?web bind( ?web as ?o ) }
}
limit 1000
select ?s ?p ?o where {
  values ?web { dbpedia:World_Wide_Web }

  { ?web ?p ?o bind( ?web as ?s ) }
  union
  { ?s ?p ?web bind( ?web as ?o ) }

  filter( ?p in (rdf:type, dbpedia-owl:abstract ))  ###
}
limit 1000