1 | /* |
2 | This file is part of the syndication library |
3 | SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef SYNDICATION_RDF_DUBLINCORE_H |
9 | #define SYNDICATION_RDF_DUBLINCORE_H |
10 | |
11 | #include <syndication/rdf/resourcewrapper.h> |
12 | |
13 | #include <QStringList> |
14 | |
15 | #include <ctime> |
16 | |
17 | class QString; |
18 | |
19 | namespace Syndication |
20 | { |
21 | namespace RDF |
22 | { |
23 | class Resource; |
24 | //@cond PRIVATE |
25 | typedef QSharedPointer<Resource> ResourcePtr; |
26 | //@endcond |
27 | |
28 | /** |
29 | * A resource wrapper providing convenient |
30 | * access to Dublin Core metadata. |
31 | * |
32 | * For more information on Dublin Core, see |
33 | * http://dublincore.org/ |
34 | */ |
35 | class DublinCore : public ResourceWrapper |
36 | { |
37 | public: |
38 | /** |
39 | * creates a dublin core convenience wrapper for a resource |
40 | * |
41 | * @param resource the resource to wrap |
42 | */ |
43 | explicit DublinCore(ResourcePtr resource); |
44 | |
45 | /** |
46 | * virtual destructor |
47 | */ |
48 | ~DublinCore() override; |
49 | |
50 | /** |
51 | * A name given to the resource. |
52 | * Typically, a Title will be a name by which the resource is |
53 | * formally known. |
54 | */ |
55 | QString title() const; |
56 | |
57 | /** |
58 | * "An entity primarily responsible for making the content of |
59 | * the resource. |
60 | * Examples of a Creator include a person, an organisation, |
61 | * or a service. |
62 | * Typically, the name of a Creator should be used to |
63 | * indicate the entity." |
64 | */ |
65 | QString creator() const; |
66 | |
67 | /** |
68 | * like creator(), but returns all dc:creator properties, |
69 | * not only one. |
70 | */ |
71 | QStringList creators() const; |
72 | |
73 | /** |
74 | * "A date associated with an event in the life cycle of the resource. |
75 | * Typically, Date will be associated with the creation or |
76 | * availability of the resource. Recommended best practice |
77 | * for encoding the date value is defined in a profile of |
78 | * ISO 8601 [W3CDTF] and follows the YYYY-MM-DD format." |
79 | */ |
80 | time_t date() const; |
81 | |
82 | /** |
83 | * "An account of the content of the resource. |
84 | * Description may include but is not limited to: an abstract, |
85 | * table of contents, reference to a graphical representation |
86 | * of content or a free-text account of the content." |
87 | */ |
88 | QString description() const; |
89 | |
90 | /** |
91 | * "The topic of the content of the resource. |
92 | * Typically, a Subject will be expressed as keywords, |
93 | * key phrases or classification codes that describe a topic |
94 | * of the resource. |
95 | * Recommended best practice is to select a value from a |
96 | * controlled vocabulary or formal classification scheme." |
97 | */ |
98 | QString subject() const; |
99 | |
100 | /** |
101 | * like subject(), but returns all dc:subject properties, |
102 | * not only one. |
103 | */ |
104 | QStringList subjects() const; |
105 | |
106 | /** |
107 | * "An entity responsible for making contributions to the content of the |
108 | * resource. |
109 | * Examples of a Contributor include a person, an organisation, or a |
110 | * service. Typically, the name of a Contributor should be used to |
111 | * indicate the entity." |
112 | * */ |
113 | QString contributor() const; |
114 | |
115 | /** |
116 | * like contributor(), but returns all dc:contributor properties, |
117 | * not only one. |
118 | */ |
119 | QStringList contributors() const; |
120 | |
121 | /** |
122 | * "Information about rights held in and over the resource. |
123 | * Typically, a Rights element will contain a rights |
124 | * management statement for the resource, or reference |
125 | * a service providing such information. Rights information |
126 | * often encompasses Intellectual Property Rights (IPR), |
127 | * Copyright, and various Property Rights. |
128 | * If the Rights element is absent, no assumptions can be made |
129 | * about the status of these and other rights with respect to |
130 | * the resource." |
131 | */ |
132 | QString rights() const; |
133 | |
134 | /** |
135 | * "A language of the intellectual content of the resource. |
136 | * Recommended best practice for the values of the Language |
137 | * element is defined by RFC 1766 [RFC1766] which includes |
138 | * a two-letter Language Code (taken from the ISO 639 |
139 | * standard [ISO639]), followed optionally, by a two-letter |
140 | * Country Code (taken from the ISO 3166 standard [ISO3166]). |
141 | * For example, 'en' for English, 'fr' for French, or |
142 | * 'en-uk' for English used in the United Kingdom." |
143 | */ |
144 | QString language() const; |
145 | |
146 | /** |
147 | * "The extent or scope of the content of the resource. |
148 | * Coverage will typically include spatial location (a place name |
149 | * or geographic coordinates), temporal period (a period label, |
150 | * date, or date range) or jurisdiction (such as a named |
151 | * administrative entity). |
152 | * Recommended best practice is to select a value from a |
153 | * controlled vocabulary (for example, the Thesaurus of Geographic |
154 | * Names [TGN]) and that, where appropriate, named places or time |
155 | * periods be used in preference to numeric identifiers such as |
156 | * sets of coordinates or date ranges." |
157 | */ |
158 | QString coverage() const; |
159 | |
160 | /** |
161 | * "The physical or digital manifestation of the resource. |
162 | * Typically, Format may include the media-type or dimensions of |
163 | * the resource. Format may be used to determine the software, |
164 | * hardware or other equipment needed to display or operate the |
165 | * resource. Examples of dimensions include size and duration. |
166 | * Recommended best practice is to select a value from a |
167 | * controlled vocabulary (for example, the list of Internet Media |
168 | * Types [MIME] defining computer media formats). |
169 | */ |
170 | QString format() const; |
171 | |
172 | /** |
173 | * "An unambiguous reference to the resource within a given context. |
174 | * Recommended best practice is to identify the resource by means |
175 | * if a string or number conforming to a formal identification |
176 | * system. |
177 | * Example formal identification systems include the Uniform |
178 | * Resource Identifier (URI) (including the Uniform Resource |
179 | * Locator (URL)), the Digital Object Identifier (DOI) and the |
180 | * International Standard Book Number (ISBN). |
181 | */ |
182 | QString identifier() const; |
183 | |
184 | /** |
185 | * "An entity responsible for making the resource available. |
186 | * Examples of a Publisher include a person, an organisation, or a |
187 | * service. Typically, the name of a Publisher should be used to |
188 | * indicate the entity." |
189 | */ |
190 | QString publisher() const; |
191 | |
192 | /** |
193 | * "A reference to a related resource. |
194 | * Recommended best practice is to reference the resource by means |
195 | * of a string or number conforming to a formal identification |
196 | * system." |
197 | */ |
198 | QString relation() const; |
199 | |
200 | /** |
201 | * A Reference to a resource from which the present resource |
202 | * is derived. |
203 | * The present resource may be derived from the Source resource |
204 | * in whole or in part. Recommended best practice is to reference |
205 | * the resource by means of a string or number conforming to a |
206 | * formal identification system. |
207 | */ |
208 | QString source() const; |
209 | |
210 | /** |
211 | * "The nature or genre of the content of the resource. |
212 | * Type includes terms describing general categories, functions, |
213 | * genres, or aggregation levels for content. Recommended best |
214 | * practice is to select a value from a controlled vocabulary |
215 | * (for example, the working draft list of Dublin Core Types |
216 | * [DCT1]). To describe the physical or digital manifestation |
217 | * of the resource, use the FORMAT element." |
218 | */ |
219 | QString type() const; |
220 | |
221 | /** |
222 | * returns a debug string describing the available DC metadata |
223 | * for debugging purposes |
224 | * |
225 | * @return debug string |
226 | */ |
227 | QString debugInfo() const; |
228 | }; |
229 | |
230 | } // namespace RDF |
231 | } // namespace Syndication |
232 | |
233 | #endif // SYNDICATION_RDF_DUBLINCORE_H |
234 | |