Example #1
0
 def __init__(self, identifier_strategy, create_strategy):
     self.identifier_strategy = identifier_strategy
     self.create_strategy = create_strategy
     self.bio_crosswalker = BioCrosswalk(identifier_strategy, create_strategy)
     self.affiliations_crosswalker = AffiliationsCrosswalk(identifier_strategy, create_strategy)
     self.funding_crosswalker = FundingCrosswalk(identifier_strategy, create_strategy)
     self.works_crosswalker = WorksCrosswalk(identifier_strategy, create_strategy)
Example #2
0
class PersonCrosswalk():
    def __init__(self, identifier_strategy, create_strategy):
        self.identifier_strategy = identifier_strategy
        self.create_strategy = create_strategy
        self.bio_crosswalker = BioCrosswalk(identifier_strategy, create_strategy)
        self.affiliations_crosswalker = AffiliationsCrosswalk(identifier_strategy, create_strategy)
        self.funding_crosswalker = FundingCrosswalk(identifier_strategy, create_strategy)
        self.works_crosswalker = WorksCrosswalk(identifier_strategy, create_strategy)

    def crosswalk(self, orcid_id, person_uri, person_class=None, confirmed_orcid_id=False):

        # Create an RDFLib Graph
        graph = Graph(namespace_manager=ns.ns_manager)

        # 0000-0003-3441-946X
        clean_orcid_id = clean_orcid(orcid_id)
        orcid_profile = fetch_orcid_profile(clean_orcid_id)

        # Determine the class to use for the person
        person_clazz = FOAF.Person
        if person_class:
            person_clazz = getattr(VIVO, person_class)

        # ORCID
        PersonCrosswalk._add_orcid_id(person_uri, clean_orcid_id, graph, confirmed_orcid_id)

        self.bio_crosswalker.crosswalk(orcid_profile, person_uri, graph, person_class=person_clazz)
        self.works_crosswalker.crosswalk(orcid_profile, person_uri, graph)
        self.affiliations_crosswalker.crosswalk(orcid_profile, person_uri, graph)
        self.funding_crosswalker.crosswalk(orcid_profile, person_uri, graph)

        return graph, orcid_profile, person_uri

    @staticmethod
    def _add_orcid_id(person_uri, orcid_id, graph, confirmed):
        orcid_id_uriref = URIRef("http://orcid.org/%s" % orcid_id)
        graph.add((person_uri, VIVO.orcidId, orcid_id_uriref))
        graph.add((orcid_id_uriref, RDF.type, OWL.Thing))
        if confirmed:
            graph.add((orcid_id_uriref, VIVO.confirmedOrcidId, person_uri))