Changes: Make queries for custom properties of related objects more trivial.
[qtcontacts-tracker:qtcontacts-tracker.git] / tests / ut_qtcontacts_trackerplugin_querybuilder / data / 202-save-request-4.rq
1 # Delete custom fields of related objects and custom details
2 # =================================================================================================
3 DELETE
4 {
5   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
6   {
7     ?property a nao:Property, rdfs:Resource .
8   }
9 }
10 WHERE
11 {
12   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
13   {
14     {
15       <contact:254908088> nco:hasAffiliation [ nco:hasPostalAddress ?resource ] .
16     }
17     UNION
18     {
19       <contact:254908088> nco:hasAffiliation [ nco:org ?resource ] .
20     }
21     UNION
22     {
23       <contact:254908088> ?predicate ?resource .
24       FILTER(?predicate IN (nao:hasProperty, nco:hasPostalAddress)) .
25     }
26     UNION
27     {
28       ?resource a rdfs:Resource .
29       FILTER(?resource IN (<contact:254908088>, <tel:+493054321>)) .
30     }
31
32     ?resource nao:hasProperty ?property .
33   }
34 }
35
36 # Delete properties related objects so that we can update them.
37 # =================================================================================================
38 DELETE
39 {
40   ?resource a rdfs:Resource .
41 }
42 WHERE
43 {
44   {
45     <contact:254908088> nco:hasAffiliation [ nco:hasPostalAddress ?resource ] .
46   }
47   UNION
48   {
49     <contact:254908088> nco:hasAffiliation [ nco:org [ nco:hasPostalAddress ?resource ] ] .
50   }
51   UNION
52   {
53     <contact:254908088> nco:hasAffiliation [ nco:org ?resource ] .
54   }
55   UNION
56   {
57     <contact:254908088> ?predicate ?resource .
58
59     FILTER(?predicate IN (nao:hasProperty, nco:hasPostalAddress,
60                           nco:hasLocation, nco:hasAffiliation)) .
61
62     # FIXME: nco:hasTag should now show up here since tags are shared resources
63   }
64
65   ?resource a rdfs:Resource .
66 }
67
68 DELETE
69 {
70   ?resource a nco:PhoneNumber .
71 }
72 WHERE
73 {
74   ?resource a nco:PhoneNumber .
75   FILTER(?resource IN (<tel:+493054321>)) .
76 }
77
78 # Delete the contact's properties so that we can update them nicely.
79 # Only nco:contactLocalUID must be preserved as we assume to know the GUID of this contact
80 # and want to preserve it.
81 # =================================================================================================
82 DELETE
83 {
84   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
85   {
86     <contact:254908088> ?predicate ?object .
87   }
88 }
89 WHERE
90 {
91   GRAPH <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
92   {
93     <contact:254908088> ?predicate ?object .
94     FILTER(?predicate NOT IN (nco:contactLocalUID,rdf:type)) .
95   }
96 }
97
98 # Write new contact data
99 # =================================================================================================
100 INSERT INTO <urn:uuid:08070f5c-a334-4d19-a8b0-12a3071bfab9>
101 {
102     <contact:254908088> a nco:PersonContact
103     ; nie:contentCreated "2010-04-22T04:00:00Z"^^xsd:dateTime
104     ; nie:contentLastModified "2010-05-04T09:30:00Z"^^xsd:dateTime
105     ; nco:contactLocalUID "254908088"^^xsd:string
106     ; nco:contactUID "167e43eb-2c61-4eaf-a24e-3eea2383a288"^^xsd:string
107     ; nco:hasAffiliation _:Affiliation_Work1
108     ; nco:nameFamily "Daniels"^^xsd:string
109     ; nco:nameGiven "Dirk"^^xsd:string
110   . <tel:+493054321>  a nco:FaxNumber, nco:VoicePhoneNumber
111     ; maemo:localPhoneNumber "3054321"^^xsd:string
112     ; nco:phoneNumber "+493054321"^^xsd:string
113   . _:Affiliation_Work1 a nco:Affiliation
114     ; nco:department "R&D"^^xsd:string
115     ; nco:hasPhoneNumber <tel:+493054321>
116     ; nco:title "Chief Plumber"^^xsd:string
117     ; nco:websiteUrl "http://daniels.com/"^^xsd:string
118     ; rdfs:label "Work"^^xsd:string
119 }