def test_resolve_property_path(self): self.assertEqual(self.resolve('P297', 'Q142'), [IdentifierValue(value='FR')]) self.assertTrue( IdentifierValue(value='FR') in self.resolve('Afr', 'Q142')) self.assertEqual(self.resolve('P17/P297', 'Q83259'), [IdentifierValue(value='FR')]) self.assertEqual(self.resolve('P246', 'Q743'), [StringValue(value='W')]) self.assertEqual(self.resolve('P17', 'Q83259'), [ItemValue(id='Q142')]) # With dot self.assertEqual(self.resolve('./P2427', 'Q34433'), [IdentifierValue(value='grid.4991.5')]) self.assertEqual(self.resolve('P2427/.', 'Q34433'), [IdentifierValue(value='grid.4991.5')]) # With disjunction self.assertSetEqual( set(self.resolve( 'P17', # country 'Q1011981', # google china )), {ItemValue(id='Q148')}) # china self.assertSetEqual( set( self.resolve( 'P749/P17', # parent org. / country 'Q1011981', # google china )), {ItemValue(id='Q30')}) # USA self.assertSetEqual( set( self.resolve( 'P17|(P749/P17)', # brackets not actually needed 'Q1011981')), {ItemValue(id='Q148'), ItemValue(id='Q30')}) # USA + China # With term self.assertEqual(self.resolve('P17/Lfr', 'Q83259'), [IdentifierValue(value='France')])
def test_resolve_property_path(self): self.assertEqual(self.resolve('P297', 'Q142'), [IdentifierValue(value='FR')]) self.assertTrue( IdentifierValue(value='FR') in self.resolve('Afr', 'Q142')) self.assertEqual(self.resolve('P17/P297', 'Q83259'), [IdentifierValue(value='FR')]) self.assertEqual(self.resolve('P246', 'Q743'), [StringValue(value='W')]) self.assertEqual(self.resolve('P1449', 'Q1249148'), [ MonolingualValue(text='Dick', language='en'), MonolingualValue(text='Rich', language='en') ]) self.assertEqual(self.resolve('P17', 'Q83259'), [ItemValue(id='Q142')]) self.assertEqual(self.resolve('P17/qid', 'Q83259'), [IdentifierValue(id='Q142')]) self.assertEqual(self.resolve('qid', 'Q142'), [IdentifierValue(id='Q142')]) # Qualifier self.assertEqual(self.resolve('P4424_P518', 'Q42023001'), [ItemValue(id='Q2106255')]) # With dot self.assertEqual(self.resolve('./P2427', 'Q34433'), [IdentifierValue(value='grid.4991.5')]) self.assertEqual(self.resolve('P2427/.', 'Q34433'), [IdentifierValue(value='grid.4991.5')]) # With disjunction self.assertSetEqual( set(self.resolve( 'P17', # country 'Q1011981', # google china )), {ItemValue(id='Q148')}) # china self.assertSetEqual( set( self.resolve( 'P749/P17', # parent org. / country 'Q1011981', # google china )), {ItemValue(id='Q30')}) # USA self.assertSetEqual( set( self.resolve( 'P17|(P749/P17)', # brackets not actually needed 'Q1011981')), {ItemValue(id='Q148'), ItemValue(id='Q30')}) # USA + China # With term self.assertEqual(self.resolve('P17/Lfr', 'Q83259'), [IdentifierValue(value='France')])
async def test_resolve_property_path(resolve): assert (await resolve('P297', 'Q142') == [IdentifierValue(value='FR')]) assert (IdentifierValue(value='FR') in await resolve('Afr', 'Q142')) assert (await resolve('P17/P297', 'Q83259') == [IdentifierValue(value='FR')]) assert (await resolve('P246', 'Q743') == [StringValue(value='W')]) assert (await resolve('P1449', 'Q1249148') == [ MonolingualValue(text='Dick', language='en'), MonolingualValue(text='Rich', language='en'), MonolingualValue(text='Rik', language='en'), MonolingualValue(text='Richey', language='en'), MonolingualValue(text='Rick', language='en'), MonolingualValue(text='Ritchie', language='en') ]) assert (await resolve('P17', 'Q83259') == [ItemValue(id='Q142')]) assert (await resolve('P17/qid', 'Q83259') == [IdentifierValue(value='Q142')]) assert (await resolve('qid', 'Q142') == [IdentifierValue(value='Q142')]) # Qualifier assert (await resolve('P4424_P518', 'Q42023001') == [ItemValue(id='Q2106255')]) # With dot assert (await resolve('./P2427', 'Q34433') == [IdentifierValue(value='grid.4991.5')]) assert (await resolve('P2427/.', 'Q34433') == [IdentifierValue(value='grid.4991.5')]) # With disjunction assert (set(await resolve( 'P17', # country 'Q30273752', # microsoft france )) == {ItemValue(id='Q142')}) # france assert (set(await resolve( 'P749/P17', # parent org. / country 'Q30273752', # microsoft france )) == {ItemValue(id='Q30')}) # USA assert (set(await resolve( 'P17|(P749/P17)', # brackets not actually needed 'Q30273752')) == {ItemValue(id='Q142'), ItemValue(id='Q30')}) # USA + France # With term assert (await resolve('P17/Lfr', 'Q83259') == [IdentifierValue(value='France')]) # With sitelink assert (await resolve('P17/Sfrwiki', 'Q83259') == [IdentifierValue(value='France')])
def resolve(self, exp, qid): path = self.f.parse(exp) return list(path.step(ItemValue(id=qid)))
async def _resolve(exp, qid): path = property_factory.parse(exp) return list(await path.step(ItemValue(id=qid)))