Example #1
0
 def test_nodes_literal(self):
     lit = Literal('name', 'en', LiteralType.string)
     lit2 = Literal('nombre', 'es')
     lit3 = Literal('name', 'en', 'xsd:string')
     self.assertNotEqual(lit, lit2)
     self.assertEqual(lit, lit3)
     self.assertEqual(len({lit, lit2, lit3}), 2)
     self.assertEqual(lit.type, LiteralType('xsd:string'))
     self.assertEqual(lit.raw_type, LiteralType.string.value)
     self.assertTrue(lit.is_valid())
Example #2
0
class TimeValue(DataValue):
    type = URI('wikibase:Time')

    def __init__(self, value, calendar, precision, time_zone):
        super().__init__()
        self.value = Literal(value, type_=LiteralType.dateTime)
        if not self.value.is_valid():
            raise ValueError('Invalid datetime format')
        self._calendar = calendar
        if isinstance(precision, Precision):
            self._precision = precision.value
        elif isinstance(precision, Literal):
            self._precision = precision
        else:
            self._precision = Literal(str(precision), type_=LiteralType.integer)
        if isinstance(time_zone, Literal):
            self._time_zone = time_zone
        else:
            self._time_zone = Literal(str(time_zone), type_=LiteralType.integer)

        self.__build_full_value()

    def __build_full_value(self):
        self._create_full_value()
        self.full_value.add_property(URI('rdf:type'), URI('wikibase:Time'))
        self.full_value.add_property(URI('wikibase:timePrecision'), self._precision)
        self.full_value.add_property(URI('wikibase:timeTimezone'), self._time_zone)
        self.full_value.add_property(URI('wikibase:timeCalendarModel'), self._calendar.value)
        self.full_value.add_property(URI('wikibase:timeValue'), self.value) 
        # TODO fix import bug
        # if not self.value.startswith("+"):
        #     self.full_value.add_property(URI('wikibase:timeValue'), self.value) 
        # else:
        #     self.full_value.add_property(URI('wikibase:timeValue'), self.value[1:]) 

    def _v_name(self):
        time = self.value.value.replace(':', '').replace(' ', '-')
        calendar = self._calendar.value.value[3]
        precision = self._precision.value
        time_zone = self._time_zone.value
        return 'c'.join(('Time', time, calendar, precision, time_zone))