wordlift-sdk 2.9.1__py3-none-any.whl → 2.10.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. wordlift_sdk/__init__.py +1 -1
  2. wordlift_sdk/render/__init__.py +30 -0
  3. wordlift_sdk/render/browser.py +132 -0
  4. wordlift_sdk/render/cleanup_options.py +24 -0
  5. wordlift_sdk/render/html_renderer.py +86 -0
  6. wordlift_sdk/render/render_options.py +21 -0
  7. wordlift_sdk/render/rendered_page.py +13 -0
  8. wordlift_sdk/render/xhtml_cleaner.py +126 -0
  9. wordlift_sdk/structured_data/__init__.py +27 -0
  10. wordlift_sdk/structured_data/agent.py +49 -0
  11. wordlift_sdk/structured_data/agent_generator.py +12 -0
  12. wordlift_sdk/structured_data/batch.py +220 -0
  13. wordlift_sdk/structured_data/constants.py +1 -0
  14. wordlift_sdk/structured_data/dataset_resolver.py +32 -0
  15. wordlift_sdk/structured_data/debug.py +23 -0
  16. wordlift_sdk/structured_data/engine.py +2875 -0
  17. wordlift_sdk/structured_data/inputs.py +58 -0
  18. wordlift_sdk/structured_data/io.py +44 -0
  19. wordlift_sdk/structured_data/materialization.py +70 -0
  20. wordlift_sdk/structured_data/models.py +48 -0
  21. wordlift_sdk/structured_data/orchestrator.py +194 -0
  22. wordlift_sdk/structured_data/rendering.py +43 -0
  23. wordlift_sdk/structured_data/schema_guide.py +17 -0
  24. wordlift_sdk/structured_data/structured_data_engine.py +58 -0
  25. wordlift_sdk/structured_data/validation.py +31 -0
  26. wordlift_sdk/structured_data/yarrrml_pipeline.py +34 -0
  27. wordlift_sdk/url_source/__init__.py +7 -2
  28. wordlift_sdk/validation/__init__.py +7 -0
  29. wordlift_sdk/validation/generator.py +446 -0
  30. wordlift_sdk/validation/shacl.py +205 -0
  31. wordlift_sdk/validation/shacls/__init__.py +1 -0
  32. wordlift_sdk/validation/shacls/google-article.ttl +148 -0
  33. wordlift_sdk/validation/shacls/google-book.ttl +660 -0
  34. wordlift_sdk/validation/shacls/google-breadcrumb.ttl +33 -0
  35. wordlift_sdk/validation/shacls/google-carousel.ttl +37 -0
  36. wordlift_sdk/validation/shacls/google-carousels-beta.ttl +291 -0
  37. wordlift_sdk/validation/shacls/google-course.ttl +43 -0
  38. wordlift_sdk/validation/shacls/google-dataset.ttl +146 -0
  39. wordlift_sdk/validation/shacls/google-discussion-forum.ttl +247 -0
  40. wordlift_sdk/validation/shacls/google-education-qa.ttl +75 -0
  41. wordlift_sdk/validation/shacls/google-employer-rating.ttl +40 -0
  42. wordlift_sdk/validation/shacls/google-event.ttl +46 -0
  43. wordlift_sdk/validation/shacls/google-factcheck.ttl +86 -0
  44. wordlift_sdk/validation/shacls/google-faqpage.ttl +38 -0
  45. wordlift_sdk/validation/shacls/google-image-license-metadata.ttl +93 -0
  46. wordlift_sdk/validation/shacls/google-job-posting.ttl +74 -0
  47. wordlift_sdk/validation/shacls/google-local-business.ttl +483 -0
  48. wordlift_sdk/validation/shacls/google-loyalty-program.ttl +61 -0
  49. wordlift_sdk/validation/shacls/google-math-solvers.ttl +63 -0
  50. wordlift_sdk/validation/shacls/google-merchant-listing.ttl +435 -0
  51. wordlift_sdk/validation/shacls/google-movie.ttl +44 -0
  52. wordlift_sdk/validation/shacls/google-organization.ttl +180 -0
  53. wordlift_sdk/validation/shacls/google-paywalled-content.ttl +34 -0
  54. wordlift_sdk/validation/shacls/google-product-snippet.ttl +121 -0
  55. wordlift_sdk/validation/shacls/google-product-variants.ttl +64 -0
  56. wordlift_sdk/validation/shacls/google-profile-page.ttl +130 -0
  57. wordlift_sdk/validation/shacls/google-qapage.ttl +195 -0
  58. wordlift_sdk/validation/shacls/google-recipe.ttl +201 -0
  59. wordlift_sdk/validation/shacls/google-return-policy.ttl +122 -0
  60. wordlift_sdk/validation/shacls/google-review-snippet.ttl +87 -0
  61. wordlift_sdk/validation/shacls/google-shipping-policy.ttl +606 -0
  62. wordlift_sdk/validation/shacls/google-software-app.ttl +40 -0
  63. wordlift_sdk/validation/shacls/google-speakable.ttl +20 -0
  64. wordlift_sdk/validation/shacls/google-vacation-rental.ttl +278 -0
  65. wordlift_sdk/validation/shacls/google-video.ttl +149 -0
  66. wordlift_sdk/validation/shacls/schemaorg-grammar.ttl +20540 -0
  67. {wordlift_sdk-2.9.1.dist-info → wordlift_sdk-2.10.2.dist-info}/METADATA +3 -1
  68. {wordlift_sdk-2.9.1.dist-info → wordlift_sdk-2.10.2.dist-info}/RECORD +69 -5
  69. {wordlift_sdk-2.9.1.dist-info → wordlift_sdk-2.10.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,435 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-merchant-listing/> .
2
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
3
+ @prefix schema: <http://schema.org/> .
4
+
5
+ # Source: https://developers.google.com/search/docs/appearance/structured-data/merchant-listing
6
+ # Generated: 2026-01-13T11:23:41Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_3DModelShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:3DModel ;
12
+ sh:property [
13
+ sh:path schema:contentUrl ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:encoding ;
18
+ sh:minCount 1 ;
19
+ ] ;
20
+ .
21
+
22
+ :google_CertificationShape
23
+ a sh:NodeShape ;
24
+ sh:targetClass schema:Certification ;
25
+ sh:property [
26
+ sh:path schema:issuedBy ;
27
+ sh:minCount 1 ;
28
+ ] ;
29
+ sh:property [
30
+ sh:path schema:certificationIdentification ;
31
+ sh:minCount 1 ;
32
+ sh:severity sh:Warning ;
33
+ sh:message "Recommended by Google: certificationIdentification." ;
34
+ ] ;
35
+ sh:property [
36
+ sh:path schema:certificationRating ;
37
+ sh:minCount 1 ;
38
+ sh:severity sh:Warning ;
39
+ sh:message "Recommended by Google: certificationRating." ;
40
+ ] ;
41
+ .
42
+
43
+ :google_OfferShape
44
+ a sh:NodeShape ;
45
+ sh:targetClass schema:Offer ;
46
+ sh:property [
47
+ sh:path schema:price ;
48
+ sh:minCount 1 ;
49
+ ] ;
50
+ sh:property [
51
+ sh:path schema:priceCurrency ;
52
+ sh:minCount 1 ;
53
+ ] ;
54
+ sh:property [
55
+ sh:path schema:priceSpecification ;
56
+ sh:minCount 1 ;
57
+ ] ;
58
+ sh:property [
59
+ sh:path schema:availability ;
60
+ sh:minCount 1 ;
61
+ sh:severity sh:Warning ;
62
+ sh:message "Recommended by Google: availability." ;
63
+ ] ;
64
+ sh:property [
65
+ sh:path schema:hasMerchantReturnPolicy ;
66
+ sh:minCount 1 ;
67
+ sh:severity sh:Warning ;
68
+ sh:message "Recommended by Google: hasMerchantReturnPolicy." ;
69
+ ] ;
70
+ sh:property [
71
+ sh:path schema:itemCondition ;
72
+ sh:minCount 1 ;
73
+ sh:severity sh:Warning ;
74
+ sh:message "Recommended by Google: itemCondition." ;
75
+ ] ;
76
+ sh:property [
77
+ sh:path schema:shippingDetails ;
78
+ sh:minCount 1 ;
79
+ sh:severity sh:Warning ;
80
+ sh:message "Recommended by Google: shippingDetails." ;
81
+ ] ;
82
+ sh:property [
83
+ sh:path schema:url ;
84
+ sh:minCount 1 ;
85
+ sh:severity sh:Warning ;
86
+ sh:message "Recommended by Google: url." ;
87
+ ] ;
88
+ .
89
+
90
+ :google_OfferShippingDetailsShape
91
+ a sh:NodeShape ;
92
+ sh:targetClass schema:OfferShippingDetails ;
93
+ sh:property [
94
+ sh:path schema:addressCountry ;
95
+ sh:minCount 1 ;
96
+ ] ;
97
+ sh:property [
98
+ sh:path schema:currency ;
99
+ sh:minCount 1 ;
100
+ ] ;
101
+ sh:property [
102
+ sh:path schema:deliveryTime ;
103
+ sh:minCount 1 ;
104
+ ] ;
105
+ sh:property [
106
+ sh:path schema:shippingDestination ;
107
+ sh:minCount 1 ;
108
+ ] ;
109
+ sh:property [
110
+ sh:path schema:shippingRate ;
111
+ sh:minCount 1 ;
112
+ ] ;
113
+ sh:property [
114
+ sh:path schema:value ;
115
+ sh:minCount 1 ;
116
+ ] ;
117
+ sh:property [
118
+ sh:path schema:addressRegion ;
119
+ sh:minCount 1 ;
120
+ sh:severity sh:Warning ;
121
+ sh:message "Recommended by Google: addressRegion." ;
122
+ ] ;
123
+ sh:property [
124
+ sh:path schema:postalCode ;
125
+ sh:minCount 1 ;
126
+ sh:severity sh:Warning ;
127
+ sh:message "Recommended by Google: postalCode." ;
128
+ ] ;
129
+ .
130
+
131
+ :google_PeopleAudienceShape
132
+ a sh:NodeShape ;
133
+ sh:targetClass schema:PeopleAudience ;
134
+ sh:property [
135
+ sh:path schema:suggestedGender ;
136
+ sh:minCount 1 ;
137
+ sh:severity sh:Warning ;
138
+ sh:message "Recommended by Google: suggestedGender." ;
139
+ ] ;
140
+ sh:property [
141
+ sh:path schema:suggestedMaxAge ;
142
+ sh:minCount 1 ;
143
+ sh:severity sh:Warning ;
144
+ sh:message "Recommended by Google: suggestedMaxAge." ;
145
+ ] ;
146
+ sh:property [
147
+ sh:path schema:suggestedMinAge ;
148
+ sh:minCount 1 ;
149
+ sh:severity sh:Warning ;
150
+ sh:message "Recommended by Google: suggestedMinAge." ;
151
+ ] ;
152
+ .
153
+
154
+ :google_ProductShape
155
+ a sh:NodeShape ;
156
+ sh:targetClass schema:Product ;
157
+ sh:property [
158
+ sh:path schema:image ;
159
+ sh:minCount 1 ;
160
+ ] ;
161
+ sh:property [
162
+ sh:path schema:name ;
163
+ sh:minCount 1 ;
164
+ ] ;
165
+ sh:property [
166
+ sh:path schema:offers ;
167
+ sh:minCount 1 ;
168
+ ] ;
169
+ sh:property [
170
+ sh:path schema:aggregateRating ;
171
+ sh:minCount 1 ;
172
+ sh:severity sh:Warning ;
173
+ sh:message "Recommended by Google: aggregateRating." ;
174
+ ] ;
175
+ sh:property [
176
+ sh:path schema:audience ;
177
+ sh:minCount 1 ;
178
+ sh:severity sh:Warning ;
179
+ sh:message "Recommended by Google: audience." ;
180
+ ] ;
181
+ sh:property [
182
+ sh:path schema:brand ;
183
+ sh:minCount 1 ;
184
+ sh:severity sh:Warning ;
185
+ sh:message "Recommended by Google: brand." ;
186
+ ] ;
187
+ sh:property [
188
+ sh:path schema:color ;
189
+ sh:minCount 1 ;
190
+ sh:severity sh:Warning ;
191
+ sh:message "Recommended by Google: color." ;
192
+ ] ;
193
+ sh:property [
194
+ sh:path schema:description ;
195
+ sh:minCount 1 ;
196
+ sh:severity sh:Warning ;
197
+ sh:message "Recommended by Google: description." ;
198
+ ] ;
199
+ sh:property [
200
+ sh:path schema:gtin ;
201
+ sh:minCount 1 ;
202
+ sh:severity sh:Warning ;
203
+ sh:message "Recommended by Google: gtin." ;
204
+ ] ;
205
+ sh:property [
206
+ sh:path schema:gtin12 ;
207
+ sh:minCount 1 ;
208
+ sh:severity sh:Warning ;
209
+ sh:message "Recommended by Google: gtin12." ;
210
+ ] ;
211
+ sh:property [
212
+ sh:path schema:gtin13 ;
213
+ sh:minCount 1 ;
214
+ sh:severity sh:Warning ;
215
+ sh:message "Recommended by Google: gtin13." ;
216
+ ] ;
217
+ sh:property [
218
+ sh:path schema:gtin14 ;
219
+ sh:minCount 1 ;
220
+ sh:severity sh:Warning ;
221
+ sh:message "Recommended by Google: gtin14." ;
222
+ ] ;
223
+ sh:property [
224
+ sh:path schema:gtin8 ;
225
+ sh:minCount 1 ;
226
+ sh:severity sh:Warning ;
227
+ sh:message "Recommended by Google: gtin8." ;
228
+ ] ;
229
+ sh:property [
230
+ sh:path schema:hasCertification ;
231
+ sh:minCount 1 ;
232
+ sh:severity sh:Warning ;
233
+ sh:message "Recommended by Google: hasCertification." ;
234
+ ] ;
235
+ sh:property [
236
+ sh:path schema:inProductGroupWithID ;
237
+ sh:minCount 1 ;
238
+ sh:severity sh:Warning ;
239
+ sh:message "Recommended by Google: inProductGroupWithID." ;
240
+ ] ;
241
+ sh:property [
242
+ sh:path schema:isVariantOf ;
243
+ sh:minCount 1 ;
244
+ sh:severity sh:Warning ;
245
+ sh:message "Recommended by Google: isVariantOf." ;
246
+ ] ;
247
+ sh:property [
248
+ sh:path schema:isbn ;
249
+ sh:minCount 1 ;
250
+ sh:severity sh:Warning ;
251
+ sh:message "Recommended by Google: isbn." ;
252
+ ] ;
253
+ sh:property [
254
+ sh:path schema:material ;
255
+ sh:minCount 1 ;
256
+ sh:severity sh:Warning ;
257
+ sh:message "Recommended by Google: material." ;
258
+ ] ;
259
+ sh:property [
260
+ sh:path schema:mpn ;
261
+ sh:minCount 1 ;
262
+ sh:severity sh:Warning ;
263
+ sh:message "Recommended by Google: mpn." ;
264
+ ] ;
265
+ sh:property [
266
+ sh:path schema:pattern ;
267
+ sh:minCount 1 ;
268
+ sh:severity sh:Warning ;
269
+ sh:message "Recommended by Google: pattern." ;
270
+ ] ;
271
+ sh:property [
272
+ sh:path schema:review ;
273
+ sh:minCount 1 ;
274
+ sh:severity sh:Warning ;
275
+ sh:message "Recommended by Google: review." ;
276
+ ] ;
277
+ sh:property [
278
+ sh:path schema:size ;
279
+ sh:minCount 1 ;
280
+ sh:severity sh:Warning ;
281
+ sh:message "Recommended by Google: size." ;
282
+ ] ;
283
+ sh:property [
284
+ sh:path schema:sku ;
285
+ sh:minCount 1 ;
286
+ sh:severity sh:Warning ;
287
+ sh:message "Recommended by Google: sku." ;
288
+ ] ;
289
+ sh:property [
290
+ sh:path schema:subjectOf ;
291
+ sh:minCount 1 ;
292
+ sh:severity sh:Warning ;
293
+ sh:message "Recommended by Google: subjectOf." ;
294
+ ] ;
295
+ .
296
+
297
+ :google_QuantitativeValueShape
298
+ a sh:NodeShape ;
299
+ sh:targetClass schema:QuantitativeValue ;
300
+ sh:property [
301
+ sh:path schema:unitCode ;
302
+ sh:minCount 1 ;
303
+ ] ;
304
+ sh:property [
305
+ sh:path schema:value ;
306
+ sh:minCount 1 ;
307
+ ] ;
308
+ sh:property [
309
+ sh:path schema:valueReference ;
310
+ sh:minCount 1 ;
311
+ sh:severity sh:Warning ;
312
+ sh:message "Recommended by Google: valueReference." ;
313
+ ] ;
314
+ .
315
+
316
+ :google_ShippingDeliveryTimeShape
317
+ a sh:NodeShape ;
318
+ sh:targetClass schema:ShippingDeliveryTime ;
319
+ sh:property [
320
+ sh:path schema:applicableCountry ;
321
+ sh:minCount 1 ;
322
+ ] ;
323
+ sh:property [
324
+ sh:path schema:maxValue ;
325
+ sh:minCount 1 ;
326
+ ] ;
327
+ sh:property [
328
+ sh:path schema:minValue ;
329
+ sh:minCount 1 ;
330
+ ] ;
331
+ sh:property [
332
+ sh:path schema:returnPolicyCategory ;
333
+ sh:minCount 1 ;
334
+ ] ;
335
+ sh:property [
336
+ sh:path schema:unitCode ;
337
+ sh:minCount 1 ;
338
+ ] ;
339
+ sh:property [
340
+ sh:path schema:handlingTime ;
341
+ sh:minCount 1 ;
342
+ sh:severity sh:Warning ;
343
+ sh:message "Recommended by Google: handlingTime." ;
344
+ ] ;
345
+ sh:property [
346
+ sh:path schema:merchantReturnDays ;
347
+ sh:minCount 1 ;
348
+ sh:severity sh:Warning ;
349
+ sh:message "Recommended by Google: merchantReturnDays." ;
350
+ ] ;
351
+ sh:property [
352
+ sh:path schema:returnFees ;
353
+ sh:minCount 1 ;
354
+ sh:severity sh:Warning ;
355
+ sh:message "Recommended by Google: returnFees." ;
356
+ ] ;
357
+ sh:property [
358
+ sh:path schema:returnMethod ;
359
+ sh:minCount 1 ;
360
+ sh:severity sh:Warning ;
361
+ sh:message "Recommended by Google: returnMethod." ;
362
+ ] ;
363
+ sh:property [
364
+ sh:path schema:returnShippingFeesAmount ;
365
+ sh:minCount 1 ;
366
+ sh:severity sh:Warning ;
367
+ sh:message "Recommended by Google: returnShippingFeesAmount." ;
368
+ ] ;
369
+ sh:property [
370
+ sh:path schema:transitTime ;
371
+ sh:minCount 1 ;
372
+ sh:severity sh:Warning ;
373
+ sh:message "Recommended by Google: transitTime." ;
374
+ ] ;
375
+ .
376
+
377
+ :google_SizeSpecificationShape
378
+ a sh:NodeShape ;
379
+ sh:targetClass schema:SizeSpecification ;
380
+ sh:property [
381
+ sh:path schema:name ;
382
+ sh:minCount 1 ;
383
+ sh:severity sh:Warning ;
384
+ sh:message "Recommended by Google: name." ;
385
+ ] ;
386
+ sh:property [
387
+ sh:path schema:sizeGroup ;
388
+ sh:minCount 1 ;
389
+ sh:severity sh:Warning ;
390
+ sh:message "Recommended by Google: sizeGroup." ;
391
+ ] ;
392
+ sh:property [
393
+ sh:path schema:sizeSystem ;
394
+ sh:minCount 1 ;
395
+ sh:severity sh:Warning ;
396
+ sh:message "Recommended by Google: sizeSystem." ;
397
+ ] ;
398
+ .
399
+
400
+ :google_UnitPriceSpecificationShape
401
+ a sh:NodeShape ;
402
+ sh:targetClass schema:UnitPriceSpecification ;
403
+ sh:property [
404
+ sh:path schema:price ;
405
+ sh:minCount 1 ;
406
+ ] ;
407
+ sh:property [
408
+ sh:path schema:priceCurrency ;
409
+ sh:minCount 1 ;
410
+ ] ;
411
+ sh:property [
412
+ sh:path schema:membershipPointsEarned ;
413
+ sh:minCount 1 ;
414
+ sh:severity sh:Warning ;
415
+ sh:message "Recommended by Google: membershipPointsEarned." ;
416
+ ] ;
417
+ sh:property [
418
+ sh:path schema:priceType ;
419
+ sh:minCount 1 ;
420
+ sh:severity sh:Warning ;
421
+ sh:message "Recommended by Google: priceType." ;
422
+ ] ;
423
+ sh:property [
424
+ sh:path schema:referenceQuantity ;
425
+ sh:minCount 1 ;
426
+ sh:severity sh:Warning ;
427
+ sh:message "Recommended by Google: referenceQuantity." ;
428
+ ] ;
429
+ sh:property [
430
+ sh:path schema:validForMemberTier ;
431
+ sh:minCount 1 ;
432
+ sh:severity sh:Warning ;
433
+ sh:message "Recommended by Google: validForMemberTier." ;
434
+ ] ;
435
+ .
@@ -0,0 +1,44 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-movie/> .
2
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
3
+ @prefix schema: <http://schema.org/> .
4
+
5
+ # Source: https://developers.google.com/search/docs/appearance/structured-data/movie
6
+ # Generated: 2026-01-13T11:23:35Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_MovieShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:Movie ;
12
+ sh:property [
13
+ sh:path schema:image ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:name ;
18
+ sh:minCount 1 ;
19
+ ] ;
20
+ sh:property [
21
+ sh:path schema:aggregateRating ;
22
+ sh:minCount 1 ;
23
+ sh:severity sh:Warning ;
24
+ sh:message "Recommended by Google: aggregateRating." ;
25
+ ] ;
26
+ sh:property [
27
+ sh:path schema:dateCreated ;
28
+ sh:minCount 1 ;
29
+ sh:severity sh:Warning ;
30
+ sh:message "Recommended by Google: dateCreated." ;
31
+ ] ;
32
+ sh:property [
33
+ sh:path schema:director ;
34
+ sh:minCount 1 ;
35
+ sh:severity sh:Warning ;
36
+ sh:message "Recommended by Google: director." ;
37
+ ] ;
38
+ sh:property [
39
+ sh:path schema:review ;
40
+ sh:minCount 1 ;
41
+ sh:severity sh:Warning ;
42
+ sh:message "Recommended by Google: review." ;
43
+ ] ;
44
+ .
@@ -0,0 +1,180 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-organization/> .
2
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
3
+ @prefix schema: <http://schema.org/> .
4
+
5
+ # Source: https://developers.google.com/search/docs/appearance/structured-data/organization
6
+ # Generated: 2026-01-13T11:23:36Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_OrganizationShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:Organization ;
12
+ sh:property [
13
+ sh:path schema:address ;
14
+ sh:minCount 1 ;
15
+ sh:severity sh:Warning ;
16
+ sh:message "Recommended by Google: address." ;
17
+ ] ;
18
+ sh:property [
19
+ sh:path schema:addressCountry ;
20
+ sh:minCount 1 ;
21
+ sh:severity sh:Warning ;
22
+ sh:message "Recommended by Google: addressCountry." ;
23
+ ] ;
24
+ sh:property [
25
+ sh:path schema:addressLocality ;
26
+ sh:minCount 1 ;
27
+ sh:severity sh:Warning ;
28
+ sh:message "Recommended by Google: addressLocality." ;
29
+ ] ;
30
+ sh:property [
31
+ sh:path schema:addressRegion ;
32
+ sh:minCount 1 ;
33
+ sh:severity sh:Warning ;
34
+ sh:message "Recommended by Google: addressRegion." ;
35
+ ] ;
36
+ sh:property [
37
+ sh:path schema:alternateName ;
38
+ sh:minCount 1 ;
39
+ sh:severity sh:Warning ;
40
+ sh:message "Recommended by Google: alternateName." ;
41
+ ] ;
42
+ sh:property [
43
+ sh:path schema:contactPoint ;
44
+ sh:minCount 1 ;
45
+ sh:severity sh:Warning ;
46
+ sh:message "Recommended by Google: contactPoint." ;
47
+ ] ;
48
+ sh:property [
49
+ sh:path schema:description ;
50
+ sh:minCount 1 ;
51
+ sh:severity sh:Warning ;
52
+ sh:message "Recommended by Google: description." ;
53
+ ] ;
54
+ sh:property [
55
+ sh:path schema:duns ;
56
+ sh:minCount 1 ;
57
+ sh:severity sh:Warning ;
58
+ sh:message "Recommended by Google: duns." ;
59
+ ] ;
60
+ sh:property [
61
+ sh:path schema:email ;
62
+ sh:minCount 1 ;
63
+ sh:severity sh:Warning ;
64
+ sh:message "Recommended by Google: email." ;
65
+ ] ;
66
+ sh:property [
67
+ sh:path schema:foundingDate ;
68
+ sh:minCount 1 ;
69
+ sh:severity sh:Warning ;
70
+ sh:message "Recommended by Google: foundingDate." ;
71
+ ] ;
72
+ sh:property [
73
+ sh:path schema:globalLocationNumber ;
74
+ sh:minCount 1 ;
75
+ sh:severity sh:Warning ;
76
+ sh:message "Recommended by Google: globalLocationNumber." ;
77
+ ] ;
78
+ sh:property [
79
+ sh:path schema:hasMemberProgram ;
80
+ sh:minCount 1 ;
81
+ sh:severity sh:Warning ;
82
+ sh:message "Recommended by Google: hasMemberProgram." ;
83
+ ] ;
84
+ sh:property [
85
+ sh:path schema:hasMerchantReturnPolicy ;
86
+ sh:minCount 1 ;
87
+ sh:severity sh:Warning ;
88
+ sh:message "Recommended by Google: hasMerchantReturnPolicy." ;
89
+ ] ;
90
+ sh:property [
91
+ sh:path schema:hasShippingService ;
92
+ sh:minCount 1 ;
93
+ sh:severity sh:Warning ;
94
+ sh:message "Recommended by Google: hasShippingService." ;
95
+ ] ;
96
+ sh:property [
97
+ sh:path schema:iso6523Code ;
98
+ sh:minCount 1 ;
99
+ sh:severity sh:Warning ;
100
+ sh:message "Recommended by Google: iso6523Code." ;
101
+ ] ;
102
+ sh:property [
103
+ sh:path schema:legalName ;
104
+ sh:minCount 1 ;
105
+ sh:severity sh:Warning ;
106
+ sh:message "Recommended by Google: legalName." ;
107
+ ] ;
108
+ sh:property [
109
+ sh:path schema:leiCode ;
110
+ sh:minCount 1 ;
111
+ sh:severity sh:Warning ;
112
+ sh:message "Recommended by Google: leiCode." ;
113
+ ] ;
114
+ sh:property [
115
+ sh:path schema:logo ;
116
+ sh:minCount 1 ;
117
+ sh:severity sh:Warning ;
118
+ sh:message "Recommended by Google: logo." ;
119
+ ] ;
120
+ sh:property [
121
+ sh:path schema:naics ;
122
+ sh:minCount 1 ;
123
+ sh:severity sh:Warning ;
124
+ sh:message "Recommended by Google: naics." ;
125
+ ] ;
126
+ sh:property [
127
+ sh:path schema:name ;
128
+ sh:minCount 1 ;
129
+ sh:severity sh:Warning ;
130
+ sh:message "Recommended by Google: name." ;
131
+ ] ;
132
+ sh:property [
133
+ sh:path schema:numberOfEmployees ;
134
+ sh:minCount 1 ;
135
+ sh:severity sh:Warning ;
136
+ sh:message "Recommended by Google: numberOfEmployees." ;
137
+ ] ;
138
+ sh:property [
139
+ sh:path schema:postalCode ;
140
+ sh:minCount 1 ;
141
+ sh:severity sh:Warning ;
142
+ sh:message "Recommended by Google: postalCode." ;
143
+ ] ;
144
+ sh:property [
145
+ sh:path schema:sameAs ;
146
+ sh:minCount 1 ;
147
+ sh:severity sh:Warning ;
148
+ sh:message "Recommended by Google: sameAs." ;
149
+ ] ;
150
+ sh:property [
151
+ sh:path schema:streetAddress ;
152
+ sh:minCount 1 ;
153
+ sh:severity sh:Warning ;
154
+ sh:message "Recommended by Google: streetAddress." ;
155
+ ] ;
156
+ sh:property [
157
+ sh:path schema:taxID ;
158
+ sh:minCount 1 ;
159
+ sh:severity sh:Warning ;
160
+ sh:message "Recommended by Google: taxID." ;
161
+ ] ;
162
+ sh:property [
163
+ sh:path schema:telephone ;
164
+ sh:minCount 1 ;
165
+ sh:severity sh:Warning ;
166
+ sh:message "Recommended by Google: telephone." ;
167
+ ] ;
168
+ sh:property [
169
+ sh:path schema:url ;
170
+ sh:minCount 1 ;
171
+ sh:severity sh:Warning ;
172
+ sh:message "Recommended by Google: url." ;
173
+ ] ;
174
+ sh:property [
175
+ sh:path schema:vatID ;
176
+ sh:minCount 1 ;
177
+ sh:severity sh:Warning ;
178
+ sh:message "Recommended by Google: vatID." ;
179
+ ] ;
180
+ .
@@ -0,0 +1,34 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-paywalled-content/> .
2
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
3
+ @prefix schema: <http://schema.org/> .
4
+
5
+ # Source: https://developers.google.com/search/docs/appearance/structured-data/paywalled-content
6
+ # Generated: 2026-01-13T11:23:59Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_CreativeWorkShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:CreativeWork ;
12
+ sh:property [
13
+ sh:path schema:isAccessibleForFree ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:cssSelector ;
18
+ sh:minCount 1 ;
19
+ sh:severity sh:Warning ;
20
+ sh:message "Recommended by Google: cssSelector." ;
21
+ ] ;
22
+ sh:property [
23
+ sh:path schema:hasPart ;
24
+ sh:minCount 1 ;
25
+ sh:severity sh:Warning ;
26
+ sh:message "Recommended by Google: hasPart." ;
27
+ ] ;
28
+ sh:property [
29
+ sh:path schema:type ;
30
+ sh:minCount 1 ;
31
+ sh:severity sh:Warning ;
32
+ sh:message "Recommended by Google: type." ;
33
+ ] ;
34
+ .