Ontology matching system based on formal concept analysis.
Formal Concept Analysis (FCA) is a well developed mathematical model for clustering individuals and structuring concepts.
Formal concept analysis is based on mathematical order theory. (See the book for more details)
The following is an example of a formal context (about the characters of Marvel Cinematic Universe) and its derived concept lattice.
Asgardian |
Avenger |
Female |
Human |
Infinity Stones User |
Male |
Scientist |
Villain |
|
---|---|---|---|---|---|---|---|---|
Black Widow |
✖ | ✖ | ✖ | |||||
Captain America |
✖ | ✖ | ✖ | |||||
Hela |
✖ | ✖ | ✖ | |||||
Hulk |
✖ | ✖ | ✖ | ✖ | ✖ | |||
Iron Man |
✖ | ✖ | ✖ | ✖ | ✖ | |||
Thanos |
✖ | ✖ | ✖ | |||||
Thor |
✖ | ✖ | ✖ |
This concept lattice is derived from the above context, only reserved simplified extent and intent as follows.
See dependency graph.
I recommend IntelliJ IDEA for developing! :)
/****************************************
* *
* file:///src/main/java/Demo.java *
* *
****************************************/
import cn.ac.amss.semanticweb.alignment.Mapping;
import cn.ac.amss.semanticweb.model.ModelStorage;
import cn.ac.amss.semanticweb.matching.MatcherFactory;
import cn.ac.amss.semanticweb.matching.LexicalMatcher;
import cn.ac.amss.semanticweb.matching.StructuralMatcher;
import org.apache.jena.vocabulary.OWL;
import org.apache.jena.vocabulary.RDFS;
public class Demo
{
public static void main(String[] args) {
ModelStorage source = new ModelStorage("src/test/resources/oaei/conference/Conference.owl");
ModelStorage target = new ModelStorage("src/test/resources/oaei/conference/ekaw.owl");
/************************** Lexical-level Matching ***************************/
LexicalMatcher lm = MatcherFactory.createLexicalMatcher();
lm.setSourceTarget(source, target);
lm.setExtractType(true, true);
Mapping lexicalOntClassMappings = new Mapping();
lm.mapOntClasses(lexicalOntClassMappings);
System.out.println(lexicalOntClassMappings);
Mapping lexicalObjectPropertyMappings = new Mapping();
lm.mapObjectProperties(lexicalObjectPropertyMappings);
System.out.println(lexicalObjectPropertyMappings);
/************************* Structural-level Matching *************************/
StructuralMatcher sm = MatcherFactory.createStructuralMatcher();
sm.setSourceTarget(source, target);
sm.setExtractType(true, true);
sm.addCommonPredicate(RDFS.subClassOf);
sm.addCommonPredicate(OWL.disjointWith);
sm.addAllSubjectAnchors(lexicalOntClassMappings);
sm.addAllObjectAnchors(lexicalOntClassMappings);
Mapping structuralOntClassMappings = new Mapping();
sm.mapOntClasses(structuralOntClassMappings);
System.out.println(structuralOntClassMappings);
source.clear();
target.clear();
}
}
PRs accepted.
See [liweizhuo001/FCA-Map] (no longer maintained), which system is primarily developed by Mengyi Zhao.
- LogMap: An Ontology Alignment and Alignment Repair System [ernestojimenezruiz/logmap-matcher]
- AgrMaker: AgreementMaker Ontology Matching System [agreementmaker/agreementmaker]
- AML: AgreementMakerLight Eclipse Project [AgreementMakerLight/AML-Project]
This work has been supported by the National Key Research and Development Program of China under grant 2016YFB1000902, and the Natural Science Foundation of China grant 61621003.
-
Identifying mappings among knowledge graphs by formal concept analysis. Guowei Chen, Songmao Zhang. OM@ISWC 2019: 25-35. [technical paper] [slides]
-
FCAMap-KG results for OAEI 2019. Fei Chang, Guowei Chen, Songmao Zhang. OM@ISWC 2019: 138-145. [OAEI paper]
-
FCAMapX results for OAEI 2018. Guowei Chen, Songmao Zhang. OM@ISWC 2018: 160-166. [OAEI paper]
-
Matching biomedical ontologies based on formal concept analysis. Mengyi Zhao, Songmao Zhang, Weizhuo Li, Guowei Chen. J. Biomedical Semantics 9(1): 11:1-11:27 (2018). [publisher page]
-
Identifying and validating ontology mappings by formal concept analysis. Mengyi Zhao, Songmao Zhang. OM@ISWC 2016: 61-72. [technical paper]
-
FCA-Map results for OAEI 2016. Mengyi Zhao, Songmao Zhang. OM@ISWC 2016: 172-177. [OAEI paper]
GPLv3 © Guowei Chen