在dbpedia上使用SPARQL计算wikiPageLength的方差
我想用dbpedia()计算维基百科页面长度历史的方差(或标准差),对于轻小说类书籍(轻小说) SPARQL在这里:在dbpedia上使用SPARQL计算wikiPageLength的方差,sparql,semantic-web,dbpedia,Sparql,Semantic Web,Dbpedia,我想用dbpedia()计算维基百科页面长度历史的方差(或标准差),对于轻小说类书籍(轻小说) SPARQL在这里: PREFIX dbpedia0: <http://dbpedia.org/ontology/> PREFIX term: <http://purl.org/dc/terms/> SELECT DISTINCT ?item ((SUM((?n - ?mean)*(?n - ?mean)))/(COUNT(?n) - 1) AS ?variance) W
PREFIX dbpedia0: <http://dbpedia.org/ontology/>
PREFIX term: <http://purl.org/dc/terms/>
SELECT DISTINCT ?item ((SUM((?n - ?mean)*(?n - ?mean)))/(COUNT(?n) - 1) AS ?variance)
WHERE
{
?item term:subject dbc:Light_novels .
?item dbpedia0:wikiPageLength ?n
{
SELECT ?item (AVG(?n) AS ?mean) WHERE {
?item dbpedia0:wikiPageLength ?n .
}
}
}
前缀dbpedia0:
前缀词:
选择不同的项目((总和((?n-平均值)*(?n-平均值))/(计数(?n)-1)作为方差)
哪里
{
?项目术语:主题dbc:轻小说。
?项目dbpedia0:wikiPageLength?n
{
选择项目(平均值(?n)作为平均值),其中{
?项目dbpedia0:wikiPageLength?n。
}
}
}
这会产生一个错误Virtuoso 37000错误SP031:SPARQL编译器:名称?n用于多个子句中,没有任何逻辑连接
我无数次尝试盲目地修改代码,但最终不知道如何才能做到这一点
我真的很感谢你的有益评论。谢谢。正常情况下,这应该会起作用
PREFIX dbpedia0: <http://dbpedia.org/ontology/>
PREFIX term: <http://purl.org/dc/terms/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?item IF(?count=1,0,(SUM(?x)/(?count-1))) as ?var
{
SELECT ?item ?n xsd:integer(?n) as ?ni ?mean xsd:integer(?ni-?mean) as ?nmean ((?nmean)*(?nmean)) as ?x ?count
{
?item dbpedia0:wikiPageLength ?n
{
SELECT ?item AVG(?n2) as ?mean (COUNT(?item)) as $count
{
?item term:subject dbc:Light_novels .
?item dbpedia0:wikiPageLength ?n2
}
GROUP BY ?item
}
}
} GROUP BY ?item ?count
前缀dbpedia0:
前缀词:
前缀xsd:
如果(?计数=1,0,(总和(?x)/(计数-1)),则选择项目作为变量
{
选择项目n xsd:integer(?n)作为?ni?平均值xsd:integer(?ni-?平均值)作为?nmean((?nmean)*(?nmean))作为?x?计数
{
?项目dbpedia0:wikiPageLength?n
{
选择项目平均值(?n2)作为平均值(计数(?项目))作为$COUNT
{
?项目术语:主题dbc:轻小说。
?项目dbpedia0:wikiPageLength?n2
}
按项目分组
}
}
}按项目计数分组
但它抛出了这个错误
内部优化编译器错误:sqlo\u place\u exp中的dfe不正确。c:2491
所以我把它改成了这个:
PREFIX dbpedia0: <http://dbpedia.org/ontology/>
PREFIX term: <http://purl.org/dc/terms/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?item IF(?count=1,-1,(?sx/(?count-1))) as ?var
{
SELECT ?item SUM(?x) as ?sx ?count
{
SELECT ?item ?n xsd:integer(?n) as ?ni ?mean xsd:integer(?ni-?mean) as ?nmean ((?nmean)*(?nmean)) as ?x ?count
{
?item dbpedia0:wikiPageLength ?n
{
SELECT ?item AVG(?n2) as ?mean (COUNT(?item)) as $count
{
?item term:subject dbc:Light_novels .
?item dbpedia0:wikiPageLength ?n2
}
GROUP BY ?item
}
}
} GROUP BY ?item ?count
}
前缀dbpedia0:
前缀词:
前缀xsd:
如果(?count=1,-1,(?sx/(?count-1)),则选择?项作为?变量
{
选择项目总和(?x)作为?sx?计数
{
选择项目n xsd:integer(?n)作为?ni?平均值xsd:integer(?ni-?平均值)作为?nmean((?nmean)*(?nmean))作为?x?计数
{
?项目dbpedia0:wikiPageLength?n
{
选择项目平均值(?n2)作为平均值(计数(?项目))作为$COUNT
{
?项目术语:主题dbc:轻小说。
?项目dbpedia0:wikiPageLength?n2
}
按项目分组
}
}
}按项目计数分组
}
- 我们需要一个。用于计算平均值和b。根据平均值计算每个
的差值之和n
- 我需要将类型转换为整数变量
,否则它不会显示乘法的结果xsd:integer(?ni-?mean)
- 通过运行第二个内部子查询,您可以看到变量是如何修改的
?项术语:subject dbc:Light_news.
放入子查询中。因此,您最终将拥有?项目术语:主题dbc:Light\u小说。
在内部和外部查询tanks@UninformedUser中,错误问题由此解决。但我仍然没有得到查询结果。你有什么想法吗?你现在用哪个端点?在dbo的数据中:wikiPageLength
不存在。在它里面,我发誓!帮了大忙,谢谢。我现在正在计算wikiPageModified日期数据的方差,如果您对此也有想法,我将不胜感激。再次感谢。