// P is an n × n predicate similarity matrix, n is the number of predicates in ontologies

// δ is the threshold of silhouette width

Input: P, δ

// a hierarchy with a set of clusters the jth cluster at ith level

Output:

1. i=1

2. repeat

3. // n is the number of input predicates, m is the number of predicates of cluster j at level i,

4. // optimal k () from m predicates of the cluster at level i () using function

5. //compute Neighborhood silhouette width

6. k = Optimal K() //fine the optimal k based on

7.

8. If (k > 1) then

9.

10. for j = 1 to k

11. (// random mean for predicates in (cluster j at level i)

12. end

13. for each do

14. //wij is the degree, m is the fuzzifier

15. end

16.

17. sw = 0

18. repeat

19. for each do

20. Update Cluster()

21. end

22. for each do

23.

24. if then

25.

26.

27.

28. end if

29. = Silhouette Width () //computesil houette width

30. while

31. while and