def get_artists_and_collaborators_of_song_by_uri(self, uri): rows_artists = self._graph.query(Queries.find_artists_uri_compiled(uri)) rows_compilers = self._graph.query(Queries.find_compiler_uri_compiled(uri)) artist_uris = self._get_single_rows_multiple_result(rows_artists) if artist_uris is not None: for artist_uri in artist_uris: yield self.get_artist_by_uri(artist_uri) compilers_tuples = self._get_double_rows_multiple_result(rows_compilers) if compilers_tuples is not None: for compiler_tuple in compilers_tuples: yield self.get_artist_by_uri(compiler_tuple[0])
def get_artist_by_uri(self, uri): rows_canonical = self._graph.query(Queries.find_canonical_compiled(uri)) canonical_tuple = MeraRdflibGraph._get_double_rows_simple_result(rows_canonical) if canonical_tuple is None: return None rows_aliases = self._graph.query(Queries.find_aliases_compiled(uri)) rows_namevars = self._graph.query(Queries.find_namevars_compiled(uri)) rows_country = self._graph.query(Queries.find_country_compiled(uri)) return MeraArtist(labelled_canonical=canonical_tuple, labelled_aliases=MeraRdflibGraph._get_double_rows_multiple_result(rows_aliases), labelled_namevars=MeraRdflibGraph._get_double_rows_multiple_result(rows_namevars), labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country))
def get_song_by_uri(self, uri): rows_canonical = self._graph.query(Queries.find_canonical_compiled(uri)) canonical_tuple = MeraRdflibGraph._get_double_rows_simple_result(rows_canonical) if canonical_tuple is None: return None # rows_artist = self._graph.query(Queries.find_artists_uri_compiled(uri)) rows_compilers = self._graph.query(Queries.find_compiler_uri_compiled(uri)) rows_genres = self._graph.query(Queries.find_genres_compiled(uri)) rows_alt_titles = self._graph.query(Queries.find_alternative_titles_compiled(uri)) # rows_country = self._graph.query(Queries.find_country_compiled(uri)) rows_discogs_id = self._graph.query(Queries.find_discogs_id_compiled(uri)) rows_discogs_index = self._graph.query(Queries.find_discogs_index_compiled(uri)) rows_transaction_id = self._graph.query(Queries.find_usos_transaction_id_compiled(uri)) rows_isrc = self._graph.query(Queries.find_usos_isrc_compiled(uri)) # rows_duration = None # Not used yet # rows_date = None # Not used yet # rows_album = None # Not used yet return MeraSong(labelled_canonical=canonical_tuple, labelled_alt_titles=MeraRdflibGraph._get_double_rows_multiple_result(rows_alt_titles), labelled_collaborations=self._build_labelled_collaborations_from_rows(rows_compilers, ROLE_WRITER), # labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country), # artists=MeraRdflibGraph._get_single_rows_multiple_result(rows_artist), duration=None, labelled_genres=MeraRdflibGraph._get_double_rows_multiple_result(rows_genres), release_date=None, album=None, discogs_index=MeraRdflibGraph._get_single_rows_simple_result(rows_discogs_index), discogs_id=MeraRdflibGraph._get_single_rows_simple_result(rows_discogs_id), usos_transaction_id=MeraRdflibGraph._get_single_rows_simple_result(rows_transaction_id), usos_isrc=MeraRdflibGraph._get_single_rows_simple_result(rows_isrc))
def get_uri_of_intermediary_of_entity(self, primary_entity_uri, primary_property, target_entity): rows_intermediary_uri = self._graph.query( Queries.find_intermediary_uri_for_target_entity_compiled(primary_entity_uri=primary_entity_uri, primary_property=primary_property, entity_target_uri=target_entity) ) return self._get_single_rows_simple_result(rows_intermediary_uri)
def get_artist_group_by_uri(self, uri): rows_canonical = self._graph.query(Queries.find_canonical_compiled(uri)) canonical_tuple = MeraRdflibGraph._get_double_rows_simple_result(rows_canonical) if canonical_tuple is None: return None rows_aliases = self._graph.query(Queries.find_aliases_compiled(uri)) rows_namevars = self._graph.query(Queries.find_namevars_compiled(uri)) rows_country = self._graph.query(Queries.find_country_compiled(uri)) rows_members = self._graph.query(Queries.find_members_uri_compiled(uri)) object_members = None uri_members = MeraRdflibGraph._get_single_rows_multiple_result(rows_members) if uri_members is not None: object_members = [self.get_artist_person_by_uri(person) for person in uri_members] return MeraArtistGroup(labelled_canonical=canonical_tuple, labelled_aliases=MeraRdflibGraph._get_double_rows_multiple_result(rows_aliases), labelled_namevars=MeraRdflibGraph._get_double_rows_multiple_result(rows_namevars), labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country), members=object_members)
def get_artist_of_unknown_type_by_uri(self, uri): rows_canonical = self._graph.query(Queries.find_canonical_compiled(uri)) canonical_tuple = MeraRdflibGraph._get_double_rows_simple_result(rows_canonical) if canonical_tuple is None: return None rows_aliases = self._graph.query(Queries.find_aliases_compiled(uri)) rows_namevars = self._graph.query(Queries.find_namevars_compiled(uri)) rows_country = self._graph.query(Queries.find_country_compiled(uri)) rows_civil = self._graph.query(Queries.find_civil_compiled(uri)) if rows_civil is not None: # It is an ArtistPerson return MeraArtistPerson(labelled_canonical=canonical_tuple, labelled_aliases=MeraRdflibGraph._get_double_rows_multiple_result(rows_aliases), labelled_namevars=MeraRdflibGraph._get_double_rows_multiple_result(rows_namevars), labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country), labelled_civil=MeraRdflibGraph._get_double_rows_simple_result(rows_civil)) rows_members = self._graph.query(Queries.find_members_uri_compiled(uri)) if rows_members is None: # It has not members, so it hasn't group properties return MeraArtist(labelled_canonical=canonical_tuple, labelled_aliases=MeraRdflibGraph._get_double_rows_multiple_result(rows_aliases), labelled_namevars=MeraRdflibGraph._get_double_rows_multiple_result(rows_namevars), labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country)) # By elimination, it is a group object_members = None uri_members = MeraRdflibGraph._get_single_rows_multiple_result(rows_members) if uri_members is not None: object_members = [self.get_artist_person_by_uri(person) for person in uri_members] return MeraArtistGroup(labelled_canonical=canonical_tuple, labelled_aliases=MeraRdflibGraph._get_double_rows_multiple_result(rows_aliases), labelled_namevars=MeraRdflibGraph._get_double_rows_multiple_result(rows_namevars), labelled_country=MeraRdflibGraph._get_double_rows_simple_result(rows_country), members=object_members)
def test_query_artist_of_song(self): dataset = Dataset("A fancy dataset") generator = get_clean_graph_generator_mongo_repos() mera_graph = generator.generate_mera_graph(artist_parser=FakeArtistParser(dataset), song_parser=FakeSongParser(dataset)) rdflib_graph = mera_graph._graph rows = rdflib_graph.query(Queries.find_artists_uri_compiled(base_entities_URI + "avaloncho")) counter = 0 last_result = "" for row in rows: counter += 1 last_result = str(row[0]) self.assertEquals(counter, 1) self.assertEquals(last_result, base_entities_URI + "herroes_del_selencio")
def get_uri_of_intermediary_of_text(self, primary_entity_uri, primary_property, matching_text): rows_intermediary_uri = self._graph.query( Queries.find_intermediary_uri_for_text_compiled(primary_property=primary_property, primary_entity_uri=primary_entity_uri, matching_text=matching_text)) return self._get_single_rows_simple_result(rows_intermediary_uri)