[
https://issues.apache.org/jira/browse/JENA-1693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16832936#comment-16832936
]
Marco Neumann commented on JENA-1693:
-------------------------------------
ajs6f fyi the MedianAccumulator looks like this in my CustomAggregate
static class MedianAccumulator implements Accumulator {
ArrayList <NodeValue>nodeValues = new ArrayList<NodeValue>() ;
double median;
private AggCustom agg ;
MedianAccumulator(AggCustom agg) \{ this.agg = agg ; }
public void accumulate(Binding binding, FunctionEnv functionEnv) {
ExprList exprList = agg.getExprList() ;
for(Expr expr: exprList) {
try {
NodeValue nv = expr.eval(binding, functionEnv) ;
if ( nv.isLiteral()&&nv.isNumber())
nodeValues.add(nv);
double[] arrDouble = new double[nodeValues.size()];
for(int i=0; i<nodeValues.size(); i++){
arrDouble[i] = Double.parseDouble(nodeValues.get(i).toString());
}
// if you think we will not use the Apache Math library in the future again and
it widens our dependency footprint unnecessarily we would have to implement our
own here
median = new Median().evaluate(arrDouble);
} catch (ExprEvalException ex) {}
}
}
public NodeValue getValue() {
return NodeValue.makeDouble(median) ;
}
}
> Add Aggregate Function MEDIAN To SPARQL ARQ Syntax
> --------------------------------------------------
>
> Key: JENA-1693
> URL: https://issues.apache.org/jira/browse/JENA-1693
> Project: Apache Jena
> Issue Type: New Feature
> Environment: general
>
> Reporter: Marco Neumann
> Priority: Minor
> Labels: features
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> As briefly mentioned to Andy Seaborne I'd like to see the aggregate function
> MEDIAN in the ARQ SPARQL syntax.
> "Median is the value that separates lower half from the higher half when the
> values are ordered in ascending or descending order. It is the middle value
> in a given dataset. Medians are helpful in understanding the distribution of
> data. This can be done by comparing mean and median values. By observing the
> difference between these values we can understand whether the data is left
> skewed or right skewed. The formula for median is: Median = ((n + 1)/2) th
> number in the series where the numbers are ordered. Here, n denotes the
> number of values for the given variable."
> DIVYA SPANDANA MARNEN, SPARQL-R: EXTENDED SPARQL FOR STATISTICAL COMPUTATIONS.
>
> example
>
> SELECT agg:median(?age) AS ?median
> WHERE
> { ?x ex:age ?age }
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)