예제 #1
0
        public static string Rank(this Uri uri, Uri endPointUri)
        {
            var endpoint = new SparqlRemoteEndpoint(endPointUri);
            var querySb  = new StringBuilder();

            querySb.AppendLine(Prefixes.GetSparqlPrefix("rdfs"));
            querySb.AppendLine($"select ?rank");
            querySb.AppendLine($"where {{");
            querySb.AppendLine($"  <{uri}> <http://purl.obolibrary.org/obo/ncbitaxon#has_rank> ?r .");
            querySb.AppendLine($"  ?r rdfs:label ?rank .");
            querySb.AppendLine($"}}");
            var results = endpoint.QueryWithResultSet(querySb.ToString());

            if (results.Count != 1)
            {
                throw new Exception("Unexpected results.");
            }

            results[0].TryGetValue("rank", out var node);
            if (!(node is LiteralNode literalNode))
            {
                throw new Exception("Unexpected results.");
            }
            return(literalNode.Value);
        }
예제 #2
0
 public static List<KeyValuePair<Uri, string>> StaticSearch(string word, Uri endPointUri)
 {
     var endpoint = new SparqlRemoteEndpoint(endPointUri);
     var querySb = new StringBuilder();
     querySb.AppendLine(Prefixes.GetSparqlPrefix("rdfs"));
     querySb.AppendLine($"select ?subject");
     querySb.AppendLine($"where {{");
     querySb.AppendLine($"    ?subject rdfs:label \"{word.Replace("\r", "").Replace("\n", "")}\"");
     querySb.AppendLine($"}}");
     var query = querySb.ToString();
     var results = endpoint.QueryWithResultSet(query);
     var list = new List<KeyValuePair<Uri, string>>();
     foreach (var result in results)
     {
         if (result.TryGetValue<UriNode>("subject", out var subjectNode))
         {
             list.Add(new KeyValuePair<Uri, string>(subjectNode.Uri, word));
         }
     }
     return list;
 }
예제 #3
0
 /// <summary>
 /// Searches for nodes that have an rdfs:label containing a given string.
 /// </summary>
 /// <param name="word">The string the label has to contain.</param>
 /// <param name="endPointUri">The SPARQL end-point.</param>
 /// <returns></returns>
 public static List<KeyValuePair<Uri, string>> ContainsSearch(string word, Uri endPointUri)
 {
     var endpoint = new SparqlRemoteEndpoint(endPointUri);
     var querySb = new StringBuilder();
     querySb.AppendLine(Prefixes.GetSparqlPrefix("rdfs"));
     querySb.AppendLine($"select ?subject ?label");
     querySb.AppendLine($"where {{");
     querySb.AppendLine($"    ?subject rdfs:label ?label");
     querySb.AppendLine($"    filter contains(lcase(str(?label)), '{word.ToLower()}')");
     querySb.AppendLine($"}}");
     var results = endpoint.QueryWithResultSet(querySb.ToString());
     var list = new List<KeyValuePair<Uri, string>>();
     foreach (var result in results)
     {
         if (result.TryGetValue<UriNode>("subject", out var subjectNode) &&
             result.TryGetValue<LiteralNode>("label", out var labelNode))
         {
             list.Add(new KeyValuePair<Uri, string>(subjectNode.Uri, labelNode.Value));
         }
     }
     return list;
 }