using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; using System.Xml.Linq; namespace Cuahsi.His.Ontology { /// <summary> /// Ontology Services API. /// <para>This defined the interface over the datasource that holds the ontology; /// eg. OwlRDF, database tables, or excel files. </para> /// <para>The interface to query the variable information is in the IHisOntologyService</para> /// </summary> [ServiceContract(Namespace = "uri:cuahsi.his.ontology.200906")] public interface IOntologyQueryService { //[OperationContract] //void InitializeComponent(); [OperationContract] XDocument GetConceptsTree( String vocabularyUrI ); [OperationContract] XDocument GetSearchableConceptsAsXml( String vocabularyUrI ); [OperationContract] string[] GetSearchableConceptsAsStrings( String vocabularyUrI ); [OperationContract] string GetOntologyConceptCode(string keyword, String vocabularyUrI ); [OperationContract] string GetOntologyKeyword(string conceptCode, String vocabularyUrI ); [OperationContract] XDocument GetRelevantConceptsAndVariablesXml(String keyword, String vocabularyUrI ); } /// <summary> /// This extends the Onotology Services API with an additional call to handle AJAX query. /// </summary> /// <seealso cref="IOntologyQueryService"/> [ServiceContract(Namespace = "uri:cuahsi.his.ontology.ajax.200906")] public interface IOntologyQueryServiceExtended : IOntologyQueryService { [OperationContract] string[] GetWordList(string prefixText, int count); /// <summary> /// This is intended to allow for fuzzy matching of the terms in the concept tree /// </summary> /// <param name="term"></param> /// <param name="exactMatch"></param> /// <returns></returns> [OperationContract] XDocument GetOntologyKeywords(string term, Boolean exactMatch, String vocabularyUrI ); } }
namespace Cuahsi.His.Ontology { public interface IHisOntologyService { # region intialize IOntologyQueryService OntologyQueryService { get; set; } #endregion #region what codes are used /// <summary> /// Returns the concept codes that are used in this datasource /// </summary> /// <returns></returns> [OperationContract] string[] GetDataSourceConceptCodes(string DataSourceCode); /// <summary> /// This will return a list of concepts from the input conceptCode. /// This should be a heirachical format that can be used in a user interface. /// </summary> /// <param name="conceptCode"></param> /// <returns></returns> XDocument GetConceptTree(string conceptCode); /// <summary> /// Returns the labels/names of concepts that are contained in this datasource. /// </summary> /// <returns></returns> [OperationContract] string[] GetSearchableConcepts(); #endregion #region return mappings /// <summary> /// Returns the terms which will return results from GetDataSourceMappedVariables /// <para> This will include the concepts, and depending on how a datasource has implemented /// the service, it may include the variable names</para> /// </summary> /// <returns></returns> [OperationContract] string[] GetSearchableTerms(); // should this be WaterML variable? [OperationContract] XDocument GetDataSourceMappedVariables(string DataSourceCode); #endregion } }