Installation
Section titled “Installation”pnpm dlx shadcn@latest add pxl-ui/registry/schemas/rdf
Install the following dependencies:
pnpm add zod
Copy and paste the following code into your project.
1import z from "zod";2
3import { AtomSchemas } from "./atom";4
5// #region MODULES6
7const AdminSchema = z.object({8 errorReportsTo: z.string().optional(),9 generatorAgent: z.string().optional(),10});11
12const DublinCoreSchema = z.object({13 titles: z.array(z.string()).optional(),14 creators: z.array(z.string()).optional(),15 subjects: z.array(z.string()).optional(),16 descriptions: z.array(z.string()).optional(),17 publishers: z.array(z.string()).optional(),18 contributors: z.array(z.string()).optional(),19 dates: z.array(z.string()).optional(),20 types: z.array(z.string()).optional(),21 formats: z.array(z.string()).optional(),22 identifiers: z.array(z.string()).optional(),23 sources: z.array(z.string()).optional(),24 languages: z.array(z.string()).optional(),25 relations: z.array(z.string()).optional(),26 title: z.string().optional().meta({27 deprecated: true,28 description:29 "Use `titles` (array) instead. Dublin Core fields are repeatable.",30 }),31 creator: z.string().optional().meta({32 deprecated: true,33 description:34 "Use `creators` (array) instead. Dublin Core fields are repeatable.",35 }),36 subject: z.string().optional().meta({37 deprecated: true,38 description:39 "Use `subjects` (array) instead. Dublin Core fields are repeatable.",40 }),41 description: z.string().optional().meta({42 deprecated: true,43 description:44 "Use `descriptions` (array) instead. Dublin Core fields are repeatable.",45 }),46 publisher: z.string().optional().meta({47 deprecated: true,48 description:49 "Use `publishers` (array) instead. Dublin Core fields are repeatable.",50 }),51 contributor: z.string().optional().meta({52 deprecated: true,53 description:54 "Use `contributors` (array) instead. Dublin Core fields are repeatable.",55 }),56 date: z.string().optional().meta({57 deprecated: true,58 description:59 "Use `dates` (array) instead. Dublin Core fields are repeatable.",60 }),61 type: z.string().optional().meta({62 deprecated: true,63 description:64 "Use `types` (array) instead. Dublin Core fields are repeatable.",65 }),66 format: z.string().optional().meta({67 deprecated: true,68 description:69 "Use `formats` (array) instead. Dublin Core fields are repeatable.",70 }),71 identifier: z.string().optional().meta({72 deprecated: true,73 description:74 "Use `identifiers` (array) instead. Dublin Core fields are repeatable.",75 }),76 source: z.string().optional().meta({77 deprecated: true,78 description:79 "Use `sources` (array) instead. Dublin Core fields are repeatable.",80 }),81 language: z.string().optional().meta({82 deprecated: true,83 description:84 "Use `languages` (array) instead. Dublin Core fields are repeatable.",85 }),86 relation: z.string().optional().meta({87 deprecated: true,88 description:89 "Use `relations` (array) instead. Dublin Core fields are repeatable.",90 }),91 coverage: z.string().optional().meta({92 deprecated: true,93 description:94 "This field type will be changed to array in the next major version of the package. Dublin Core fields are repeatable.",95 }),96 rights: z.string().optional().meta({97 deprecated: true,98 description:99 "This field type will be changed to array in the next major version of the package. Dublin Core fields are repeatable.",100 }),101});102
103const DublinCoreTermsSchema = z.object({104 abstracts: z.array(z.string()).optional(),105 accrualMethods: z.array(z.string()).optional(),106 accrualPeriodicities: z.array(z.string()).optional(),107 accrualPolicies: z.array(z.string()).optional(),108 alternatives: z.array(z.string()).optional(),109 audiences: z.array(z.string()).optional(),110 bibliographicCitations: z.array(z.string()).optional(),111 contributors: z.array(z.string()).optional(),112 coverages: z.array(z.string()).optional(),113 creators: z.array(z.string()).optional(),114 dates: z.array(z.string()).optional(),115 descriptions: z.array(z.string()).optional(),116 educationLevels: z.array(z.string()).optional(),117 extents: z.array(z.string()).optional(),118 formats: z.array(z.string()).optional(),119 hasFormats: z.array(z.string()).optional(),120 hasParts: z.array(z.string()).optional(),121 hasVersions: z.array(z.string()).optional(),122 identifiers: z.array(z.string()).optional(),123 instructionalMethods: z.array(z.string()).optional(),124 languages: z.array(z.string()).optional(),125 licenses: z.array(z.string()).optional(),126 mediators: z.array(z.string()).optional(),127 mediums: z.array(z.string()).optional(),128 provenances: z.array(z.string()).optional(),129 publishers: z.array(z.string()).optional(),130 relations: z.array(z.string()).optional(),131 rightsHolders: z.array(z.string()).optional(),132 sources: z.array(z.string()).optional(),133 spatials: z.array(z.string()).optional(),134 subjects: z.array(z.string()).optional(),135 temporals: z.array(z.string()).optional(),136 titles: z.array(z.string()).optional(),137 types: z.array(z.string()).optional(),138 abstract: z.string().optional().meta({139 deprecated: true,140 description:141 "Use `abstracts` (array) instead. Dublin Core Terms fields are repeatable.",142 }),143 accessRights: z.string().optional().meta({144 deprecated: true,145 description:146 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",147 }),148 accrualMethod: z.string().optional().meta({149 deprecated: true,150 description:151 "Use `accrualMethod` (array) instead. Dublin Core Terms fields are repeatable.",152 }),153 accrualPeriodicity: z.string().optional().meta({154 deprecated: true,155 description:156 "Use `accrualPeriodicities` (array) instead. Dublin Core Terms fields are repeatable.",157 }),158 accrualPolicy: z.string().optional().meta({159 deprecated: true,160 description:161 "Use `accrualPolicies` (array) instead. Dublin Core Terms fields are repeatable.",162 }),163 alternative: z.string().optional().meta({164 deprecated: true,165 description:166 "Use `alternatives` (array) instead. Dublin Core Terms fields are repeatable.",167 }),168 audience: z.string().optional().meta({169 deprecated: true,170 description:171 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",172 }),173 available: z.string().optional().meta({174 deprecated: true,175 description:176 "Use `abstracts` (array) instead. Dublin Core Terms fields are repeatable.",177 }),178 bibliographicCitation: z.string().optional().meta({179 deprecated: true,180 description:181 "Use `bibliographicCitations` (array) instead. Dublin Core Terms fields are repeatable.",182 }),183 conformsTo: z.string().optional().meta({184 deprecated: true,185 description:186 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",187 }),188 contributor: z.string().optional().meta({189 deprecated: true,190 description:191 "Use `contributors` (array) instead. Dublin Core Terms fields are repeatable.",192 }),193 coverage: z.string().optional().meta({194 deprecated: true,195 description:196 "Use `coverages` (array) instead. Dublin Core Terms fields are repeatable.",197 }),198 created: z.string().optional().meta({199 deprecated: true,200 description:201 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",202 }),203 creator: z.string().optional().meta({204 deprecated: true,205 description:206 "Use `creators` (array) instead. Dublin Core Terms fields are repeatable.",207 }),208 date: z.string().optional().meta({209 deprecated: true,210 description:211 "Use `dates` (array) instead. Dublin Core Terms fields are repeatable.",212 }),213 dateAccepted: z.string().optional().meta({214 deprecated: true,215 description:216 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",217 }),218 dateCopyrighted: z.string().optional().meta({219 deprecated: true,220 description:221 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",222 }),223 dateSubmitted: z.string().optional().meta({224 deprecated: true,225 description:226 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",227 }),228 description: z.string().optional().meta({229 deprecated: true,230 description:231 "Use `descriptions` (array) instead. Dublin Core Terms fields are repeatable.",232 }),233 educationLevel: z.string().optional().meta({234 deprecated: true,235 description:236 "Use `educationLevels` (array) instead. Dublin Core Terms fields are repeatable.",237 }),238 extent: z.string().optional().meta({239 deprecated: true,240 description:241 "Use `extents` (array) instead. Dublin Core Terms fields are repeatable.",242 }),243 format: z.string().optional().meta({244 deprecated: true,245 description:246 "Use `formats` (array) instead. Dublin Core Terms fields are repeatable.",247 }),248 hasFormat: z.string().optional().meta({249 deprecated: true,250 description:251 "Use `hasFormats` (array) instead. Dublin Core Terms fields are repeatable.",252 }),253 hasPart: z.string().optional().meta({254 deprecated: true,255 description:256 "Use `hasParts` (array) instead. Dublin Core Terms fields are repeatable.",257 }),258 hasVersion: z.string().optional().meta({259 deprecated: true,260 description:261 "Use `hasVersions` (array) instead. Dublin Core Terms fields are repeatable.",262 }),263 identifier: z.string().optional().meta({264 deprecated: true,265 description:266 "Use `identifiers` (array) instead. Dublin Core Terms fields are repeatable.",267 }),268 instructionalMethod: z.string().optional().meta({269 deprecated: true,270 description:271 "Use `instructionalMethods` (array) instead. Dublin Core Terms fields are repeatable.",272 }),273 isFormatOf: z.string().optional().meta({274 deprecated: true,275 description:276 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",277 }),278 isPartOf: z.string().optional().meta({279 deprecated: true,280 description:281 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",282 }),283 isReferencedBy: z.string().optional().meta({284 deprecated: true,285 description:286 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",287 }),288 isReplacedBy: z.string().optional().meta({289 deprecated: true,290 description:291 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",292 }),293 isRequiredBy: z.string().optional().meta({294 deprecated: true,295 description:296 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",297 }),298 issued: z.string().optional().meta({299 deprecated: true,300 description:301 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",302 }),303 isVersionOf: z.string().optional().meta({304 deprecated: true,305 description:306 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",307 }),308 language: z.string().optional().meta({309 deprecated: true,310 description:311 "Use `languages` (array) instead. Dublin Core Terms fields are repeatable.",312 }),313 license: z.string().optional().meta({314 deprecated: true,315 description:316 "Use `licenses` (array) instead. Dublin Core Terms fields are repeatable.",317 }),318 mediator: z.string().optional().meta({319 deprecated: true,320 description:321 "Use `mediators` (array) instead. Dublin Core Terms fields are repeatable.",322 }),323 medium: z.string().optional().meta({324 deprecated: true,325 description:326 "Use `mediums` (array) instead. Dublin Core Terms fields are repeatable.",327 }),328 modified: z.string().optional().meta({329 deprecated: true,330 description:331 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",332 }),333 provenance: z.string().optional().meta({334 deprecated: true,335 description:336 "Use `provenances` (array) instead. Dublin Core Terms fields are repeatable.",337 }),338 publisher: z.string().optional().meta({339 deprecated: true,340 description:341 "Use `publishers` (array) instead. Dublin Core Terms fields are repeatable.",342 }),343 references: z.string().optional().meta({344 deprecated: true,345 description:346 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",347 }),348 relation: z.string().optional().meta({349 deprecated: true,350 description:351 "Use `relations` (array) instead. Dublin Core Terms fields are repeatable.",352 }),353 replaces: z.string().optional().meta({354 deprecated: true,355 description:356 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",357 }),358 requires: z.string().optional().meta({359 deprecated: true,360 description:361 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",362 }),363 rights: z.string().optional().meta({364 deprecated: true,365 description:366 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",367 }),368 rightsHolder: z.string().optional().meta({369 deprecated: true,370 description:371 "Use `rightsHolders` (array) instead. Dublin Core Terms fields are repeatable.",372 }),373 source: z.string().optional().meta({374 deprecated: true,375 description:376 "Use `sources` (array) instead. Dublin Core Terms fields are repeatable.",377 }),378 spatial: z.string().optional().meta({379 deprecated: true,380 description:381 "Use `spatials` (array) instead. Dublin Core Terms fields are repeatable.",382 }),383 subject: z.string().optional().meta({384 deprecated: true,385 description:386 "Use `subjects` (array) instead. Dublin Core Terms fields are repeatable.",387 }),388 tableOfContents: z.string().optional().meta({389 deprecated: true,390 description:391 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",392 }),393 temporal: z.string().optional().meta({394 deprecated: true,395 description:396 "Use `temporals` (array) instead. Dublin Core Terms fields are repeatable.",397 }),398 title: z.string().optional().meta({399 deprecated: true,400 description:401 "Use `titles` (array) instead. Dublin Core Terms fields are repeatable.",402 }),403 type: z.string().optional().meta({404 deprecated: true,405 description:406 "Use `types` (array) instead. Dublin Core Terms fields are repeatable.",407 }),408 valid: z.string().optional().meta({409 deprecated: true,410 description:411 "This field type will be changed to array in the next major version of the package. Dublin Core Terms fields are repeatable.",412 }),413});414
415const GeoRssSchema = z.object({416 point: z417 .object({418 lat: z.number(),419 lng: z.number(),420 })421 .optional(),422 line: z423 .object({424 points: z.array(425 z.object({426 lat: z.number(),427 lng: z.number(),428 }),429 ),430 })431 .optional(),432 polygon: z433 .object({434 points: z435 .array(436 z.object({437 lat: z.number(),438 lng: z.number(),439 }),440 )441 .optional(),442 })443 .optional(),444 box: z.object({445 lowerCorner: z.object({446 lat: z.number(),447 lng: z.number(),448 }),449 upperCorner: z.object({450 lat: z.number(),451 lng: z.number(),452 }),453 }),454 featureTypeTag: z.string().optional(),455 relationshipTag: z.string().optional(),456 featureName: z.string().optional(),457 elev: z.number().optional(),458 floor: z.number().optional(),459 radius: z.number().optional(),460});461
462const MediaCommonSchema = z.object({463 ratings: z464 .array(465 z.object({466 value: z.string(),467 scheme: z.string().optional(),468 }),469 )470 .optional(),471 title: z472 .object({473 value: z.string(),474 type: z.string().optional(),475 })476 .optional(),477 description: z478 .object({479 value: z.string(),480 type: z.string().optional(),481 })482 .optional(),483 keywords: z.array(z.string()).optional(),484 thumbnails: z485 .array(486 z.object({487 url: z.url(),488 height: z.number().optional(),489 width: z.number().optional(),490 time: z.string().optional(),491 }),492 )493 .optional(),494 categories: z495 .array(496 z.object({497 name: z.string(),498 scheme: z.string().optional(),499 label: z.string().optional(),500 }),501 )502 .optional(),503 hashes: z504 .array(505 z.object({506 value: z.string(),507 algo: z.string().optional(),508 }),509 )510 .optional(),511 player: z512 .object({513 url: z.url(),514 height: z.number().optional(),515 width: z.number().optional(),516 })517 .optional(),518 credits: z519 .array(520 z.object({521 value: z.string(),522 role: z.string().optional(),523 scheme: z.string().optional(),524 }),525 )526 .optional(),527 copyright: z528 .object({529 value: z.string(),530 url: z.url().optional(),531 })532 .optional(),533 texts: z534 .array(535 z.object({536 value: z.string(),537 type: z.string().optional(),538 lang: z.string().optional(),539 start: z.string().optional(),540 end: z.string().optional(),541 }),542 )543 .optional(),544 restrictions: z545 .array(546 z.object({547 value: z.string(),548 relationship: z.string(),549 type: z.string().optional(),550 }),551 )552 .optional(),553 community: z554 .object({555 starRating: z556 .object({557 average: z.number().optional(),558 count: z.number().optional(),559 min: z.number().optional(),560 max: z.number().optional(),561 })562 .optional(),563 statistics: z564 .object({565 views: z.number().optional(),566 favorites: z.number().optional(),567 })568 .optional(),569 tags: z570 .array(571 z.object({572 name: z.string(),573 weight: z.number().optional(),574 }),575 )576 .optional(),577 })578 .optional(),579 comments: z.array(z.string()).optional(),580 embed: z581 .object({582 url: z.url(),583 width: z.number().optional(),584 height: z.number().optional(),585 params: z586 .array(587 z.object({588 name: z.string(),589 value: z.string(),590 }),591 )592 .optional(),593 })594 .optional(),595 responses: z.array(z.string()).optional(),596 backLinks: z.array(z.string()).optional(),597 status: z598 .object({599 state: z.string(),600 reason: z.string().optional(),601 })602 .optional(),603 prices: z604 .array(605 z.object({606 type: z.string().optional(),607 info: z.string().optional(),608 price: z.number().optional(),609 currency: z.string().optional(),610 }),611 )612 .optional(),613 licenses: z614 .array(615 z.union([616 z.object({617 name: z.string(),618 type: z.string().optional(),619 href: z.url().optional(),620 }),621 z.object({622 name: z.string().optional(),623 type: z.string().optional(),624 href: z.url(),625 }),626 ]),627 )628 .optional(),629 subTitles: z630 .array(631 z.object({632 type: z.string().optional(),633 lang: z.string().optional(),634 href: z.url(),635 }),636 )637 .optional(),638 peerLinks: z639 .array(640 z.object({641 type: z.string().optional(),642 href: z.url(),643 }),644 )645 .optional(),646 locations: z647 .array(648 z.object({649 description: z.string().optional(),650 start: z.string().optional(),651 end: z.string().optional(),652 lat: z.number().optional(),653 lng: z.number().optional(),654 }),655 )656 .optional(),657 rights: z658 .object({659 status: z.string().optional(),660 })661 .optional(),662 scenes: z663 .array(664 z.object({665 title: z.string().optional(),666 description: z.string().optional(),667 startTime: z.string().optional(),668 endTime: z.string().optional(),669 }),670 )671 .optional(),672});673
674const MediaContentSchema = MediaCommonSchema.extend({675 url: z.url().optional(),676 fileSize: z.number().optional(),677 type: z.string().optional(),678 medium: z.string().optional(),679 isDefault: z.boolean().optional(),680 expression: z.string().optional(),681 bitrate: z.number().optional(),682 framerate: z.number().optional(),683 samplingrate: z.number().optional(),684 channels: z.number().optional(),685 duration: z.number().optional(),686 height: z.number().optional(),687 width: z.number().optional(),688 lang: z.string().optional(),689});690
691const MediaGroupSchema = MediaCommonSchema.extend({692 contents: z.array(MediaContentSchema).optional(),693});694
695const MediaSchema = MediaCommonSchema.extend({696 groups: z.array(MediaGroupSchema).optional(),697 contents: z.array(MediaContentSchema).optional(),698 group: MediaGroupSchema.optional().meta({699 deprecated: true,700 description: "Use `groups` instead.",701 }),702});703
704const SlashSchema = z.object({705 section: z.string().optional(),706 department: z.string().optional(),707 comments: z.number().optional(),708 hitParade: z.array(z.number()).optional(),709});710
711const SySchema = z.object({712 updatePeriod: z.string().optional(),713 updateFrequency: z.number().optional(),714 updateBase: z.string().optional(),715});716
717const WfwSchema = z.object({718 comment: z.string().optional(),719 commentRss: z.string().optional(),720});721
722// #endregion723
724const ItemSchema = z.object({725 title: z.string(),726 link: z.string(),727 description: z.string().optional(),728 rdf: z.object({729 about: z.string().optional(),730 }),731 atom: AtomSchemas.Entry.optional(),732 dc: DublinCoreSchema.optional(),733 content: z734 .object({735 encoded: z.string().optional(),736 })737 .optional(),738 slash: SlashSchema.optional(),739 media: MediaSchema.optional(),740 georss: GeoRssSchema.optional(),741 dcterms: DublinCoreTermsSchema.optional(),742 wfw: WfwSchema.optional(),743});744
745const FeedSchema = z.object({746 title: z.string(),747 link: z.string(),748 description: z.string(),749 image: z.object({750 title: z.string(),751 link: z.string(),752 url: z.url().optional(),753 rdf: z.object({754 about: z.string().optional(),755 }),756 }),757 items: z.array(ItemSchema).optional(),758 textInput: z759 .object({760 title: z.string(),761 description: z.string(),762 name: z.string(),763 link: z.string(),764 rdf: z.object({765 about: z.string().optional(),766 }),767 })768 .optional(),769 rdf: z.object({770 about: z.string().optional(),771 }),772 atom: AtomSchemas.Feed.optional(),773 dc: DublinCoreSchema.optional(),774 sy: SySchema.optional(),775 media: MediaSchema.optional(),776 georss: GeoRssSchema.optional(),777 dcterms: DublinCoreTermsSchema.optional(),778 admin: AdminSchema.optional(),779});780
781const RdfSchemas = {782 Item: ItemSchema,783 Feed: FeedSchema,784};785
786type Item = z.infer<typeof ItemSchema>;787type Feed = z.infer<typeof FeedSchema>;788
789declare namespace Rdf {790 export type { Item, Feed };791}792
793export type { Feed, Item, Rdf };794export { FeedSchema, ItemSchema, RdfSchemas };795export default RdfSchemas;Update the import paths to match your project setup.
import type { Rdf } from "@/lib/schemas/pxl/rdf";const feed: Rdf.Feed = { ... }API Reference
Section titled “API Reference”An Rdf feed.
An Rdf item.