def test_setProperty(self): e = Element() e.setProperty("Integer", 1) self.assertEqual([1], e.getProperty("Integer").values) msg = """ setProperty should convert when setting the property if force_convertion is true""" e.setProperty("Integer", "2", force_convertion=True) self.assertEqual([2], e.getProperty("Integer").values, msg) msg = """ setProperty should convert when setting the property if value is a list and if force_convertion is true""" e.setProperty("Integer", ["1", "2"], force_convertion=True) self.assertEqual([1, 2], e.getProperty("Integer").values, msg) msg = """ setProperty should convert unicode values to str before creating new property""" e.setProperty("strKey", u"a") self.assertEqual(str, type(e.getProperty("strKey").value), msg) msg = """ setProperty should convert unicode values to str when setting the property""" e.setProperty("strKey", u"b") self.assertEqual(["b"], e.getProperty("strKey").values, msg)
def test_hasProperty(self): e = Element() e.setProperty("Integer", "2", "xsd:int") self.assertEqual(False, e.hasProperty("NonExistingKey")) self.assertEqual(False, e.hasProperty("Integer", 1)) self.assertEqual(True, e.hasProperty("Integer", 2)) self.assertEqual(True, e.hasProperty("Integer")) e.setProperty("Type", int) self.assertEqual(False, e.hasProperty("Type", not_none=True))
def test_element(self): e = Element() e.setProperty("Hello", float) e.setProperty("Hello", 0.0) self.assertEqual(e.getProperty("Hello").value, 0.0) e.getProperty("Hello").values = 1.0 self.assertEqual(e.getProperty("Hello").values, [1.0]) e.getProperty("Hello").value = 2.0 self.assertEqual(e.getProperty("Hello").values, [2.0])
def get_individual(self, name, context_id=""): """ @brief Builds an element from an individual @param context_id if defined look for the individual only in the context """ subject = self.lightstring2uri(name) if not self.uri_exists(subject, context_id): raise Exception( "Element {} doesn't exist in ontology. Uri: {}. Context: {}.". format(name, subject, context_id)) e = Element() for predicate, obj in self.ontology(context_id).predicate_objects( subject): if OWL.DatatypeProperty in self.ontology().objects( predicate, RDF.type) or predicate == RDFS.comment: e.setProperty(self.uri2lightstring(predicate), obj.value, self.uri2lightstring(obj.datatype), force_convertion=True) elif OWL.ObjectProperty in self.ontology().objects( predicate, RDF.type): e.addRelation("-1", self.uri2lightstring(predicate), self.uri2lightstring(obj)) elif predicate == RDF.type and obj != OWL.NamedIndividual: e._type = self.uri2lightstring(str(obj)) elif obj == OWL.NamedIndividual: pass elif predicate == RDFS.label: e._label = obj.value else: log.error( "[get_individual]", "Ignoring {}-{}-{}. Predicate is not defined in the ontology." .format(name, self.uri2lightstring(predicate), self.uri2lightstring(obj))) for subj, predicate in self.ontology(context_id).subject_predicates( subject): if (self.uri2lightstring(predicate) != "skiros:hasTemplate"): e.addRelation(self.uri2lightstring(subj), self.uri2lightstring(predicate), "-1") self._add_reasoners_prop(e) return e
def toElement(self): to_ret = Element("skiros:Parameter", self._key) to_ret.setProperty("rdfs:comment", self._description) to_ret.setProperty("skiros:ParameterType", self._param_type.value - 1) if (not self.dataTypeIs(Element)): to_ret.setProperty("skiros:DataType", self._data_type) if self.hasSpecifiedDefault(): to_ret.setProperty("skiros:Default", self._default) if self.isSpecified(): to_ret.setProperty("skiros:Value", self._values) else: to_ret.setProperty("skiros:DataType", self._default[0]._type) if self.isSpecified(): for v in self._values: if v._id != "": to_ret.addRelation("-1", "skiros:hasValue", v._id) return to_ret
def test_appendProperty(self): e = Element() e.setProperty("Integer", 2, "xsd:int") self.assertEqual(2, e.getProperty("Integer").value) e.appendProperty("Integer", 3) self.assertEqual([2, 3], e.getProperty("Integer").values)