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,121 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-product-snippet/> .
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/product-snippet
6
+ # Generated: 2026-01-13T11:23:39Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_AggregateOfferShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:AggregateOffer ;
12
+ sh:property [
13
+ sh:path schema:lowPrice ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:priceCurrency ;
18
+ sh:minCount 1 ;
19
+ ] ;
20
+ sh:property [
21
+ sh:path schema:highPrice ;
22
+ sh:minCount 1 ;
23
+ sh:severity sh:Warning ;
24
+ sh:message "Recommended by Google: highPrice." ;
25
+ ] ;
26
+ sh:property [
27
+ sh:path schema:offerCount ;
28
+ sh:minCount 1 ;
29
+ sh:severity sh:Warning ;
30
+ sh:message "Recommended by Google: offerCount." ;
31
+ ] ;
32
+ .
33
+
34
+ :google_OfferShape
35
+ a sh:NodeShape ;
36
+ sh:targetClass schema:Offer ;
37
+ sh:property [
38
+ sh:path schema:price ;
39
+ sh:minCount 1 ;
40
+ ] ;
41
+ sh:property [
42
+ sh:path schema:availability ;
43
+ sh:minCount 1 ;
44
+ sh:severity sh:Warning ;
45
+ sh:message "Recommended by Google: availability." ;
46
+ ] ;
47
+ sh:property [
48
+ sh:path schema:priceCurrency ;
49
+ sh:minCount 1 ;
50
+ sh:severity sh:Warning ;
51
+ sh:message "Recommended by Google: priceCurrency." ;
52
+ ] ;
53
+ sh:property [
54
+ sh:path schema:priceValidUntil ;
55
+ sh:minCount 1 ;
56
+ sh:severity sh:Warning ;
57
+ sh:message "Recommended by Google: priceValidUntil." ;
58
+ ] ;
59
+ .
60
+
61
+ :google_ProductShape
62
+ a sh:NodeShape ;
63
+ sh:targetClass schema:Product ;
64
+ sh:property [
65
+ sh:path schema:itemListElement ;
66
+ sh:minCount 1 ;
67
+ ] ;
68
+ sh:property [
69
+ sh:path schema:name ;
70
+ sh:minCount 1 ;
71
+ ] ;
72
+ sh:property [
73
+ sh:path schema:review ;
74
+ sh:minCount 1 ;
75
+ ] ;
76
+ sh:property [
77
+ sh:path schema:aggregateRating ;
78
+ sh:minCount 1 ;
79
+ sh:severity sh:Warning ;
80
+ sh:message "Recommended by Google: aggregateRating." ;
81
+ ] ;
82
+ sh:property [
83
+ sh:path schema:negativeNotes ;
84
+ sh:minCount 1 ;
85
+ sh:severity sh:Warning ;
86
+ sh:message "Recommended by Google: negativeNotes." ;
87
+ ] ;
88
+ sh:property [
89
+ sh:path schema:offers ;
90
+ sh:minCount 1 ;
91
+ sh:severity sh:Warning ;
92
+ sh:message "Recommended by Google: offers." ;
93
+ ] ;
94
+ sh:property [
95
+ sh:path schema:position ;
96
+ sh:minCount 1 ;
97
+ sh:severity sh:Warning ;
98
+ sh:message "Recommended by Google: position." ;
99
+ ] ;
100
+ sh:property [
101
+ sh:path schema:positiveNotes ;
102
+ sh:minCount 1 ;
103
+ sh:severity sh:Warning ;
104
+ sh:message "Recommended by Google: positiveNotes." ;
105
+ ] ;
106
+ .
107
+
108
+ :google_UnitPriceSpecificationShape
109
+ a sh:NodeShape ;
110
+ sh:targetClass schema:UnitPriceSpecification ;
111
+ sh:property [
112
+ sh:path schema:price ;
113
+ sh:minCount 1 ;
114
+ ] ;
115
+ sh:property [
116
+ sh:path schema:priceCurrency ;
117
+ sh:minCount 1 ;
118
+ sh:severity sh:Warning ;
119
+ sh:message "Recommended by Google: priceCurrency." ;
120
+ ] ;
121
+ .
@@ -0,0 +1,64 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-product-variants/> .
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/product-variants
6
+ # Generated: 2026-01-13T11:23:42Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_ProductGroupShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:ProductGroup ;
12
+ sh:property [
13
+ sh:path schema:name ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:aggregateRating ;
18
+ sh:minCount 1 ;
19
+ sh:severity sh:Warning ;
20
+ sh:message "Recommended by Google: aggregateRating." ;
21
+ ] ;
22
+ sh:property [
23
+ sh:path schema:brand ;
24
+ sh:minCount 1 ;
25
+ sh:severity sh:Warning ;
26
+ sh:message "Recommended by Google: brand." ;
27
+ ] ;
28
+ sh:property [
29
+ sh:path schema:description ;
30
+ sh:minCount 1 ;
31
+ sh:severity sh:Warning ;
32
+ sh:message "Recommended by Google: description." ;
33
+ ] ;
34
+ sh:property [
35
+ sh:path schema:hasVariant ;
36
+ sh:minCount 1 ;
37
+ sh:severity sh:Warning ;
38
+ sh:message "Recommended by Google: hasVariant." ;
39
+ ] ;
40
+ sh:property [
41
+ sh:path schema:productGroupID ;
42
+ sh:minCount 1 ;
43
+ sh:severity sh:Warning ;
44
+ sh:message "Recommended by Google: productGroupID." ;
45
+ ] ;
46
+ sh:property [
47
+ sh:path schema:review ;
48
+ sh:minCount 1 ;
49
+ sh:severity sh:Warning ;
50
+ sh:message "Recommended by Google: review." ;
51
+ ] ;
52
+ sh:property [
53
+ sh:path schema:url ;
54
+ sh:minCount 1 ;
55
+ sh:severity sh:Warning ;
56
+ sh:message "Recommended by Google: url." ;
57
+ ] ;
58
+ sh:property [
59
+ sh:path schema:variesBy ;
60
+ sh:minCount 1 ;
61
+ sh:severity sh:Warning ;
62
+ sh:message "Recommended by Google: variesBy." ;
63
+ ] ;
64
+ .
@@ -0,0 +1,130 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-profile-page/> .
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/profile-page
6
+ # Generated: 2026-01-13T11:23:51Z
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:name ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:agentInteractionStatistic ;
18
+ sh:minCount 1 ;
19
+ sh:severity sh:Warning ;
20
+ sh:message "Recommended by Google: agentInteractionStatistic." ;
21
+ ] ;
22
+ sh:property [
23
+ sh:path schema:alternateName ;
24
+ sh:minCount 1 ;
25
+ sh:severity sh:Warning ;
26
+ sh:message "Recommended by Google: alternateName." ;
27
+ ] ;
28
+ sh:property [
29
+ sh:path schema:description ;
30
+ sh:minCount 1 ;
31
+ sh:severity sh:Warning ;
32
+ sh:message "Recommended by Google: description." ;
33
+ ] ;
34
+ sh:property [
35
+ sh:path schema:identifier ;
36
+ sh:minCount 1 ;
37
+ sh:severity sh:Warning ;
38
+ sh:message "Recommended by Google: identifier." ;
39
+ ] ;
40
+ sh:property [
41
+ sh:path schema:image ;
42
+ sh:minCount 1 ;
43
+ sh:severity sh:Warning ;
44
+ sh:message "Recommended by Google: image." ;
45
+ ] ;
46
+ sh:property [
47
+ sh:path schema:interactionStatistic ;
48
+ sh:minCount 1 ;
49
+ sh:severity sh:Warning ;
50
+ sh:message "Recommended by Google: interactionStatistic." ;
51
+ ] ;
52
+ sh:property [
53
+ sh:path schema:sameAs ;
54
+ sh:minCount 1 ;
55
+ sh:severity sh:Warning ;
56
+ sh:message "Recommended by Google: sameAs." ;
57
+ ] ;
58
+ .
59
+
60
+ :google_PersonShape
61
+ a sh:NodeShape ;
62
+ sh:targetClass schema:Person ;
63
+ sh:property [
64
+ sh:path schema:name ;
65
+ sh:minCount 1 ;
66
+ ] ;
67
+ sh:property [
68
+ sh:path schema:agentInteractionStatistic ;
69
+ sh:minCount 1 ;
70
+ sh:severity sh:Warning ;
71
+ sh:message "Recommended by Google: agentInteractionStatistic." ;
72
+ ] ;
73
+ sh:property [
74
+ sh:path schema:alternateName ;
75
+ sh:minCount 1 ;
76
+ sh:severity sh:Warning ;
77
+ sh:message "Recommended by Google: alternateName." ;
78
+ ] ;
79
+ sh:property [
80
+ sh:path schema:description ;
81
+ sh:minCount 1 ;
82
+ sh:severity sh:Warning ;
83
+ sh:message "Recommended by Google: description." ;
84
+ ] ;
85
+ sh:property [
86
+ sh:path schema:identifier ;
87
+ sh:minCount 1 ;
88
+ sh:severity sh:Warning ;
89
+ sh:message "Recommended by Google: identifier." ;
90
+ ] ;
91
+ sh:property [
92
+ sh:path schema:image ;
93
+ sh:minCount 1 ;
94
+ sh:severity sh:Warning ;
95
+ sh:message "Recommended by Google: image." ;
96
+ ] ;
97
+ sh:property [
98
+ sh:path schema:interactionStatistic ;
99
+ sh:minCount 1 ;
100
+ sh:severity sh:Warning ;
101
+ sh:message "Recommended by Google: interactionStatistic." ;
102
+ ] ;
103
+ sh:property [
104
+ sh:path schema:sameAs ;
105
+ sh:minCount 1 ;
106
+ sh:severity sh:Warning ;
107
+ sh:message "Recommended by Google: sameAs." ;
108
+ ] ;
109
+ .
110
+
111
+ :google_ProfilePageShape
112
+ a sh:NodeShape ;
113
+ sh:targetClass schema:ProfilePage ;
114
+ sh:property [
115
+ sh:path schema:mainEntity ;
116
+ sh:minCount 1 ;
117
+ ] ;
118
+ sh:property [
119
+ sh:path schema:dateCreated ;
120
+ sh:minCount 1 ;
121
+ sh:severity sh:Warning ;
122
+ sh:message "Recommended by Google: dateCreated." ;
123
+ ] ;
124
+ sh:property [
125
+ sh:path schema:dateModified ;
126
+ sh:minCount 1 ;
127
+ sh:severity sh:Warning ;
128
+ sh:message "Recommended by Google: dateModified." ;
129
+ ] ;
130
+ .
@@ -0,0 +1,195 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-qapage/> .
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/qapage
6
+ # Generated: 2026-01-13T11:23:52Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_AnswerShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:Answer ;
12
+ sh:property [
13
+ sh:path schema:text ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ sh:property [
17
+ sh:path schema:author ;
18
+ sh:minCount 1 ;
19
+ sh:severity sh:Warning ;
20
+ sh:message "Recommended by Google: author." ;
21
+ ] ;
22
+ sh:property [
23
+ sh:path schema:comment ;
24
+ sh:minCount 1 ;
25
+ sh:severity sh:Warning ;
26
+ sh:message "Recommended by Google: comment." ;
27
+ ] ;
28
+ sh:property [
29
+ sh:path schema:dateModified ;
30
+ sh:minCount 1 ;
31
+ sh:severity sh:Warning ;
32
+ sh:message "Recommended by Google: dateModified." ;
33
+ ] ;
34
+ sh:property [
35
+ sh:path schema:datePublished ;
36
+ sh:minCount 1 ;
37
+ sh:severity sh:Warning ;
38
+ sh:message "Recommended by Google: datePublished." ;
39
+ ] ;
40
+ sh:property [
41
+ sh:path schema:image ;
42
+ sh:minCount 1 ;
43
+ sh:severity sh:Warning ;
44
+ sh:message "Recommended by Google: image." ;
45
+ ] ;
46
+ sh:property [
47
+ sh:path schema:upvoteCount ;
48
+ sh:minCount 1 ;
49
+ sh:severity sh:Warning ;
50
+ sh:message "Recommended by Google: upvoteCount." ;
51
+ ] ;
52
+ sh:property [
53
+ sh:path schema:url ;
54
+ sh:minCount 1 ;
55
+ sh:severity sh:Warning ;
56
+ sh:message "Recommended by Google: url." ;
57
+ ] ;
58
+ sh:property [
59
+ sh:path schema:video ;
60
+ sh:minCount 1 ;
61
+ sh:severity sh:Warning ;
62
+ sh:message "Recommended by Google: video." ;
63
+ ] ;
64
+ .
65
+
66
+ :google_CommentShape
67
+ a sh:NodeShape ;
68
+ sh:targetClass schema:Comment ;
69
+ sh:property [
70
+ sh:path schema:text ;
71
+ sh:minCount 1 ;
72
+ ] ;
73
+ sh:property [
74
+ sh:path schema:author ;
75
+ sh:minCount 1 ;
76
+ sh:severity sh:Warning ;
77
+ sh:message "Recommended by Google: author." ;
78
+ ] ;
79
+ sh:property [
80
+ sh:path schema:comment ;
81
+ sh:minCount 1 ;
82
+ sh:severity sh:Warning ;
83
+ sh:message "Recommended by Google: comment." ;
84
+ ] ;
85
+ sh:property [
86
+ sh:path schema:dateModified ;
87
+ sh:minCount 1 ;
88
+ sh:severity sh:Warning ;
89
+ sh:message "Recommended by Google: dateModified." ;
90
+ ] ;
91
+ sh:property [
92
+ sh:path schema:datePublished ;
93
+ sh:minCount 1 ;
94
+ sh:severity sh:Warning ;
95
+ sh:message "Recommended by Google: datePublished." ;
96
+ ] ;
97
+ sh:property [
98
+ sh:path schema:image ;
99
+ sh:minCount 1 ;
100
+ sh:severity sh:Warning ;
101
+ sh:message "Recommended by Google: image." ;
102
+ ] ;
103
+ sh:property [
104
+ sh:path schema:url ;
105
+ sh:minCount 1 ;
106
+ sh:severity sh:Warning ;
107
+ sh:message "Recommended by Google: url." ;
108
+ ] ;
109
+ sh:property [
110
+ sh:path schema:video ;
111
+ sh:minCount 1 ;
112
+ sh:severity sh:Warning ;
113
+ sh:message "Recommended by Google: video." ;
114
+ ] ;
115
+ .
116
+
117
+ :google_QAPageShape
118
+ a sh:NodeShape ;
119
+ sh:targetClass schema:QAPage ;
120
+ sh:property [
121
+ sh:path schema:mainEntity ;
122
+ sh:minCount 1 ;
123
+ ] ;
124
+ .
125
+
126
+ :google_QuestionShape
127
+ a sh:NodeShape ;
128
+ sh:targetClass schema:Question ;
129
+ sh:property [
130
+ sh:path schema:acceptedAnswer ;
131
+ sh:minCount 1 ;
132
+ ] ;
133
+ sh:property [
134
+ sh:path schema:answerCount ;
135
+ sh:minCount 1 ;
136
+ ] ;
137
+ sh:property [
138
+ sh:path schema:suggestedAnswer ;
139
+ sh:minCount 1 ;
140
+ ] ;
141
+ sh:property [
142
+ sh:path schema:author ;
143
+ sh:minCount 1 ;
144
+ sh:severity sh:Warning ;
145
+ sh:message "Recommended by Google: author." ;
146
+ ] ;
147
+ sh:property [
148
+ sh:path schema:comment ;
149
+ sh:minCount 1 ;
150
+ sh:severity sh:Warning ;
151
+ sh:message "Recommended by Google: comment." ;
152
+ ] ;
153
+ sh:property [
154
+ sh:path schema:dateModified ;
155
+ sh:minCount 1 ;
156
+ sh:severity sh:Warning ;
157
+ sh:message "Recommended by Google: dateModified." ;
158
+ ] ;
159
+ sh:property [
160
+ sh:path schema:datePublished ;
161
+ sh:minCount 1 ;
162
+ sh:severity sh:Warning ;
163
+ sh:message "Recommended by Google: datePublished." ;
164
+ ] ;
165
+ sh:property [
166
+ sh:path schema:image ;
167
+ sh:minCount 1 ;
168
+ sh:severity sh:Warning ;
169
+ sh:message "Recommended by Google: image." ;
170
+ ] ;
171
+ sh:property [
172
+ sh:path schema:text ;
173
+ sh:minCount 1 ;
174
+ sh:severity sh:Warning ;
175
+ sh:message "Recommended by Google: text." ;
176
+ ] ;
177
+ sh:property [
178
+ sh:path schema:upvoteCount ;
179
+ sh:minCount 1 ;
180
+ sh:severity sh:Warning ;
181
+ sh:message "Recommended by Google: upvoteCount." ;
182
+ ] ;
183
+ sh:property [
184
+ sh:path schema:url ;
185
+ sh:minCount 1 ;
186
+ sh:severity sh:Warning ;
187
+ sh:message "Recommended by Google: url." ;
188
+ ] ;
189
+ sh:property [
190
+ sh:path schema:video ;
191
+ sh:minCount 1 ;
192
+ sh:severity sh:Warning ;
193
+ sh:message "Recommended by Google: video." ;
194
+ ] ;
195
+ .
@@ -0,0 +1,201 @@
1
+ @prefix : <https://wordlift.io/shacl/google/google-recipe/> .
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/recipe
6
+ # Generated: 2026-01-13T11:23:54Z
7
+ # Notes: required properties => errors; recommended properties => warnings.
8
+
9
+ :google_HowToDirectionShape
10
+ a sh:NodeShape ;
11
+ sh:targetClass schema:HowToDirection ;
12
+ sh:property [
13
+ sh:path schema:text ;
14
+ sh:minCount 1 ;
15
+ ] ;
16
+ .
17
+
18
+ :google_HowToSectionShape
19
+ a sh:NodeShape ;
20
+ sh:targetClass schema:HowToSection ;
21
+ sh:property [
22
+ sh:path schema:itemListElement ;
23
+ sh:minCount 1 ;
24
+ ] ;
25
+ sh:property [
26
+ sh:path schema:name ;
27
+ sh:minCount 1 ;
28
+ ] ;
29
+ .
30
+
31
+ :google_HowToStepShape
32
+ a sh:NodeShape ;
33
+ sh:targetClass schema:HowToStep ;
34
+ sh:property [
35
+ sh:path schema:itemListElement ;
36
+ sh:minCount 1 ;
37
+ ] ;
38
+ sh:property [
39
+ sh:path schema:text ;
40
+ sh:minCount 1 ;
41
+ ] ;
42
+ sh:property [
43
+ sh:path schema:image ;
44
+ sh:minCount 1 ;
45
+ sh:severity sh:Warning ;
46
+ sh:message "Recommended by Google: image." ;
47
+ ] ;
48
+ sh:property [
49
+ sh:path schema:name ;
50
+ sh:minCount 1 ;
51
+ sh:severity sh:Warning ;
52
+ sh:message "Recommended by Google: name." ;
53
+ ] ;
54
+ sh:property [
55
+ sh:path schema:url ;
56
+ sh:minCount 1 ;
57
+ sh:severity sh:Warning ;
58
+ sh:message "Recommended by Google: url." ;
59
+ ] ;
60
+ sh:property [
61
+ sh:path schema:video ;
62
+ sh:minCount 1 ;
63
+ sh:severity sh:Warning ;
64
+ sh:message "Recommended by Google: video." ;
65
+ ] ;
66
+ .
67
+
68
+ :google_HowToTipShape
69
+ a sh:NodeShape ;
70
+ sh:targetClass schema:HowToTip ;
71
+ sh:property [
72
+ sh:path schema:text ;
73
+ sh:minCount 1 ;
74
+ ] ;
75
+ .
76
+
77
+ :google_ItemListShape
78
+ a sh:NodeShape ;
79
+ sh:targetClass schema:ItemList ;
80
+ sh:property [
81
+ sh:path schema:itemListElement ;
82
+ sh:minCount 1 ;
83
+ ] ;
84
+ sh:property [
85
+ sh:path schema:position ;
86
+ sh:minCount 1 ;
87
+ ] ;
88
+ sh:property [
89
+ sh:path schema:url ;
90
+ sh:minCount 1 ;
91
+ ] ;
92
+ .
93
+
94
+ :google_RecipeShape
95
+ a sh:NodeShape ;
96
+ sh:targetClass schema:Recipe ;
97
+ sh:property [
98
+ sh:path schema:image ;
99
+ sh:minCount 1 ;
100
+ ] ;
101
+ sh:property [
102
+ sh:path schema:name ;
103
+ sh:minCount 1 ;
104
+ ] ;
105
+ sh:property [
106
+ sh:path schema:aggregateRating ;
107
+ sh:minCount 1 ;
108
+ sh:severity sh:Warning ;
109
+ sh:message "Recommended by Google: aggregateRating." ;
110
+ ] ;
111
+ sh:property [
112
+ sh:path schema:author ;
113
+ sh:minCount 1 ;
114
+ sh:severity sh:Warning ;
115
+ sh:message "Recommended by Google: author." ;
116
+ ] ;
117
+ sh:property [
118
+ sh:path schema:calories ;
119
+ sh:minCount 1 ;
120
+ sh:severity sh:Warning ;
121
+ sh:message "Recommended by Google: calories." ;
122
+ ] ;
123
+ sh:property [
124
+ sh:path schema:cookTime ;
125
+ sh:minCount 1 ;
126
+ sh:severity sh:Warning ;
127
+ sh:message "Recommended by Google: cookTime." ;
128
+ ] ;
129
+ sh:property [
130
+ sh:path schema:datePublished ;
131
+ sh:minCount 1 ;
132
+ sh:severity sh:Warning ;
133
+ sh:message "Recommended by Google: datePublished." ;
134
+ ] ;
135
+ sh:property [
136
+ sh:path schema:description ;
137
+ sh:minCount 1 ;
138
+ sh:severity sh:Warning ;
139
+ sh:message "Recommended by Google: description." ;
140
+ ] ;
141
+ sh:property [
142
+ sh:path schema:keywords ;
143
+ sh:minCount 1 ;
144
+ sh:severity sh:Warning ;
145
+ sh:message "Recommended by Google: keywords." ;
146
+ ] ;
147
+ sh:property [
148
+ sh:path schema:nutrition ;
149
+ sh:minCount 1 ;
150
+ sh:severity sh:Warning ;
151
+ sh:message "Recommended by Google: nutrition." ;
152
+ ] ;
153
+ sh:property [
154
+ sh:path schema:prepTime ;
155
+ sh:minCount 1 ;
156
+ sh:severity sh:Warning ;
157
+ sh:message "Recommended by Google: prepTime." ;
158
+ ] ;
159
+ sh:property [
160
+ sh:path schema:recipeCategory ;
161
+ sh:minCount 1 ;
162
+ sh:severity sh:Warning ;
163
+ sh:message "Recommended by Google: recipeCategory." ;
164
+ ] ;
165
+ sh:property [
166
+ sh:path schema:recipeCuisine ;
167
+ sh:minCount 1 ;
168
+ sh:severity sh:Warning ;
169
+ sh:message "Recommended by Google: recipeCuisine." ;
170
+ ] ;
171
+ sh:property [
172
+ sh:path schema:recipeIngredient ;
173
+ sh:minCount 1 ;
174
+ sh:severity sh:Warning ;
175
+ sh:message "Recommended by Google: recipeIngredient." ;
176
+ ] ;
177
+ sh:property [
178
+ sh:path schema:recipeInstructions ;
179
+ sh:minCount 1 ;
180
+ sh:severity sh:Warning ;
181
+ sh:message "Recommended by Google: recipeInstructions." ;
182
+ ] ;
183
+ sh:property [
184
+ sh:path schema:recipeYield ;
185
+ sh:minCount 1 ;
186
+ sh:severity sh:Warning ;
187
+ sh:message "Recommended by Google: recipeYield." ;
188
+ ] ;
189
+ sh:property [
190
+ sh:path schema:totalTime ;
191
+ sh:minCount 1 ;
192
+ sh:severity sh:Warning ;
193
+ sh:message "Recommended by Google: totalTime." ;
194
+ ] ;
195
+ sh:property [
196
+ sh:path schema:video ;
197
+ sh:minCount 1 ;
198
+ sh:severity sh:Warning ;
199
+ sh:message "Recommended by Google: video." ;
200
+ ] ;
201
+ .