public void CreateObjectProperty(string id, string label, bool isFunctional = false, bool isInverseFunctional = false)
        {
            var schema       = GetSchema();
            var objPropClass = schema.FindClassByID(OwlConfig.ObjectPropertyClassID);

            var rdfTypeClass          = schema.FindClassByID(OwlConfig.RdfTypeClassID);
            var funcPropClass         = schema.FindClassByID(OwlConfig.FunctionalPropertyClassID);
            var invFuncPropClass      = schema.FindClassByID(OwlConfig.InverseFunctionalPropertyClassID);
            var objPropPropRdfTypeRel = objPropClass.FindRelationship(rdfTypeClass, schema.FindClassByID(OwlConfig.SuperClassID));

            var newObj = new ObjectContainer(objPropClass);

            newObj[OwlConfig.SuperIdPropertyID] = id;
            newObj[OwlConfig.LabelClassID]      = label;
            ObjectStorage.Insert(newObj);

            if (isFunctional)
            {
                ObjectStorage.AddRelation(new ObjectRelation(newObj.ID.Value, objPropPropRdfTypeRel, funcPropClass.CompactID));
            }
            if (isInverseFunctional)
            {
                ObjectStorage.AddRelation(new ObjectRelation(newObj.ID.Value, objPropPropRdfTypeRel, invFuncPropClass.CompactID));
            }

            Refresh();
        }
        public void CreateDatatypeProperty(string id, string label, PropertyDataType dataType, bool isFunctional = true)
        {
            var schema            = GetSchema();
            var datatypePropClass = schema.FindClassByID(OwlConfig.DatatypePropertyClassID);
            var rangeClass        = schema.FindClassByID(OwlConfig.RangeClassID);
            var rdfTypeClass      = schema.FindClassByID(OwlConfig.RdfTypeClassID);
            var funcPropClass     = schema.FindClassByID(OwlConfig.FunctionalPropertyClassID);

            var datatypePropRangeRel   = datatypePropClass.FindRelationship(rangeClass, schema.FindClassByID(OwlConfig.DatatypeClassID));
            var datatypePropRdfTypeRel = datatypePropClass.FindRelationship(rdfTypeClass, schema.FindClassByID(OwlConfig.SuperClassID));

            var dataTypeIds = ObjectStorage.GetObjectIds(new Query(OwlConfig.DatatypeClassID, (QField)OwlConfig.SuperIdPropertyID == new QConst(dataType.ID)));

            if (dataTypeIds.Length != 1)
            {
                throw new ArgumentException("Cannot locate object for datatype ID=" + dataType.ID);
            }

            var dtPropObj = new ObjectContainer(datatypePropClass);

            dtPropObj[OwlConfig.SuperIdPropertyID] = id;
            dtPropObj[OwlConfig.LabelClassID]      = label;
            ObjectStorage.Insert(dtPropObj);

            if (isFunctional)
            {
                ObjectStorage.AddRelation(new ObjectRelation(dtPropObj.ID.Value, datatypePropRdfTypeRel, funcPropClass.CompactID));
            }
            ObjectStorage.AddRelation(new ObjectRelation(dtPropObj.ID.Value, datatypePropRangeRel, dataTypeIds[0]));

            Refresh();
        }
        public void CreateClass(string id, string label)
        {
            var schema   = GetSchema();
            var owlClass = schema.FindClassByID(OwlConfig.ObjectClassID);

            var newObj = new ObjectContainer(owlClass);

            newObj[OwlConfig.SuperIdPropertyID] = id;
            newObj[OwlConfig.LabelClassID]      = label;
            ObjectStorage.Insert(newObj);
            Refresh();
        }