OCaml library for JSONfeed parsing and creation
1type t =
2 [ `Cites
3 | `CitesAsAuthority
4 | `CitesAsDataSource
5 | `CitesAsEvidence
6 | `CitesForInformation
7 | `UsesDataFrom
8 | `UsesMethodIn
9 | `UsesConclusionsFrom
10 | `AgreesWith
11 | `DisagreesWith
12 | `Confirms
13 | `Refutes
14 | `Disputes
15 | `Critiques
16 | `Qualifies
17 | `Corrects
18 | `Updates
19 | `Extends
20 | `Parodies
21 | `Plagiarizes
22 | `Derides
23 | `Ridicules
24 | `Describes
25 | `Documents
26 | `CitesAsSourceDocument
27 | `CitesAsMetadataDocument
28 | `Compiles
29 | `Reviews
30 | `Retracts
31 | `Supports
32 | `GivesSupportTo
33 | `ObtainsSupportFrom
34 | `GivesBackgroundTo
35 | `ObtainsBackgroundFrom
36 | `SpeculatesOn
37 | `CitesAsPotentialSolution
38 | `CitesAsRecommendedReading
39 | `CitesAsRelated
40 | `IncludesQuotationFrom
41 | `IncludesExcerptFrom
42 | `RepliesTo
43 | `HasReplyFrom
44 | `LinksTo
45 | `SharesAuthorWith
46 | `SharesJournalWith
47 | `SharesPublicationVenueWith
48 | `SharesFundingAgencyWith
49 | `SharesAuthorInstitutionWith
50 | `Other of string ]
51
52let to_string = function
53 | `Cites -> "cites"
54 | `CitesAsAuthority -> "citesAsAuthority"
55 | `CitesAsDataSource -> "citesAsDataSource"
56 | `CitesAsEvidence -> "citesAsEvidence"
57 | `CitesForInformation -> "citesForInformation"
58 | `UsesDataFrom -> "usesDataFrom"
59 | `UsesMethodIn -> "usesMethodIn"
60 | `UsesConclusionsFrom -> "usesConclusionsFrom"
61 | `AgreesWith -> "agreesWith"
62 | `DisagreesWith -> "disagreesWith"
63 | `Confirms -> "confirms"
64 | `Refutes -> "refutes"
65 | `Disputes -> "disputes"
66 | `Critiques -> "critiques"
67 | `Qualifies -> "qualifies"
68 | `Corrects -> "corrects"
69 | `Updates -> "updates"
70 | `Extends -> "extends"
71 | `Parodies -> "parodies"
72 | `Plagiarizes -> "plagiarizes"
73 | `Derides -> "derides"
74 | `Ridicules -> "ridicules"
75 | `Describes -> "describes"
76 | `Documents -> "documents"
77 | `CitesAsSourceDocument -> "citesAsSourceDocument"
78 | `CitesAsMetadataDocument -> "citesAsMetadataDocument"
79 | `Compiles -> "compiles"
80 | `Reviews -> "reviews"
81 | `Retracts -> "retracts"
82 | `Supports -> "supports"
83 | `GivesSupportTo -> "givesSupportTo"
84 | `ObtainsSupportFrom -> "obtainsSupportFrom"
85 | `GivesBackgroundTo -> "givesBackgroundTo"
86 | `ObtainsBackgroundFrom -> "obtainsBackgroundFrom"
87 | `SpeculatesOn -> "speculatesOn"
88 | `CitesAsPotentialSolution -> "citesAsPotentialSolution"
89 | `CitesAsRecommendedReading -> "citesAsRecommendedReading"
90 | `CitesAsRelated -> "citesAsRelated"
91 | `IncludesQuotationFrom -> "includesQuotationFrom"
92 | `IncludesExcerptFrom -> "includesExcerptFrom"
93 | `RepliesTo -> "repliesTo"
94 | `HasReplyFrom -> "hasReplyFrom"
95 | `LinksTo -> "linksTo"
96 | `SharesAuthorWith -> "sharesAuthorWith"
97 | `SharesJournalWith -> "sharesJournalWith"
98 | `SharesPublicationVenueWith -> "sharesPublicationVenueWith"
99 | `SharesFundingAgencyWith -> "sharesFundingAgencyWith"
100 | `SharesAuthorInstitutionWith -> "sharesAuthorInstitutionWith"
101 | `Other s -> s
102
103let of_string s =
104 match String.lowercase_ascii s with
105 | "cites" -> `Cites
106 | "citesasauthority" -> `CitesAsAuthority
107 | "citesasdatasource" -> `CitesAsDataSource
108 | "citesasevidence" -> `CitesAsEvidence
109 | "citesforinformation" -> `CitesForInformation
110 | "usesdatafrom" -> `UsesDataFrom
111 | "usesmethodin" -> `UsesMethodIn
112 | "usesconclusionsfrom" -> `UsesConclusionsFrom
113 | "agreeswith" -> `AgreesWith
114 | "disagreeswith" -> `DisagreesWith
115 | "confirms" -> `Confirms
116 | "refutes" -> `Refutes
117 | "disputes" -> `Disputes
118 | "critiques" -> `Critiques
119 | "qualifies" -> `Qualifies
120 | "corrects" -> `Corrects
121 | "updates" -> `Updates
122 | "extends" -> `Extends
123 | "parodies" -> `Parodies
124 | "plagiarizes" -> `Plagiarizes
125 | "derides" -> `Derides
126 | "ridicules" -> `Ridicules
127 | "describes" -> `Describes
128 | "documents" -> `Documents
129 | "citesassourcedocument" -> `CitesAsSourceDocument
130 | "citesasmetadatadocument" -> `CitesAsMetadataDocument
131 | "compiles" -> `Compiles
132 | "reviews" -> `Reviews
133 | "retracts" -> `Retracts
134 | "supports" -> `Supports
135 | "givessupportto" -> `GivesSupportTo
136 | "obtainssupportfrom" -> `ObtainsSupportFrom
137 | "givesbackgroundto" -> `GivesBackgroundTo
138 | "obtainsbackgroundfrom" -> `ObtainsBackgroundFrom
139 | "speculateson" -> `SpeculatesOn
140 | "citesaspotentialsolution" -> `CitesAsPotentialSolution
141 | "citesasrecommendedreading" -> `CitesAsRecommendedReading
142 | "citesasrelated" -> `CitesAsRelated
143 | "includesquotationfrom" -> `IncludesQuotationFrom
144 | "includesexcerptfrom" -> `IncludesExcerptFrom
145 | "repliesto" -> `RepliesTo
146 | "hasreplyfrom" -> `HasReplyFrom
147 | "linksto" -> `LinksTo
148 | "sharesauthorwith" -> `SharesAuthorWith
149 | "sharesjournalwith" -> `SharesJournalWith
150 | "sharespublicationvenuewith" -> `SharesPublicationVenueWith
151 | "sharesfundingagencywith" -> `SharesFundingAgencyWith
152 | "sharesauthorinstitutionwith" -> `SharesAuthorInstitutionWith
153 | _ -> `Other s
154
155let equal a b = match (a, b) with `Other sa, `Other sb -> sa = sb | _ -> a = b
156let pp ppf t = Format.fprintf ppf "%s" (to_string t)
157
158let jsont =
159 let kind = "CiTO intent" in
160 let doc = "A Citation Typing Ontology intent annotation" in
161 Jsont.map ~kind ~doc ~dec:of_string ~enc:to_string Jsont.string