krssconverter.java
来自「Semantic Web Ontology Editor」· Java 代码 · 共 902 行 · 第 1/4 页
JAVA
902 行
// kb.addObjectProperty(r);
this.addEntity(ontology, new URI(r.getName()), OBJECT_PROP);
if(str.equalsIgnoreCase("DEFINE-PRIMITIVE-ATTRIBUTE")
|| str.equalsIgnoreCase("DEFPRIMATTRIBUTE")) {
// kb.addFunctionalProperty(r);
this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, FUNC, true);
if(DEBUG) System.out.println("DEFINE-PRIMITIVE-ATTRIBUTE " + r);
}
else if(DEBUG)
System.out.println("DEFINE-PRIMITIVE-ROLE " + r);
while(!peekToken(in, ')')) {
if(peekToken(in, ':')) {
parseToken(in, ':');
String cmd = getToken(in);
if(cmd.equalsIgnoreCase("parents")) {
boolean paren = peekToken(in, '(');
if(paren) {
parseToken(in, '(');
while(!peekToken(in, ')')) {
ATermAppl s = getTerm(in);
if(!s.getName().equals("NIL")) {
// kb.addObjectProperty(s);
this.addEntity(ontology, new URI(s.getName()), OBJECT_PROP);
// kb.addSubProperty(r, s);
List args = new ArrayList();
args.add(r.getName());
args.add(s.getName());
this.addAxiom(ontology, SUB_OPROP, args);
if(DEBUG) System.out.println("PARENT-ROLE " + r + " " + s);
}
}
parseToken(in, ')');
}
else {
ATermAppl s = getTerm(in);
if(!s.toString().equalsIgnoreCase("NIL")) {
// kb.addObjectProperty(s);
this.addEntity(ontology, new URI(s.getName()), OBJECT_PROP);
// kb.addSubProperty(r, s);
List args = new ArrayList();
args.add(r.getName());
args.add(s.getName());
this.addAxiom(ontology, SUB_OPROP, args);
if(DEBUG) System.out.println("PARENT-ROLE " + r + " " + s);
}
}
}
else if(cmd.equalsIgnoreCase("transitive")) {
assertTrue(getToken(in).equalsIgnoreCase("T"));
// kb.addTransitiveProperty(r);
this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, TRANS, true);
if(DEBUG) System.out.println("TRANSITIVE-ROLE " + r);
}
else if(cmd.equalsIgnoreCase("range")) {
OWLDescription range = parseExpr(in, ontology);
// kb.addClass(range);
// kb.addRange(r, range);
List args = new ArrayList();
args.add(r.getName());
args.add(range);
this.addAxiom(ontology, OBJ_RANGE, args);
if(DEBUG) System.out.println("RANGE " + r + " " + range );
}
else if(cmd.equalsIgnoreCase("domain")) {
OWLDescription domain = parseExpr(in, ontology);
// kb.addClass(domain);
// kb.addDomain(r, domain);
List args = new ArrayList();
args.add(r.getName());
args.add(domain);
this.addAxiom(ontology, OBJ_DOMAIN, args);
if(DEBUG) System.out.println("DOMAIN " + r + " " + domain );
}
else if(cmd.equalsIgnoreCase("inverse")) {
ATermAppl inv = getTerm(in);
// kb.addInverseProperty(r, inv);
this.addEntity(ontology, new URI(inv.getName()), OBJECT_PROP);
List args = new ArrayList();
args.add(r.getName());
args.add(inv.getName());
this.addAxiom(ontology, INV_PROP, args);
if(DEBUG) System.out.println("INVERSE " + r + " " + inv );
}
else
throw new RuntimeException("Invalid role spec " + cmd);
}
else if(peekToken(in, '(')) {
parseToken(in, '(');
String cmd = getToken(in);
if(cmd.equalsIgnoreCase("domain-range")) {
ATermAppl domain = getTerm(in);
ATermAppl range = getTerm(in);
// add atomic domain and range
List args = new ArrayList();
args.add(r);
args.add(ontology.getClass(new URI(domain.getName())));
// kb.addDomain(r, domain);
this.addAxiom(ontology, OBJ_DOMAIN, args);
args.remove(1);
args.add(ontology.getClass(new URI(range.getName())));
// kb.addRange(r, range);
this.addAxiom(ontology, OBJ_RANGE, args);
if(DEBUG) System.out.println("DOMAIN-RANGE " + r + " " + domain + " " + range);
}
else
throw new RuntimeException("Invalid role spec");
parseToken(in, ')');
}
}
}
else if(str.equalsIgnoreCase("DEFINE-PRIMITIVE-CONCEPT")
|| str.equalsIgnoreCase("DEFPRIMCONCEPT")) {
ATermAppl c = getTerm(in);
// kb.addClass(c);
OWLClass cls = (OWLClass) this.addEntity(ontology, new URI(c.getName()), CLASS);
if(!peekToken(in, ')')) {
OWLDescription desc = parseExpr(in, ontology);
if(desc!=null) {
// kb.addClass(expr);
// kb.addSubClass(c, expr);
List args = new ArrayList();
args.add(cls);
args.add(desc);
this.addAxiom(ontology, SUB_CLASS, args);
}
if(DEBUG) System.out.println("DEFINE-PRIMITIVE-CONCEPT " + c + " " + desc);
}
}
else if(str.equalsIgnoreCase("DEFINE-DISJOINT-PRIMITIVE-CONCEPT")) {
ATermAppl c = getTerm(in);
// kb.addClass(c);
OWLClass cls = (OWLClass) this.addEntity(ontology, new URI(c.getName()), CLASS);
parseToken(in, '(');
while(!peekToken(in, ')')) {
OWLDescription desc = parseExpr(in, ontology);
List prevDefinitions = (List) disjoints.get( desc );
if( prevDefinitions == null )
prevDefinitions = new ArrayList();
for(Iterator i = prevDefinitions.iterator(); i.hasNext();) {
OWLClass other = (OWLClass) i.next();
addAxiom( ontology, DISJ_CLASS, Arrays.asList(new OWLClass[] {cls,other}) );
if(DEBUG) System.out.println("DEFINE-PRIMITIVE-DISJOINT " + c + " " + other);
}
prevDefinitions.add( cls );
}
parseToken(in, ')');
OWLDescription desc = parseExpr(in, ontology);
// kb.addSubClass(c, expr);
List args = new ArrayList();
args.add(cls);
args.add(desc);
this.addAxiom(ontology, SUB_CLASS, args);
// if(DEBUG) System.out.println("DEFINE-DISJOINT-PRIMITIVE-CONCEPT " + c + " " + expr);
}
else if(str.equalsIgnoreCase("DEFINE-CONCEPT")
|| str.equalsIgnoreCase("DEFCONCEPT")) {
ATermAppl c = getTerm(in);
// kb.addClass(c);
this.addEntity(ontology, new URI(c.getName()), CLASS);
OWLDescription desc = parseExpr(in, ontology);
// kb.addSameClass(c, expr);
List args = new ArrayList();
args.add(ontology.getClass(new URI(c.getName())));
args.add(desc);
this.addAxiom(ontology, SAME_CLASS, args);
// if(DEBUG) System.out.println("DEFINE-CONCEPT " + c + " " + expr);
}
else if(str.equalsIgnoreCase("IMPLIES") || str.equalsIgnoreCase("implies_c")) {
OWLDescription c1 = parseExpr(in, ontology);
OWLDescription c2 = parseExpr(in, ontology);
// kb.addClass(c1);
// kb.addClass(c2);
// kb.addSubClass(c1, c2);
List args = new ArrayList();
args.add(c1);
args.add(c2);
this.addAxiom(ontology, SUB_CLASS, args);
if(DEBUG) System.out.println("IMPLIES " + c1 + " " + c2);
}
else if(str.equalsIgnoreCase("equal_c")) {
OWLDescription c1 = parseExpr(in, ontology);
OWLDescription c2 = parseExpr(in, ontology);
// kb.addClass(c1);
// kb.addClass(c2);
// kb.addSubClass(c1, c2);
List args = new ArrayList();
args.add(c1);
args.add(c2);
this.addAxiom(ontology, SAME_CLASS, args);
if(DEBUG) System.out.println("SAME Class " + c1 + " " + c2);
}
else if(str.equalsIgnoreCase("implies_r")) {
List args = new ArrayList();
ATermAppl s1 = getTerm(in);
this.addEntity(ontology, new URI(s1.getName()), OBJECT_PROP);
args.add(s1.getName());
ATermAppl s2 = getTerm(in);
this.addEntity(ontology, new URI(s2.getName()), OBJECT_PROP);
args.add(s2.getName());
this.addAxiom(ontology, SUB_OPROP, args);
}
else if(str.equalsIgnoreCase("functional")){
ATermAppl r = getTerm(in);
this.addEntity(ontology, new URI(r.getName()), OBJECT_PROP);
this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, FUNC, true);
}
else if(str.equalsIgnoreCase("transitive")){
ATermAppl r = getTerm(in);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?