PREFIX arg: PREFIX foaf: PREFIX v: PREFIX vivo: CONSTRUCT { ?vcard v:hasAddress _:address . _:address a v:Address . _:address v:streetAddress ?streetAddress . _:address v:locality ?addressCity . _:address v:region ?addressState . _:address v:postalCode ?addressPostalCode . _:address v:country ?addressCountry . _:address ?location . ?location _:address . } WHERE { ?s vivo:mailingAddress ?address . OPTIONAL { ?address vivo:addressCity ?addressCity } OPTIONAL { ?address vivo:addressState ?addressState } OPTIONAL { ?address vivo:addressPostalCode ?addressPostalCode } OPTIONAL { ?address vivo:addressCountry ?addressCountry } OPTIONAL { ?address vivo:hasGeographicLocation ?location } ?s arg:ARG_2000028 ?vcard . OPTIONAL { ?address vivo:address1 ?address1 . ?address vivo:address2 ?address2 . ?address vivo:address3 ?address3 . BIND (CONCAT(?address1, ", ", ?address2, ", ", ?address3) AS ?streetAddress) } OPTIONAL { ?address vivo:address1 ?address1 . ?address vivo:address2 ?address2 . FILTER NOT EXISTS { ?address vivo:address3 ?address3 } BIND (CONCAT(?address1, ", ", ?address2) AS ?streetAddress) } OPTIONAL { ?address vivo:address1 ?address1 BIND(?address1 as ?streetAddress) } FILTER NOT EXISTS { ?vcard v:hasAddress ?addressNode } }