001package org.dllearner.algorithms.isle.metrics;
002
003import org.dllearner.algorithms.isle.index.Index;
004import org.semanticweb.owlapi.model.OWLEntity;
005
006/**
007 * @author Andre Melo
008 *
009 */
010public class JaccardRelevanceMetric extends AbstractRelevanceMetric{
011
012        public JaccardRelevanceMetric(Index index) {
013                super(index);
014        }
015
016        @Override
017        public double getRelevance(OWLEntity entityA, OWLEntity entityB) {
018                long nrOfDocumentsA = index.getNumberOfDocumentsFor(entityA);
019                long nrOfDocumentsB = index.getNumberOfDocumentsFor(entityB);
020                
021                if (nrOfDocumentsA==0 || nrOfDocumentsB==0)
022                        return 0;
023                
024                double nrOfDocumentsAandB = index.getNumberOfDocumentsFor(entityA, entityB);
025                double nrOfDocumentsAorB = nrOfDocumentsA + nrOfDocumentsB - nrOfDocumentsAandB;
026                
027                double jaccard = nrOfDocumentsAandB / nrOfDocumentsAorB;
028                
029                return jaccard;
030        }
031
032        @Override
033        public double getNormalizedRelevance(OWLEntity entity1, OWLEntity entity2) {
034                return getRelevance(entity1, entity2);
035        }
036
037
038}