Chronozoom.Entities.Storage.GetIncomingTriplets C# (CSharp) Метод

GetIncomingTriplets() публичный Метод

Build list of triples that reference specified object
public GetIncomingTriplets ( string predicate, string obj ) : List
predicate string Optional predicate name
obj string Object full name
Результат List
        public List<Triple> GetIncomingTriplets(string predicate, string obj)
        {
            var objectName = EnsurePrefix(TripleName.Parse(obj)).ToString();
            IQueryable<Triple> triples;
            if (!String.IsNullOrEmpty(predicate))
            {
                var predicateName = EnsurePrefix(TripleName.Parse(predicate)).ToString();
                triples = Triples.Where(t => t.Predicate == predicateName);
            }
            else
                // Not very efficient as it enumerates entire database
                triples = Triples;

            return triples.
                Include(o => o.Objects). // Include Objects collection
                Where(t => t.Objects.Any(o => o.Object == objectName)).
                ToArray(). // Stop LINQ to SQL and use simple collection transformations
                Select(t => new Triple {
                    Subject = t.Subject,
                    Predicate = t.Predicate,
                    Objects = new Collection<TripleObject>(t.Objects.Where(o => o.Object == objectName).ToArray())
                }).ToList();
        }

Usage Example

Пример #1
0
 public IEnumerable<Entities.Triple> GetTriplets(string subject, string predicate, string @object)
 {
     try
     {
         using (var storage = new Storage())
             return subject == null?
                 storage.GetIncomingTriplets(predicate,@object) :
                 storage.GetTriplet(
                     HttpUtility.UrlDecode(subject),
                     predicate == null ? null : HttpUtility.UrlDecode(predicate),
                     @object == null ? null : HttpUtility.UrlDecode(@object));
     }
     catch (ArgumentException exc)
     {
         SetStatusCode(HttpStatusCode.BadRequest, exc.Message);
         return null;
     }
 }