问题描述
我想计算具有dbpedia(http://live.dbpedia.org/sparql)的轻型小说(Light_novels)的维基百科页面长度历史的方差(或标准差)。
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)
WHERE
{
?item term:subject dbc:Light_novels .
?item dbpedia0:wikiPageLength ?n
{
SELECT ?item (AVG(?n) AS ?mean) WHERE {
?item dbpedia0:wikiPageLength ?n .
}
}
}
这会导致错误Virtuoso 37000 Error SP031: SPARQL compiler: The name ?n is used in multiple clauses,without any logical connection
并且我尝试了无数次修改代码,但是最终不知道如何实现。
非常感谢您的宝贵意见。谢谢。
解决方法
通常这应该工作
class MyClass {
typealias BuildFunc = ()->Void
private var workflow = Array<BuildFunc?>(repeating: nil,count: 3)
func build() {
workflow.compactMap { $0 }.forEach { f in
f()
}
}
func setA() -> MyClass {
workflow[0] = a
return self
}
func setB() -> MyClass {
workflow[1] = b
return self
}
func setC() -> MyClass {
workflow[2] = c
return self
}
func a() -> Void {
print("a")
}
func b() -> Void {
print("b")
}
func c() -> Void {
print("c")
}
}
但是会引发此错误
内部优化的编译器错误:sqldf.c:2491中sqlo_place_exp中的dfe错误
因此,我已将其修改为此:
let build = MyClass()
build.setC().setA()
build.build()
-
我们需要汇总a。用于计算平均值和b。计算每个
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,(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
与均值之差的总和。 -
我需要将类型
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 }
转换为整数,否则它不会显示乘法结果 -
通过运行第二个内部子查询,您可以看到如何修改变量