Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/13/09 15:07:31 (15 years ago)
Author:
gkronber
Message:

worked on CEDMA DB-backend. Select() interface to RDF_Store is not powerful enough => need Query() interface. #419
(work in progress - doesn't build!)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.CEDMA.Core/Results.cs

    r1109 r1116  
    6464
    6565    private List<ResultsEntry> entries = null;
     66    private bool cached = false;
    6667    public IEnumerable<ResultsEntry> GetEntries() {
    67       if (entries == null)
    68         Reload();
     68      if (!cached)
     69        return SelectRows();
    6970      return entries.AsEnumerable();
    70     }
    71 
    72     internal void Reload() {
    73       entries = SelectRows().ToList();
    74       FireChanged();
    7571    }
    7672
     
    7874      if (store == null) yield break;
    7975
    80       var results = store.Select(new Statement(dataSetEntity, Ontology.PredicateHasModel, Ontology.AnyEntity))
    81          .SelectMany(x => store.Select(new SelectFilter(
    82            new Entity[] { (Entity)x.Property },
    83            new Entity[] { Ontology.PredicateModelAttribute },
    84            new Resource[] { Ontology.AnyEntity })))
    85          .SelectMany(x =>
    86            store.Select(
    87               new SelectFilter(
    88               new Entity[] { (Entity)x.Property },
    89               new Entity[] { Ontology.PredicateModelAttributeName },
    90               new Entity[] { Ontology.AnyEntity })).Select(y =>
    91                 new {
    92                   Model = x.Subject,
    93                   Attribute = (Entity)x.Property,
    94                   AttributeName = (Literal)y.Property
    95                 }))
    96          .SelectMany(x =>
    97            store.Select(
    98              new Statement(x.Attribute, Ontology.PredicateModelAttributeValue, Ontology.AnyEntity))
    99              .Select(y =>
    100                new {
    101                  Model = x.Model.Uri,
    102                  AttributeName = x.AttributeName.Value,
    103                  AttributeValue = ((Literal)y.Property).Value
    104                })).GroupBy(x => x.Model);
     76      var models = store.Select(new Statement(dataSetEntity, Ontology.PredicateHasModel, Ontology.AnyEntity));
    10577
     78      //var results = store.Select(new Statement(dataSetEntity, Ontology.PredicateHasModel, Ontology.AnyEntity))
     79      //   .SelectMany(x => store.Select(new SelectFilter(
     80      //     new Entity[] { (Entity)x.Property },
     81      //     new Entity[] { Ontology.PredicateModelAttribute },
     82      //     new Resource[] { Ontology.AnyEntity })))
     83      //   .SelectMany(x =>
     84      //     store.Select(
     85      //        new SelectFilter(
     86      //        new Entity[] { (Entity)x.Property },
     87      //        new Entity[] { Ontology.PredicateModelAttributeName },
     88      //        new Entity[] { Ontology.AnyEntity })).Select(y =>
     89      //          new {
     90      //            Model = x.Subject,
     91      //            Attribute = (Entity)x.Property,
     92      //            AttributeName = (Literal)y.Property
     93      //          }))
     94      //   .SelectMany(x =>
     95      //     store.Select(
     96      //       new Statement(x.Attribute, Ontology.PredicateModelAttributeValue, Ontology.AnyEntity))
     97      //       .Select(y =>
     98      //         new {
     99      //           Model = x.Model.Uri,
     100      //           AttributeName = x.AttributeName.Value,
     101      //           AttributeValue = ((Literal)y.Property).Value
     102      //         })).GroupBy(x => x.Model);
    106103
    107       Random random = new Random();
     104      entries = new List<ResultsEntry>();
     105      foreach (var model in models) {
     106        var attributes = store.Select(new Statement((Entity)model.Property, Ontology.PredicateModelAttribute, Ontology.AnyEntity));
     107
     108        foreach (var attr in attributes) {
     109          var namesAndValues = store
     110            .Select(new SelectFilter(new Entity[] { (Entity)attr.Property },
     111              new Entity[] { Ontology.PredicateModelAttributeName, Ontology.PredicateModelAttributeValue },
     112              new Entity[] { Ontology.AnyEntity }));
     113        }
     114      }
     115
    108116      foreach (var row in results) {
    109117        ResultsEntry entry = new ResultsEntry(row.First().Model);
     
    111119          entry.Set((string)attr.AttributeName, attr.AttributeValue);
    112120        }
     121        entries.Add(entry);
    113122        yield return entry;
    114123      }
     124
     125      FireChanged();
     126      cached = true;
    115127    }
    116128
     
    120132      var attributeNames =
    121133        store.Select(new Statement(Ontology.AnyEntity, Ontology.PredicateModelAttributeName, Ontology.AnyEntity))
    122         .Select(s => (string)((Literal)s.Property).Value)
     134        .Select(s => (string)((Literal)s.Property).Value)       
    123135        .Distinct();
    124136      foreach (var name in attributeNames) {
Note: See TracChangeset for help on using the changeset viewer.