示例#1
0
 def test_matches_only_typed_literals(self):
     self.assertFalse(BlankNode() in self.type)
     self.assertFalse(URI('test') in self.type)
     self.assertFalse(PlainLiteral('1.5') in self.type)
     self.assertFalse(PlainLiteral('1.5', 'en') in self.type)
     self.assert_(TypedLiteral('1.5', XSD.float) in self.type)
     self.assert_(TypedLiteral('1.5', XSD.string) in self.type)
示例#2
0
class TestStringTypedLiteral(unittest.TestCase):
    def setUp(self):
        self.literal_1 = TypedLiteral("test", XSD.string)
        self.literal_2 = TypedLiteral("0", XSD.string)

    def test_calling_value_returns_lexical_form(self):
        self.assertEqual(self.literal_1.value(), "test")
        self.assertEqual(self.literal_2.value(), "0")
示例#3
0
class TestDecimalTypedLiteral(unittest.TestCase):
    def setUp(self):
        self.literal_1 = TypedLiteral("1.0000", XSD.decimal)
        self.literal_2 = TypedLiteral("010", XSD.decimal)
        self.literal_3 = TypedLiteral("-42", XSD.decimal)
        self.literal_4 = TypedLiteral("+12345.67890", XSD.decimal)

    def test_calling_value_returns_int(self):
        self.assertEqual(self.literal_1.value(), Decimal('1'))
        self.assertEqual(self.literal_2.value(), Decimal('10'))
        self.assertEqual(self.literal_3.value(), Decimal('-42'))
        self.assertEqual(self.literal_4.value(), Decimal('12345.67890'))
示例#4
0
class TestIntegerTypedLiteral(unittest.TestCase):
    def setUp(self):
        self.literal_1 = TypedLiteral("1", XSD.integer)
        self.literal_2 = TypedLiteral("010", XSD.integer)
        self.literal_3 = TypedLiteral("-42", XSD.integer)
        self.literal_4 = TypedLiteral("+500", XSD.integer)

    def test_calling_value_returns_int(self):
        self.assertEqual(self.literal_1.value(), 1)
        self.assertEqual(self.literal_2.value(), 10)
        self.assertEqual(self.literal_3.value(), -42)
        self.assertEqual(self.literal_4.value(), 500)
示例#5
0
 def _literal(self, token, uri):
     if token.endswith('>'):
         tokens = token.rsplit('^^', 1)
         lexical_form = self._string(tokens[0][1:-1])
         datatype = self._uriref(tokens[1], uri)
         return TypedLiteral(lexical_form, datatype)
     else:
         tokens = token.rsplit('@', 1)
         lexical_form = self._string(tokens[0][1:-1])
         if len(tokens) == 1:
             language = None
         else:
             language = tokens[1]
         return PlainLiteral(lexical_form, language)
示例#6
0
 def _literal_property(self, element, parent, ids):
     # 7.2.16 Production literalPropertyElt
     datatype = element.get(QName(RDF, 'datatype'))
     if datatype is not None:
         object_ = TypedLiteral(element.text, URI(datatype))
     else:
         object_ = PlainLiteral(element.text, element.language)
     triple = (parent.subject, element.uri, object_)
     yield triple
     id_ = self._id(element, ids)
     if id_ is not None:
         # 7.3 Reification Rules
         for triple in self._reify(id_, triple):
             yield triple
示例#7
0
 def _parse_type_literal_property(self, element, parent, ids):
     literal = element.text or ""
     if len(element):
         tree = etree.ElementTree(element[0])
         bytes_io = BytesIO()
         tree.write_c14n(bytes_io, exclusive=True, with_comments=True)
         literal += bytes_io.getvalue().decode('utf-8')
         literal += element[0].tail or ""
     object_ = TypedLiteral(literal, RDF.XMLLiteral)
     triple = (parent.subject, element.uri, object_)
     yield triple
     id_ = self._id(element, ids)
     if id_ is not None:
         # 7.3 Reification Rules
         for triple in self._reify(id_, triple):
             yield triple
示例#8
0
 def test_not_equal_to_typed_literal(self):
     self.assertNotEqual(self.literal, TypedLiteral("cat", XSD.string))
示例#9
0
 def setUp(self):
     self.literal_1 = TypedLiteral("1.0000", XSD.decimal)
     self.literal_2 = TypedLiteral("010", XSD.decimal)
     self.literal_3 = TypedLiteral("-42", XSD.decimal)
     self.literal_4 = TypedLiteral("+12345.67890", XSD.decimal)
示例#10
0
 def test_hash_equal_to_typed_literal_with_same_lexical_form_and_datatype(self):
     self.assertEqual(hash(self.literal), hash(TypedLiteral("1", XSD.string)))
示例#11
0
 def test_triple_27_typed_literal_xml_literal(self):
     triple = self._get_triple(26)
     self.assertEqual(triple, (EX.resource27, EX.property,
                               TypedLiteral("chat", RDFS.XMLLiteral)))
示例#12
0
 def test_triple_24_typed_literal_xml_literal(self):
     triple = self._get_triple(23)
     self.assertEqual(triple, (EX.resource25, EX.property,
                               TypedLiteral("a <b></b>", RDFS.XMLLiteral)))
示例#13
0
 def test_triple_22_typed_literal_xml_literal(self):
     triple = self._get_triple(21)
     self.assertEqual(
         triple,
         (EX.resource23, EX.property, TypedLiteral("\"", RDFS.XMLLiteral)))
示例#14
0
 def test_compares_greater_than_xsd_string_lexicographically(self):
     self.assert_(self.literal > TypedLiteral("0", XSD.string))
示例#15
0
 def test_compares_less_than_xsd_string_lexicographically(self):
     self.assert_(self.literal < TypedLiteral("20", XSD.string))
示例#16
0
 def test_does_not_compare_to_typed_literal_with_different_datatype(self):
     literal = TypedLiteral("1", XSD.integer)
     with self.assertRaises(TypeError):
         self.literal < literal
     with self.assertRaises(TypeError):
         self.literal > literal
示例#17
0
 def test_hash_not_equal_to_plain_literal_with_language(self):
     literal = TypedLiteral("1", URI('en'))
     self.assertNotEqual(hash(literal), hash(PlainLiteral("1", 'en')))
示例#18
0
 def test_hash_not_equal_to_typed_literal_with_different_datatype(self):
     self.assertNotEqual(hash(self.literal), hash(TypedLiteral("1", XSD.integer)))
示例#19
0
 def test_hash_not_equal_to_typed_literal_with_different_lexical_form(self):
     self.assertNotEqual(hash(self.literal), hash(TypedLiteral("dog", XSD.string)))
示例#20
0
 def test_hash_not_equal_to_typed_literal(self):
     self.assertNotEqual(hash(self.literal), hash(TypedLiteral("cat", XSD.string)))
示例#21
0
 def setUp(self):
     self.literal = TypedLiteral("1", XSD.string)
示例#22
0
 def setUp(self):
     self.literal_1 = TypedLiteral("test", XSD.string)
     self.literal_2 = TypedLiteral("0", XSD.string)
示例#23
0
 def __call__(self, obj, context):
     if self.datatype is None:
         return PlainLiteral(obj.lexical_form)
     else:
         return TypedLiteral(obj.lexical_form, self.datatype)
示例#24
0
 def test_compares_less_than_xsd_string_with_same_lexical_form(self):
     literal = TypedLiteral("cat", XSD.string)
     self.assert_(self.literal < literal)
     self.assert_(not self.literal > literal)
示例#25
0
 def test_triple_23_typed_literal_xml_literal(self):
     triple = self._get_triple(22)
     self.assertEqual(triple, (EX.resource24, EX.property,
                               TypedLiteral("<a></a>", RDFS.XMLLiteral)))
示例#26
0
 def setUp(self):
     self.literal_1 = TypedLiteral("1", XSD.integer)
     self.literal_2 = TypedLiteral("010", XSD.integer)
     self.literal_3 = TypedLiteral("-42", XSD.integer)
     self.literal_4 = TypedLiteral("+500", XSD.integer)
示例#27
0
 def test_triple_26_typed_literal_xml_literal(self):
     triple = self._get_triple(25)
     self.assertEqual(triple,
                      (EX.resource26, EX.property,
                       TypedLiteral("a\n<b></b>\nc", RDFS.XMLLiteral)))
示例#28
0
 def test_does_not_compare_to_typed_literal(self):
     literal = TypedLiteral("1", XSD.string)
     with self.assertRaises(TypeError):
         self.literal < literal
     with self.assertRaises(TypeError):
         self.literal > literal
示例#29
0
 def test_triple_30_typed_literal_example_datatype(self):
     triple = self._get_triple(29)
     self.assertEqual(
         triple,
         (EX.resource32, EX.property, TypedLiteral("abc", EX.datatype1)))
示例#30
0
 def test_datatype_is_converted_to_uri(self):
     literal = TypedLiteral("1", "string")
     self.assert_(isinstance(literal.datatype, URI))
     self.assertEqual(literal.datatype, URI("string"))