Changes: Remove leading underscore from variable names where possible.
[qtcontacts-tracker:qtcontacts-tracker.git] / tests / ut_qtcontacts_trackerplugin_querybuilder / data / 202-save-request-1.rq
1 # Delete custom fields of related objects and custom details
2 # =================================================================================================
3 DELETE
4 {
5   # Restrict the graph to only delete those properties we created
6   # -----------------------------------------------------------------------------------------------
7   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
8   {
9     ?property a ?propertyType .
10   }
11 }
12 WHERE
13 {
14   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
15   {
16     {
17       <contact:225543300> nco:hasAffiliation ?affiliation .
18       ?affiliation nco:hasPostalAddress ?resource .
19     }
20     UNION
21     {
22       <contact:225543300> nco:hasAffiliation ?__1 .
23       ?__1 nco:org ?resource .
24     }
25     UNION
26     {
27       <contact:225543300> ?predicate ?resource .
28       FILTER(?predicate IN (nao:hasProperty, nco:hasPostalAddress)) .
29     }
30     UNION
31     {
32       FILTER(?resource IN (<contact:225543300>, <tel:+4917212345>, <tel:+4916134567>)) .
33     }
34
35     ?resource nao:hasProperty ?property .
36     ?property a ?propertyType .
37   }
38 }
39
40 # Delete related objects so that we can update them.
41 # Don't restrict the graph as we really must to get rid of all properties
42 # =================================================================================================
43 DELETE
44 {
45   ?resource a ?resourceType .
46 }
47 WHERE
48 {
49   {
50     <contact:225543300> nco:hasAffiliation ?affiliation .
51     ?affiliation nco:hasPostalAddress ?resource .
52   }
53   UNION
54   {
55     <contact:225543300> nco:hasAffiliation ?__1 .
56     ?__1 nco:org ?__2 .
57     ?__2 nco:hasPostalAddress ?resource .
58   }
59   UNION
60   {
61     <contact:225543300> nco:hasAffiliation ?__3 .
62     ?__3 nco:org ?resource .
63   }
64   UNION
65   {
66     <contact:225543300> ?predicate ?resource .
67
68     FILTER(?predicate IN (nao:hasProperty, nco:hasPostalAddress,
69                            nco:hasLocation, nco:hasAffiliation, nao:hasTag)) .
70
71     # FIXME: nco:hasTag should now show up here since tags are shared resources
72   }
73
74   ?resource a ?resourceType .
75 }
76
77 DELETE
78 {
79   ?resource a nco:EmailAddress .
80 }
81 WHERE
82 {
83   ?resource a nco:EmailAddress .
84   FILTER(?resource IN (<mailto:andre@andrews.com>)) .
85 }
86
87 DELETE
88 {
89   ?resource a nco:PhoneNumber .
90 }
91 WHERE
92 {
93   ?resource a nco:PhoneNumber .
94   FILTER(?resource IN (<tel:+4917212345>, <tel:+4916134567>)) .
95 }
96
97 # Delete the contact's properties so that we can update them nicely.
98 # Only nco:contactUID, nco:contactLocalUID and rdf:type must be preserved.
99 # =================================================================================================
100 DELETE
101 {
102   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
103   {
104     <contact:225543300> ?predicate ?object .
105   }
106 }
107 WHERE
108 {
109   # Restrict the graph to only remove our properties. It is an error if write contact properties
110   # that are handled by qtcontacts-tracker without putting them into our graph. Still other
111   # applications might want to attach properties we are not aware of.
112   # -----------------------------------------------------------------------------------------------
113   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
114   {
115     <contact:225543300> ?predicate ?object .
116     FILTER(?predicate NOT IN (nco:contactLocalUID,nco:contactUID,rdf:type)) .
117   }
118 }
119
120 # Write new contact data
121 # =================================================================================================
122 INSERT INTO <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
123 {
124     <contact:225543300> a nco:PersonContact
125     ; nie:contentCreated "2010-04-22T01:00:00Z"^^xsd:dateTime
126     ; nie:contentLastModified "2010-05-04T09:30:00Z"^^xsd:dateTime
127     ; nco:contactLocalUID "225543300"^^xsd:string
128     ; nco:gender nco:gender-male
129     ; nco:hasAffiliation _:Affiliation_Home1, _:Affiliation_Work2
130     ; nco:hobby "fishing"^^xsd:string
131     ; nco:nameFamily "Andrews"^^xsd:string
132     ; nco:nameGiven "Andre"^^xsd:string
133     ; nco:nameHonorificPrefix "Sir"^^xsd:string
134     ; nco:photo <file:///home/user/.contacts/avatars/default_avatar.png>
135     ; nao:hasProperty _:Anniversary3, _:SyncTarget4
136   . <mailto:andre@andrews.com>  a nco:EmailAddress
137     ; nco:emailAddress "andre@andrews.com"^^xsd:string
138   . <tel:+4916134567>  a nco:CellPhoneNumber
139     ; maemo:localPhoneNumber "6134567"^^xsd:string
140     ; nco:phoneNumber "+4916134567"^^xsd:string
141   . <tel:+4917212345> a nco:VoicePhoneNumber
142     ; maemo:localPhoneNumber "7212345"^^xsd:string
143     ; nco:phoneNumber "+4917212345"^^xsd:string
144   . _:Address5 a nco:DomesticDeliveryAddress
145     ; nco:country "Germany"^^xsd:string
146     ; nco:locality "Berlin"^^xsd:string
147     ; nco:streetAddress "Alexanderplatz 1"^^xsd:string
148   . _:Address6 a nco:ParcelDeliveryAddress
149     ; nco:country "Germany"^^xsd:string
150     ; nco:locality "Berlin"^^xsd:string
151     ; nco:streetAddress "Friedrichstrasse 105"^^xsd:string
152   . _:Affiliation_Home1 a nco:Affiliation
153     ; nco:hasEmailAddress <mailto:andre@andrews.com>
154     ; nco:hasPhoneNumber <tel:+4916134567>, <tel:+4917212345>
155     ; nco:hasPostalAddress _:Address5
156     ; nco:url "http://andrews.com/"^^xsd:string
157     ; rdfs:label "Home"^^xsd:string
158   . _:Affiliation_Work2 a nco:Affiliation
159     ; nco:hasPostalAddress _:Address6
160     ; nco:org _:Organization7
161     ; rdfs:label "Work"^^xsd:string
162   . _:Anniversary3 a nie:InformationElement, nao:Property
163     ; nao:hasProperty _:Anniversary_CalendarId8, _:Anniversary_Event9,
164                       _:Anniversary_OriginalDate10, _:Anniversary_SubType11
165     ; nao:propertyName "Anniversary"^^xsd:string
166   . _:Anniversary_CalendarId8 a nao:Property
167     ; nao:propertyName "CalendarId"^^xsd:string
168     ; nao:propertyValue "11223344"^^xsd:string
169   . _:Anniversary_Event9  a nao:Property
170     ; nao:propertyName "Event"^^xsd:string
171     ; nao:propertyValue "Hochzeit"^^xsd:string
172   . _:Anniversary_OriginalDate10 a nao:Property
173     ; nao:propertyName "OriginalDate"^^xsd:string
174     ; nao:propertyValue "2007-05-05T00:00:00Z"^^xsd:dateTime
175   . _:Anniversary_SubType11 a nao:Property
176     ; nao:propertyName "SubType"^^xsd:string
177     ; nao:propertyValue "Wedding"^^xsd:string
178   . _:Organization7 a nco:OrganizationContact
179     ; nco:logo <file:///home/user/.contacts/avatars/default_avatar.png>
180   . _:SyncTarget4 a nie:InformationElement, nao:Property
181     ; nao:hasProperty _:SyncTarget_SyncTarget12
182     ; nao:propertyName "SyncTarget"^^xsd:string
183   . _:SyncTarget_SyncTarget12  a nao:Property
184     ; nao:propertyName "SyncTarget"^^xsd:string
185     ; nao:propertyValue "addressbook"^^xsd:string
186 }
187
188 # Create a new UUID if he contact doesn't have one yet.
189 # =================================================================================================
190 INSERT INTO <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
191 {
192     <contact:225543300> nco:contactUID "<placeholder:guid>"^^xsd:string
193 }
194 WHERE
195 {
196   OPTIONAL { <contact:225543300> nco:contactUID ?_a_nco_contactUID . }
197   FILTER(!bound(?_a_nco_contactUID)) .
198 }