/// <summary> /// Gets a list of key value pairs listing Similar Individuals and their Similarity scores /// </summary> /// <param name="number">Number of Similar Individuals</param> /// <param name="individual">QName of a Individual to find Similar Individuals to</param> /// <param name="callback">Callback to invoke when the operation completes</param> /// <param name="state">State to pass to the callback</param> public void Similarity(int number, String individual, PelletSimilarityServiceCallback callback, Object state) { this.SimilarityRaw(number, individual, (g, _) => { List <KeyValuePair <INode, double> > similarities = new List <KeyValuePair <INode, double> >(); SparqlParameterizedString query = new SparqlParameterizedString(); query.Namespaces = g.NamespaceMap; query.CommandText = "SELECT ?ind ?similarity WHERE { ?s cp:isSimilarTo ?ind ; cp:similarityValue ?similarity }"; Object results = g.ExecuteQuery(query); if (results is SparqlResultSet) { foreach (SparqlResult r in (SparqlResultSet)results) { if (r["similarity"].NodeType == NodeType.Literal) { similarities.Add(new KeyValuePair <INode, double>(r["ind"], Convert.ToDouble(((ILiteralNode)r["similarity"]).Value))); } } callback(similarities, state); } else { throw new RdfReasoningException("Unable to extract the Similarity Information from the Similarity Graph returned by Pellet Server"); } }, null); }
/// <summary> /// Gets a list of key value pairs listing Similar Individuals and their Similarity scores /// </summary> /// <param name="number">Number of Similar Individuals</param> /// <param name="individual">QName of a Individual to find Similar Individuals to</param> /// <param name="callback">Callback to invoke when the operation completes</param> /// <param name="state">State to pass to the callback</param> public void Similarity(int number, String individual, PelletSimilarityServiceCallback callback, Object state) { this.SimilarityRaw(number, individual, (g, _) => { List<KeyValuePair<INode, double>> similarities = new List<KeyValuePair<INode, double>>(); SparqlParameterizedString query = new SparqlParameterizedString(); query.Namespaces = g.NamespaceMap; query.CommandText = "SELECT ?ind ?similarity WHERE { ?s cp:isSimilarTo ?ind ; cp:similarityValue ?similarity }"; Object results = g.ExecuteQuery(query); if (results is SparqlResultSet) { foreach (SparqlResult r in (SparqlResultSet)results) { if (r["similarity"].NodeType == NodeType.Literal) { similarities.Add(new KeyValuePair<INode, double>(r["ind"], Convert.ToDouble(((ILiteralNode)r["similarity"]).Value))); } } callback(similarities, state); } else { throw new RdfReasoningException("Unable to extract the Similarity Information from the Similarity Graph returned by Pellet Server"); } }, null); }