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()); }
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); }
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() }); } } }