protected KifConjunction processingParentsXXX(DataFrame frame)
        {
            KifSequence <KifSentence> conjs = new KifSequence <KifSentence>();
            IList isA = frame.isA;

            if (isA.Count == 0)
            {
                isA = new ArrayList();
                isA.Add("Thing"); //TODO:
            }
            foreach (string parentName in isA)
            {
                conjs.addItem(
                    new KifRelationalSentence(new KifConstant(parentName),
                                              new KifConcreteTerm <KifIndividualVariable>(new KifIndividualVariable("X"))));
            }
            foreach (Slot slot in frame.ownSlots.Values)
            {
                if (!"".Equals(slot.slotValue))
                {
                    conjs.addItem(
                        new KifRelationalSentence(new KifConstant(slot.iden),
                                                  new KifConcreteTerm <KifConstant>(new KifConstant(slot.slotValue))));
                }
            }
            return(new KifConjunction(conjs));
        }
        public override IList <IModelItem> getChildren()
        {
            KifSequence <KifObject> sequence = new KifSequence <KifObject>(new KifConstant(Name));

            sequence.addItem(DELIMITER);
            sequence.addItem(Sentence);
            return(sequence.getChildren());
        }
예제 #3
0
        protected KifRelationalSentence createTrRelation(string relName, string firstArg, string secondArg, string thirdArg)  //TODO
        {
            KifSequence <KifTerm> terms = new KifSequence <KifTerm>(new KifConstant(firstArg));

            terms.addItem(new KifConstant(secondArg));
            terms.addItem(new KifConstant(thirdArg));
            return(new KifRelationalSentence(new KifConstant(relName), terms));
        }
예제 #4
0
        protected KifObject createSlotOfInstance(string frameName, Slot slot, KifSequence <KifSentence> slotsValues)
        {
            string slotIden = generateSlotIdentifier(frameName, slot.iden);
            KifSequence <KifSentence> sequence = new KifSequence <KifSentence>(createDocumentation(generateSlotComment(isOwnSlot(slot), slot.iden, frameName), frameName));

            sequence.addItem(createBinRelation(RANGE, slotIden, _resolver.resolveType(slot.slotType)));
            sequence.addItem(createBinRelation(DOMAIN, slotIden, frameName));
            sequence.addItem(createArity(slotIden, 2));
            sequence.addItem(createUnRelation(RELATION, slotIden));
            sequence.addItem(createUnRelation(BINARY_RELATION, slotIden));

            return(new KifRelationDefinition(slotIden, sequence));
        }
예제 #5
0
        public void createClassFrame(DataFrame frame)  //TODO: order
        {
            string frameName = frame.iden;
            KifSequence <KifSentence> sequence = new KifSequence <KifSentence>(createDocumentation(generateFrameComment(true, frameName), frameName));

            sequence.addRange(processingParentsXXX(frame));
            sequence.addItem(createArity(frameName, 1));
            sequence.addItem(createUnRelation(CLASS, frameName));
            IList <KifObject>     slots    = createSlots(frame, sequence);
            KifRelationDefinition relation = new KifRelationDefinition(frame.iden, sequence);

            _model.addObject(relation);
            _model.addRange(slots);
        }
예제 #6
0
        protected KifRelationalSentence createDocumentation(string docString, string docOwner)
        {
            KifSequence <KifTerm> terms = new KifSequence <KifTerm>(new KifConstant(docOwner));

            terms.addItem(new KifString(docString));
            return(new KifRelationalSentence(new KifConstant(DOCUMENTATION), terms));
        }
예제 #7
0
        protected KifSequence <KifSentence> processingParentsOfInstance(DataFrame frame)
        {
            KifSequence <KifSentence> parents = new KifSequence <KifSentence>();
            string frameName = frame.iden;
            IList  isA       = frame.isA;

            if (isA.Count == 0)
            {
                parents.addItem(createUnRelation(THING, frameName));
            }
            else
            {
                foreach (string parentName in isA)
                {
                    parents.addItem(createUnRelation(parentName, frameName));
                }
            }
            return(parents);
        }
예제 #8
0
        protected KifSequence <KifSentence> processingParentsXXX(DataFrame frame)
        {
            KifSequence <KifSentence> parents = new KifSequence <KifSentence>();
            string frameName = frame.iden;
            IList  isA       = frame.isA;

            if (isA.Count == 0)
            {
                parents.addItem(createSubclassOf(frameName, THING));
            }
            else
            {
                foreach (string parentName in isA)
                {
                    parents.addItem(createSubclassOf(frameName, parentName));
                }
            }
            return(parents);
        }
예제 #9
0
        protected KifObject createSlot(string frameName, Slot slot, KifSequence <KifSentence> slotsValues)
        {
            string slotIden = generateSlotIdentifier(frameName, slot.iden);
            KifSequence <KifSentence> sequence = new KifSequence <KifSentence>(createDocumentation(generateSlotComment(isOwnSlot(slot), slot.iden, frameName), frameName));

            sequence.addItem(createBinRelation(RANGE, slotIden, _resolver.resolveType(slot.slotType)));
            sequence.addItem(createBinRelation(DOMAIN, slotIden, frameName));
            sequence.addItem(createArity(slotIden, 2));
            sequence.addItem(createUnRelation(RELATION, slotIden));
            sequence.addItem(createUnRelation(BINARY_RELATION, slotIden));

//            bool isString = StringUtils.equalsIgnoreCase(slot.slotType, "string");
//            if (slot.slotValue != null && (!"".Equals(slot.slotValue) && isString))
//                slotsValues.addItem(createTrRelation(TEMPLATE_SLOT_VALUE, slotIden, frameName, slot.slotValue));
            if (!StringUtils.isEmpty(slot.slotValue))
            {
                slotsValues.addItem(createTrRelation(TEMPLATE_SLOT_VALUE, slotIden, frameName, slot.slotValue));
            }

            return(new KifRelationDefinition(slotIden, sequence));
        }
        protected void createSlot(string frameName, Slot slot)
        {
            KifIndividualVariable frameVar = new KifIndividualVariable("Frame");
            KifIndividualVariable valueVar = new KifIndividualVariable("Value");

            KifSequence <KifIndividualVariable> args = new KifSequence <KifIndividualVariable>(frameVar);

            args.addItem(valueVar);
            OntolinguaDefineRelation  relation = new OntolinguaDefineRelation(slot.iden, null, args);
            KifSequence <KifSentence> conjs    = new KifSequence <KifSentence>();

            conjs.addItem(
                new KifRelationalSentence(new KifConstant(frameName),
                                          new KifConcreteTerm <KifIndividualVariable>(frameVar)));
            conjs.addItem(
                new KifRelationalSentence(new KifConstant(slot.slotType),
                                          new KifConcreteTerm <KifIndividualVariable>(valueVar)));


            relation.DefSentence = new KifConjunction(conjs);
            _model.addObject(relation);
        }
예제 #11
0
        protected IList <KifObject> createOwnSlotsOfInstance(DataFrame frame, KifSequence <KifSentence> slotsValues)
        {
            List <KifObject> result = new List <KifObject>(frame.ownSlots.Count);

            foreach (Slot slot in frame.ownSlots.Values)
            {
                string owner = _director.getSlotOwner(slot.iden, frame);
                if (frame.iden.Equals(owner))
                {
                    result.Add(createSlotOfInstance(frame.iden, slot, slotsValues));
                }
                if (!StringUtils.isEmpty(slot.slotValue))
                {
                    slotsValues.addItem(createBinRelation(generateSlotIdentifier(owner, slot.iden), frame.iden, slot.slotValue));
                }
            }
            return(result);
        }
예제 #12
0
        protected IList <KifObject> createOwnSlots(DataFrame frame, KifSequence <KifSentence> slotsValues)
        {
            List <KifObject> result = new List <KifObject>(frame.ownSlots.Count);

            foreach (Slot slot in frame.ownSlots.Values)
            {
                string owner = _director.getSlotOwner(slot.iden, frame);
                if (frame.iden.Equals(owner))
                {
                    result.Add(createSlot(frame.iden, slot, slotsValues));
                }
                else
                {
                    if (slot.slotValue != null)
                    {
                        slotsValues.addItem(createTrRelation(TEMPLATE_SLOT_VALUE, generateSlotIdentifier(owner, slot.iden), frame.iden, slot.slotValue));
                    }
                }
            }
            return(result);
        }