diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard.sparql
deleted file mode 100644
index 70d69df3..00000000
--- a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard.sparql
+++ /dev/null
@@ -1,83 +0,0 @@
-PREFIX arg: .
-PREFIX foaf: .
-PREFIX v: .
-PREFIX vivo: .
-
-CONSTRUCT {
- ?s arg:ARG_2000028 _:vcard .
- _:vcard arg:ARG_2000029 ?s .
- _:vcard a v:Individual .
- _:vcard v:hasName _:name .
- _:name a v:Name .
- _:name v:givenName ?firstName .
- _:name vivo:middleName ?middleName .
- _:name v:familyName ?lastName .
- _:name v:hasEmail _:email .
- _:email a v:Email .
- _:email v:email ?email .
- _:name v:hasEmail _:primaryEmail .
- _:primaryEmail a v:Email .
- _:primaryEmail a v:Work .
- _:primaryEmail v:email ?primaryEmail .
- _:name v:hasTelephone _:telephone .
- _:telephone a v:Telephone .
- _:telephone a v:Voice .
- _:telephone v:telephone ?phoneNumber .
- _:name v:hasTelephone _:primaryTelephone .
- _:primaryTelephone a v:Telephone .
- _:primaryTelephone a v:Voice .
- _:primaryTelephone a v:Work .
- _:primaryTelephone v:telephone ?primaryPhoneNumber .
- _:name v:hasTelephone _:fax .
- _:fax a v:Telephone .
- _:fax a v:Fax.
- _:fax v:telephone ?faxNumber .
- _:name v:hasAddress _:address .
- _:address v:streetAddress ?
-} WHERE {
- ?s a foaf:Person
- {
- ?s foaf:firstName ?firstName .
- } UNION {
- ?s foaf:lastName ?lastName .
- } UNION {
- ?s vivo:middleName ?middleName
- } UNION {
- ?s vivo:email ?email
- } UNION {
- ?s vivo:primaryEmail ?primaryEmail
- } UNION {
- ?s vivo:phoneNumber ?phoneNumber
- } UNION {
- ?s vivo:primaryPhoneNumber ?primaryPhoneNumber
- } UNION {
- ?s vivo:faxNumber ?faxNumber
- } UNION {
- ?s vivo:mailingAddress ?address .
- ?address vivo:addressCity ?addressCity .
- ?address vivo:addressState ?addressState .
- ?address vivo:addressCountry ?addressCountry .
- ?address vivo:addressPostalCode ?addressPostalCode .
- ?address vivo:address1 ?address1 .
- BIND (?address1 AS ?streetAddress)
- } UNION {
- ?s vivo:mailingAddress ?address .
- ?address vivo:addressCity ?addressCity .
- ?address vivo:addressState ?addressState .
- ?address vivo:addressCountry ?addressCountry .
- ?address vivo:addressPostalCode ?addressPostalCode .
- ?address vivo:address1 ?address1 .
- ?address vivo:address2 ?address2 .
- BIND (CONCAT(?address1, ", ", ?address2) AS ?streetAddress)
- } UNION {
- ?s vivo:mailingAddress ?address .
- ?address vivo:addressCity ?addressCity .
- ?address vivo:addressState ?addressState .
- ?address vivo:addressCountry ?addressCountry .
- ?address vivo:addressPostalCode ?addressPostalCode .
- ?address vivo:address1 ?address1 .
- ?address vivo:address2 ?address2 .
- ?address vivo:address3 ?address3 .
- BIND (CONCAT(?address1, ", ", ?address2, ", ", ?address3) AS ?streetAddress)
- }
-}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-1.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-1.sparql
new file mode 100644
index 00000000..cc320ed1
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-1.sparql
@@ -0,0 +1,20 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?s arg:ARG_2000028 _:vcard .
+ _:vcard arg:ARG_2000029 ?s .
+ _:vcard a v:Organization .
+} WHERE {
+ ?s a foaf:Organization
+ FILTER (
+ EXISTS { ?s vivo:email ?email } ||
+ EXISTS { ?s vivo:primaryEmail ?primaryEmail } ||
+ EXISTS { ?s vivo:phoneNumber ?phoneNumber } ||
+ EXISTS { ?s vivo:primaryPhoneNumber ?primaryPhoneNumber } ||
+ EXISTS { ?s vivo:faxNumber ?faxNumber } ||
+ EXISTS { ?s vivo:mailingAddress ?address }
+ )
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-2.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-2.sparql
new file mode 100644
index 00000000..c899a29f
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1-2.sparql
@@ -0,0 +1,20 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?s arg:ARG_2000028 _:vcard .
+ _:vcard arg:ARG_2000029 ?s .
+ _:vcard a v:Group .
+} WHERE {
+ ?s a foaf:Group
+ FILTER (
+ EXISTS { ?s vivo:email ?email } ||
+ EXISTS { ?s vivo:primaryEmail ?primaryEmail } ||
+ EXISTS { ?s vivo:phoneNumber ?phoneNumber } ||
+ EXISTS { ?s vivo:primaryPhoneNumber ?primaryPhoneNumber } ||
+ EXISTS { ?s vivo:faxNumber ?faxNumber } ||
+ EXISTS { ?s vivo:mailingAddress ?address }
+ )
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1.sparql
new file mode 100644
index 00000000..3af689b1
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard1.sparql
@@ -0,0 +1,23 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?s arg:ARG_2000028 _:vcard .
+ _:vcard arg:ARG_2000029 ?s .
+ _:vcard a v:Individual .
+} WHERE {
+ ?s a foaf:Person
+ FILTER (
+ EXISTS { ?s foaf:firstName ?firstName } ||
+ EXISTS { ?s foaf:lastName ?lastName } ||
+ EXISTS { ?s vivo:middleName ?middleName } ||
+ EXISTS { ?s vivo:email ?email } ||
+ EXISTS { ?s vivo:primaryEmail ?primaryEmail } ||
+ EXISTS { ?s vivo:phoneNumber ?phoneNumber } ||
+ EXISTS { ?s vivo:primaryPhoneNumber ?primaryPhoneNumber } ||
+ EXISTS { ?s vivo:faxNumber ?faxNumber } ||
+ EXISTS { ?s vivo:mailingAddress ?address }
+ )
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard2.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard2.sparql
new file mode 100644
index 00000000..ae21fbab
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard2.sparql
@@ -0,0 +1,27 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasName _:name .
+ _:name a v:Name .
+ _:name v:givenName ?firstName .
+ _:name vivo:middleName ?middleName .
+ _:name v:familyName ?lastName .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ OPTIONAL {
+ ?s foaf:firstName ?firstName .
+ BIND("yes" as ?test)
+ }
+ OPTIONAL {
+ ?s foaf:lastName ?lastName .
+ BIND("yes" as ?test)
+ }
+ OPTIONAL {
+ ?s vivo:middleName ?middleName
+ BIND("yes" as ?test)
+ }
+ FILTER(bound(?test))
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard3.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard3.sparql
new file mode 100644
index 00000000..91991c9e
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard3.sparql
@@ -0,0 +1,13 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasEmail _:email .
+ _:email a v:Email .
+ _:email v:email ?email .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:email ?email
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard4.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard4.sparql
new file mode 100644
index 00000000..b6f9409f
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard4.sparql
@@ -0,0 +1,14 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasEmail _:primaryEmail .
+ _:primaryEmail a v:Email .
+ _:primaryEmail a v:Work .
+ _:primaryEmail v:email ?primaryEmail .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:primaryEmail ?primaryEmail
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard5.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard5.sparql
new file mode 100644
index 00000000..6deedc83
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard5.sparql
@@ -0,0 +1,14 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasTelephone _:telephone .
+ _:telephone a v:Telephone .
+ _:telephone a v:Voice .
+ _:telephone v:telephone ?phoneNumber .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:phoneNumber ?phoneNumber
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard6.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard6.sparql
new file mode 100644
index 00000000..766faa3e
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard6.sparql
@@ -0,0 +1,21 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasTelephone _:primaryTelephone .
+ _:primaryTelephone a v:Telephone .
+ _:primaryTelephone a v:Voice .
+ _:primaryTelephone a v:Work .
+ _:primaryTelephone v:telephone ?primaryPhoneNumber .
+ _:name v:hasTelephone _:fax .
+ _:fax a v:Telephone .
+ _:fax a v:Fax.
+ _:fax v:telephone ?faxNumber .
+ _:name v:hasAddress _:address .
+ _:address v:streetAddress ?streetAddress .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:primaryPhoneNumber ?primaryPhoneNumber
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard7.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard7.sparql
new file mode 100644
index 00000000..95c15654
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard7.sparql
@@ -0,0 +1,16 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?vcard v:hasTelephone _:fax .
+ _:fax a v:Telephone .
+ _:fax a v:Fax.
+ _:fax v:telephone ?faxNumber .
+ _:name v:hasAddress _:address .
+ _:address v:streetAddress ?streetAddress .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:faxNumber ?faxNumber
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard8.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard8.sparql
new file mode 100644
index 00000000..eb88f650
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/additions/vcard8.sparql
@@ -0,0 +1,37 @@
+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 .
+} WHERE {
+ ?s arg:ARG_2000028 ?vcard .
+ ?s vivo:mailingAddress ?address .
+ ?address vivo:addressCity ?addressCity .
+ ?address vivo:addressState ?addressState .
+ ?address vivo:addressCountry ?addressCountry .
+ ?address vivo:addressPostalCode ?addressPostalCode .
+ 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)
+ }
+}
diff --git a/productMods/WEB-INF/ontologies/update/sparqlConstructs/deletions/vcardDel.sparql b/productMods/WEB-INF/ontologies/update/sparqlConstructs/deletions/vcardDel.sparql
new file mode 100644
index 00000000..901c706a
--- /dev/null
+++ b/productMods/WEB-INF/ontologies/update/sparqlConstructs/deletions/vcardDel.sparql
@@ -0,0 +1,48 @@
+PREFIX arg:
+PREFIX foaf:
+PREFIX v:
+PREFIX vivo:
+
+CONSTRUCT {
+ ?s foaf:firstName ?firstName .
+ ?s foaf:lastName ?lastName .
+ ?s vivo:middleName ?middleName .
+ ?s vivo:email ?email .
+ ?s vivo:primaryEmail ?primaryEmail .
+ ?s vivo:phoneNumber ?phoneNumber .
+ ?s vivo:primaryPhoneNumber ?primaryPhoneNumber .
+ ?s vivo:faxNumber ?faxNumber .
+ ?s vivo:mailingAddress ?address .
+ ?address ?addressP ?addressO .
+} WHERE {
+ ?s a foaf:Agent
+ OPTIONAL {
+ ?s foaf:firstName ?firstName .
+ }
+ OPTIONAL {
+ ?s foaf:lastName ?lastName .
+ }
+ OPTIONAL {
+ ?s vivo:middleName ?middleName
+ }
+ OPTIONAL {
+ ?s vivo:email ?email
+ }
+ OPTIONAL {
+ ?s vivo:primaryEmail ?primaryEmail
+ }
+ OPTIONAL {
+ ?s vivo:phoneNumber ?phoneNumber
+ }
+ OPTIONAL {
+ ?s vivo:primaryPhoneNumber ?primaryPhoneNumber
+ }
+ OPTIONAL {
+ ?s vivo:faxNumber ?faxNumber
+ } OPTIONAL {
+ ?s vivo:mailingAddress ?address .
+ OPTIONAL {
+ ?address ?addressP ?addressO
+ }
+ }
+}