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)
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")
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'))
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)
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)
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
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
def test_not_equal_to_typed_literal(self): self.assertNotEqual(self.literal, TypedLiteral("cat", XSD.string))
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_hash_equal_to_typed_literal_with_same_lexical_form_and_datatype(self): self.assertEqual(hash(self.literal), hash(TypedLiteral("1", XSD.string)))
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)))
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)))
def test_triple_22_typed_literal_xml_literal(self): triple = self._get_triple(21) self.assertEqual( triple, (EX.resource23, EX.property, TypedLiteral("\"", RDFS.XMLLiteral)))
def test_compares_greater_than_xsd_string_lexicographically(self): self.assert_(self.literal > TypedLiteral("0", XSD.string))
def test_compares_less_than_xsd_string_lexicographically(self): self.assert_(self.literal < TypedLiteral("20", XSD.string))
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
def test_hash_not_equal_to_plain_literal_with_language(self): literal = TypedLiteral("1", URI('en')) self.assertNotEqual(hash(literal), hash(PlainLiteral("1", 'en')))
def test_hash_not_equal_to_typed_literal_with_different_datatype(self): self.assertNotEqual(hash(self.literal), hash(TypedLiteral("1", XSD.integer)))
def test_hash_not_equal_to_typed_literal_with_different_lexical_form(self): self.assertNotEqual(hash(self.literal), hash(TypedLiteral("dog", XSD.string)))
def test_hash_not_equal_to_typed_literal(self): self.assertNotEqual(hash(self.literal), hash(TypedLiteral("cat", XSD.string)))
def setUp(self): self.literal = TypedLiteral("1", XSD.string)
def setUp(self): self.literal_1 = TypedLiteral("test", XSD.string) self.literal_2 = TypedLiteral("0", XSD.string)
def __call__(self, obj, context): if self.datatype is None: return PlainLiteral(obj.lexical_form) else: return TypedLiteral(obj.lexical_form, self.datatype)
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)
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)))
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_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)))
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
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)))
def test_datatype_is_converted_to_uri(self): literal = TypedLiteral("1", "string") self.assert_(isinstance(literal.datatype, URI)) self.assertEqual(literal.datatype, URI("string"))