📄 relationmaxcardinality.java
字号:
package toocom.ocgl;
import java.util.*;
import java.awt.Graphics;
/**
* This class represents the maximum cardinality of a relation type.
*
* @author Fr閐閞ic F黵st
*/
public class RelationMaxCardinality extends AxiomSchemaOne{
private int index;
private int value;
public RelationMaxCardinality(RelationType rt, int index, int value){
super(CGConstants.getRelationMaxCardinalityTerms(),rt);
this.index = index;
this.value = value;
}
public int getIndex(){
return this.index;
}
public int getValue(){
return this.value;
}
/** Returns the value of the (first encountered) max cardinality of prim at the index i. Returns -1
* if prim has any max cardinality for this index. */
public static int getMaxCardinality(ConceptualPrimitive prim,int i){
for(Iterator j = prim.getAxiomSchemata("toocom.ocgl.RelationMaxCardinality").iterator();j.hasNext();){
RelationMaxCardinality maxCard = (RelationMaxCardinality) j.next();
if(maxCard.getIndex() == i) return maxCard.getValue();
}
return -1;
}
/** A primitive can support a maximum cardinality if it is a relation. */
public boolean isValid(){
return (super.cp instanceof RelationType);
}
public LinkedList getOperationalForm(Ontology onto,Language l){
return new LinkedList();
}
public Axiom getAxiomForm(){
Axiom axiom = new Axiom(CGConstants.getRelationMaxCardinalityTerms());
axiom.getTerms().appendWithSeparator(((RelationType) super.cp).getTerms()," - ");
Concept c = new Concept(((RelationType) super.cp).getSignature().getConceptType(this.index));
axiom.addHypothesisConcept(c);
for(int cpt = 1;cpt <= this.value;cpt ++){
Relation r = new Relation(((RelationType) super.cp));
r.setLinkedConcept(c,this.index);
axiom.addHypothesisRelation(r);
for(int cptBis = 1;cptBis <= ((RelationType) super.cp).getArity();cptBis ++){
if(cptBis != this.index){
Concept con = new Concept(((RelationType) super.cp).getSignature().getConceptType(cptBis));
r.setLinkedConcept(con,cptBis);
axiom.addHypothesisConcept(con);
}
}
}
Relation r = new Relation(((RelationType) super.cp));
r.setTerms(r.getTerms().denyTerms());
r.setLinkedConcept(c,this.index);
axiom.addConclusionRelation(r);
for(int cptBis = 1;cptBis <= ((RelationType) super.cp).getArity();cptBis ++){
if(cptBis != index){
Concept con = new Concept(((RelationType) super.cp).getSignature().getConceptType(cptBis));
r.setLinkedConcept(con,cptBis);
axiom.addHypothesisConcept(con);
}
}
return axiom;
}
public void paint(Graphics g,Language l){
g.setColor(CGConstants.MAX_CARDINALITY_COLOR);
g.drawString("C+",super.cp.x - (CGConstants.PROPERTY_SYMBOLS_SPACING * 12),super.cp.y - (CGConstants.PROPERTY_SYMBOLS_SPACING * 4));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -