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 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 SetDatatypePropertyDomain(string id, params Class[] classes) { var schema = GetSchema(); var datatypePropClass = schema.FindClassByID(OwlConfig.DatatypePropertyClassID); var domainClass = schema.FindClassByID(OwlConfig.DomainClassID); var datatypePropDomainRel = datatypePropClass.FindRelationship(domainClass, schema.FindClassByID(OwlConfig.ObjectClassID)); var dtProp = schema.FindPropertyByID(id); foreach (var c in classes) { ObjectStorage.AddRelation(new ObjectRelation(dtProp.CompactID, datatypePropDomainRel, c.CompactID)); } Refresh(); }
public void SetObjectPropertyRange(string id, params Class[] classes) { var schema = GetSchema(); var objPropClass = schema.FindClassByID(OwlConfig.ObjectPropertyClassID); var rangeClass = schema.FindClassByID(OwlConfig.RangeClassID); var objPropRangeRel = objPropClass.FindRelationship(rangeClass, schema.FindClassByID(OwlConfig.ObjectClassID)); var objProp = schema.FindClassByID(id); if (objProp == null || !objProp.IsPredicate) { throw new ArgumentException("Cannot locate object property with ID=" + id); } foreach (var c in classes) { ObjectStorage.AddRelation(new ObjectRelation(objProp.CompactID, objPropRangeRel, c.CompactID)); } Refresh(); }