Not going near the multilingual problem yet, I suggest this for an API - getConcept(URI uri) getConcept(Literal descriptor, URI thesaurus) getConcept(Literal externalID, URI thesaurus) --> Returns a single 'Concept' datastructure. The Concept datastructure includes all literal properties, so all labels, external ID and scope notes. matchConcepts(String regularExpression) matchConcepts(String regexp, URI thesaurus) --> Returns a list of possible concepts, ordered according to likelihood of match getSupportedSemanticRelations() getSupportedSemanticRelations(URI thesaurus) --> Return a list of supported semantic relations (e.g. broader, narrower, is-a, etc.), each with a unique uri and a description of their meaning. getConceptRelatives(URI conceptURI, SemanticRelation rel) getConceptRelatives(Literal descriptor, URI thesaurus, SemanticRelation rel) getConceptRelatives(Literal externalID, URI thesaurus, SemanticRelation rel) --> Returns the concepts which are relatives of concept specified, according to the given semantic relation getConceptRelatives(URI conceptURI) getConceptRelatives(Literal descriptor, URI thesaurus) getConceptRelatives(Literal externalID, URI thesaurus) --> returns all concepts that are relatives of concept specified