在dbpedia上使用SPARQL计算WikiPageLength的方差

问题描述

我想计算具有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 } 转换为整数,否则它不会显示乘法结果

  • 通过运行第二个内部子查询,您可以看到如何修改变量

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...