Sparql 如何从DBPedia获取所有公司?
我对查询DBPedia还不熟悉。我如何才能从所有公司获得 此查询仅返回50000个组织:Sparql 如何从DBPedia获取所有公司?,sparql,dbpedia,Sparql,Dbpedia,我对查询DBPedia还不熟悉。我如何才能从所有公司获得 此查询仅返回50000个组织: SELECT DISTINCT * WHERE {?company a dbpedia-owl:Company} 你的查询没有返回所有的公司,这是对的。不过,这种模式是正确的。请注意,此查询仅统计公司,返回88054: prefix dbpedia-owl: <http://dbpedia.org/ontology/> select (count(distinct ?company) as
SELECT DISTINCT * WHERE {?company a dbpedia-owl:Company}
你的查询没有返回所有的公司,这是对的。不过,这种模式是正确的。请注意,此查询仅统计公司,返回88054:
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select (count(distinct ?company) as ?count)
where {
?company a dbpedia-owl:Company
}
上面的设置为已排序行设置阈值
该文章提出的解决方案是使用子查询:
要防止上述问题,您可以利用
更好地利用与关联的临时存储的子查询
这种追求。例如:
SELECT ?p ?s
WHERE
{
{
SELECT DISTINCT ?p ?s
FROM <http://dbpedia.org>
WHERE
{
?s ?p <http://dbpedia.org/resource/Germany>
} ORDER BY ASC(?p)
}
}
OFFSET 50000
LIMIT 1000
SELECT?p?s
哪里
{
{
选择不同的p?s
从…起
哪里
{
标准普尔
}ASC订购(?p)
}
}
抵销50000
限制1000
我不完全确定这为什么能解决问题,可能是端点可以对40000多行进行排序,只要它不必返回所有行。无论如何,它确实起作用。您的查询将变成:
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select ?company {{
select ?company {
?company a dbpedia-owl:Company
}
order by ?company
}}
offset 88000
LIMIT 1000
前缀dbpedia owl:
选择?公司{{
选择?公司{
?a公司dbpedia猫头鹰:公司
}
公司订购
}}
偏移量88000
限制1000
从DBpedia获取所有公司的另一种方法是使用以下查询运行:
SELECT *
WHERE {
{?s a <http://dbpedia.org/ontology/Person>.?s ?p ?o.}
UNION
{?s1 a <http://dbpedia.org/ontology/Person>.?o1 ?p1 ?s1.}
}
选择*
在哪里{
{s a.?s p?o.}
联合
{?s1a.?o1?p1?s1.}
}
这还有一个额外的优点,就是为您提供所有的三元组。它需要几分钟到几个小时的时间,具体取决于您的RAM和CPU能力。但是,对超过40000个记录集进行排序时出现问题:
select?company where{company a dbpedia owl:company}order by?company limit 10 offset 40000
GettingVirtuoso 22023错误SR353:Sorted TOP子句指定要排序的行数超过40010行。只允许4万人。要么减少偏移量和/或行数,要么使用可滚动的光标
@Anton-Hmm…这确实会让事情变得更复杂。我想在这一点上,你会想阅读,它解决了这个特殊的问题。谢谢!我只是想发布这个链接:)去试试看。我想知道这样的查询是否返回非相交集。@安东,我刚刚更新了我的答案,以说明如何使用这种技术实现查询。看起来你可以得到所有的公司。:)
SELECT ?p ?s
WHERE
{
{
SELECT DISTINCT ?p ?s
FROM <http://dbpedia.org>
WHERE
{
?s ?p <http://dbpedia.org/resource/Germany>
} ORDER BY ASC(?p)
}
}
OFFSET 50000
LIMIT 1000
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select ?company {{
select ?company {
?company a dbpedia-owl:Company
}
order by ?company
}}
offset 88000
LIMIT 1000
SELECT *
WHERE {
{?s a <http://dbpedia.org/ontology/Person>.?s ?p ?o.}
UNION
{?s1 a <http://dbpedia.org/ontology/Person>.?o1 ?p1 ?s1.}
}