[ 
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)

Reply via email to