Ejemplo n.º 1
0
 private IEnumerable <DimensionDto> ConvertTriplesToDimensions(IEnumerable <Triple> triples)
 {
     foreach (var triple in triples)
     {
         var  range = _graph.GetTriplesWithSubjectPredicate(triple.Object, RdfConstants.Range).SingleOrDefault();
         Type dataType;
         var  filledFrom = CanBeFilledFromDsd(triple) ? FilledFrom.Dsd : FilledFrom.Data;
         if (range != null)
         {
             dataType = range.Object.Equals(RdfConstants.Interval) ? typeof(DateTime) : typeof(string);
         }
         else
         {
             dataType = typeof(string);
         }
         yield return(new TreeDimensionDto
         {
             RdfUri = triple.Object.ToString(),
             Type = dataType,
             DimensionValues = new List <DimensionValueDto>(),
             Name = RdfConstants.GetNodeName(_graph, triple.Object),
             FilledFrom = filledFrom
         });
     }
 }
        public DataTable ConvertObservationsToDataTable(List <DimensionDto> dimensions, List <MeasureDto> measures)
        {
            var table = GetDataTableStructure(dimensions, measures);
            // list vsech triplu, ktere jsou observation
            var observations = _graph.GetTriplesWithPredicateObject(RdfConstants.Type, RdfConstants.Observation);
            // pro kazdou observation vlozit radek do datatable a ziskat list triplu, kde je observation subjektem
            var dimAndMeasuresList = new List <DimensionOrMeasureDto>();

            dimAndMeasuresList.AddRange(dimensions);
            dimAndMeasuresList.AddRange(measures);
            foreach (var observation in observations)
            {
                var triplesWhereObservationIsSubject = _graph.GetTriplesWithSubject(observation.Subject).ToList();
                var dict = GetDimensionAndMeasureDictionary(dimensions, measures);
                foreach (var dimOrMeasure in dimAndMeasuresList)
                {
                    var dimOrMeasureUri = _graphHelper.CreateUriNode(UriFactory.Create(dimOrMeasure.RdfUri));
                    var observedValue   =
                        triplesWhereObservationIsSubject.WithPredicate(dimOrMeasureUri).SingleOrDefault();
                    if (observedValue != null)
                    {
                        dict[dimOrMeasure.Name] = RdfConstants.GetNodeName(_graph, observedValue.Object);
                    }
                }
                var objectArrayToAdd = new List <object>();
                foreach (var dimOrMeasure in dict)
                {
                    objectArrayToAdd.Add(dimOrMeasure.Value);
                }
                var row = table.NewRow();
                row.ItemArray = objectArrayToAdd.ToArray();
                table.Rows.Add(row);
            }
            return(table);
        }
        private List <DimensionValueDto> GetDimensionValues(DimensionDto dimension)
        {
            var values       = new List <Tuple <string, string> >();
            var observations = _graph.GetTriplesWithPredicateObject(RdfConstants.Type, RdfConstants.Observation);

            foreach (var observation in observations)
            {
                // Find triple where observation subject is subject and dimension is predicate
                var observationOfDimension = _graph.GetTriplesWithSubjectPredicate
                                                 (observation.Subject, _graphHelper.CreateUriNode(UriFactory.Create(dimension.RdfUri))).SingleOrDefault();
                if (observationOfDimension == null)
                {
                    throw new InvalidDataException($"Observation {observation.Subject} has no value of dimension {dimension.Name}. ");
                }
                var objectUri = observationOfDimension.Object.ToString();
                if (!values.Select(v => v.Item1).Contains(objectUri))
                {
                    values.Add(Tuple.Create(objectUri, RdfConstants.GetNodeName(_graph, objectUri)));
                }
            }
            return(values.Select(value => new DimensionValueDto
            {
                Dimension = dimension,
                RdfUri = value.Item1,
                Value = value.Item2
            }).ToList());
        }
Ejemplo n.º 4
0
        public IEnumerable <MeasureDto> ConvertToMeasures(IEnumerable <Triple> measureTriples)
        {
            var ret = measureTriples.Select(mt => mt.Object).Select(measure => new MeasureDto
            {
                Name   = RdfConstants.GetNodeName(_graph, measure),
                RdfUri = measure.ToString(),
                Type   = typeof(double)
            }).ToList();

            return(ret);
        }
Ejemplo n.º 5
0
        private IEnumerable <DimensionValueDto> GetDimensionValues(DimensionDto dimension, Triple triple)
        {
            var rangeTriple = _graph.GetTriplesWithSubjectPredicate(triple.Object, RdfConstants.Range).SingleOrDefault();

            if (rangeTriple.Object.Equals(RdfConstants.Concept))
            {
                var codeList = _graph.GetTriplesWithSubjectPredicate(triple.Object, RdfConstants.Codelist).Single().Object;
                var values   = _graph.GetTriplesWithPredicateObject(RdfConstants.InScheme, codeList);
                foreach (var value in values)
                {
                    yield return(new DimensionValueDto
                    {
                        Dimension = dimension,
                        Value = RdfConstants.GetNodeName(_graph, value.Subject),
                        RdfUri = value.Subject.ToString()
                    });
                }
            }
        }