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 get_artist_person_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))

        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))