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