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

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

Get triple by specified parameters.
public GetTriplet ( string subject, string predicate = null, string obj = null, bool expandPrefixes = false ) : List
subject string Subject name with prefix
predicate string Predicate name with prefix or null
obj string Object name with prefix or null
expandPrefixes bool If 'True' returns namespaces, else - prefixes.
Результат List
        public List<Triple> GetTriplet(string subject, string predicate = null, string obj = null, bool expandPrefixes = false)
        {
            if(subject == null)
                throw new ArgumentNullException("subject");
            var subjectName = EnsurePrefix(TripleName.Parse(subject));
            string subjectStr = subjectName.ToString();

            IQueryable<Triple> triples;
            if(predicate != null)
            {
                var predicateName = EnsurePrefix(TripleName.Parse(predicate));
                var predicateStr = predicateName.ToString();
                if (obj != null)
                {
                    var objectName = EnsurePrefix(TripleName.Parse(obj));
                    var objectStr = objectName.ToString();
                    triples = Triples.Where(t => t.Subject == subjectStr && t.Predicate == predicateStr).Include(o => o.Objects).Where(t => t.Objects.FirstOrDefault(x => x.Object == objectStr) != null);
                }
                else
                    triples = Triples.Where(t => t.Subject == subjectStr && t.Predicate == predicateStr).Include(o => o.Objects);
            }
            else
                triples = Triples.Where(t => t.Subject == subjectStr).Include(o => o.Objects);

            if (expandPrefixes)
            {
                //ToDo:Use Join
                triples.ToList().ForEach(x =>
                {
                    x.Subject = TryEnsureNamespace(TripleName.Parse(x.Subject)).ToExpandedString();
                    x.Predicate = TryEnsureNamespace(TripleName.Parse(x.Predicate)).ToExpandedString();
                    foreach (var o in x.Objects)
                        o.Object = TryEnsureNamespace(TripleName.Parse(o.Object)).ToExpandedString();
                });
            }

            return triples.ToList();
        }

Usage Example

Пример #1
0
 public IEnumerable<Entities.Triple> GetTriplets(string subject, string predicate, string @object)
 {
     try
     {
         using (var storage = new Storage())
             return 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;
     }
 }