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])
示例#4
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
示例#5
0
 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)