你可以通過這樣的查詢獲得所有具有dbpedia:World_Wide_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
SPARQL results
這包括像下面這樣,這似乎與你在評論中提到什麼一致的結果:
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
這將產生一個lot的結果,所以你可能想限制你可以使用的屬性。你應該能夠做到以下,但在當前的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
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
SPARQL results
據你所說的 「一切與之相關的」 的意思不是真的清楚。 RDF約爲三倍。對事物的唯一描述是它的主體或客體的三元組。你的查詢只是要求所有包含'dbpedia:World_Wide_Web'的主題作爲對象。 –
你的過濾器工作得很好。然而,只有文字有語言,文字不能成爲RDF中三元組的主語,所以你不會得到任何結果。 –
我想了解用於網絡的編程語言以及爲WWW開發WWW和事件的人的東西......類似的東西 –