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]
52
53let to_string = function
54 | `Cites -> "cites"
55 | `CitesAsAuthority -> "citesAsAuthority"
56 | `CitesAsDataSource -> "citesAsDataSource"
57 | `CitesAsEvidence -> "citesAsEvidence"
58 | `CitesForInformation -> "citesForInformation"
59 | `UsesDataFrom -> "usesDataFrom"
60 | `UsesMethodIn -> "usesMethodIn"
61 | `UsesConclusionsFrom -> "usesConclusionsFrom"
62 | `AgreesWith -> "agreesWith"
63 | `DisagreesWith -> "disagreesWith"
64 | `Confirms -> "confirms"
65 | `Refutes -> "refutes"
66 | `Disputes -> "disputes"
67 | `Critiques -> "critiques"
68 | `Qualifies -> "qualifies"
69 | `Corrects -> "corrects"
70 | `Updates -> "updates"
71 | `Extends -> "extends"
72 | `Parodies -> "parodies"
73 | `Plagiarizes -> "plagiarizes"
74 | `Derides -> "derides"
75 | `Ridicules -> "ridicules"
76 | `Describes -> "describes"
77 | `Documents -> "documents"
78 | `CitesAsSourceDocument -> "citesAsSourceDocument"
79 | `CitesAsMetadataDocument -> "citesAsMetadataDocument"
80 | `Compiles -> "compiles"
81 | `Reviews -> "reviews"
82 | `Retracts -> "retracts"
83 | `Supports -> "supports"
84 | `GivesSupportTo -> "givesSupportTo"
85 | `ObtainsSupportFrom -> "obtainsSupportFrom"
86 | `GivesBackgroundTo -> "givesBackgroundTo"
87 | `ObtainsBackgroundFrom -> "obtainsBackgroundFrom"
88 | `SpeculatesOn -> "speculatesOn"
89 | `CitesAsPotentialSolution -> "citesAsPotentialSolution"
90 | `CitesAsRecommendedReading -> "citesAsRecommendedReading"
91 | `CitesAsRelated -> "citesAsRelated"
92 | `IncludesQuotationFrom -> "includesQuotationFrom"
93 | `IncludesExcerptFrom -> "includesExcerptFrom"
94 | `RepliesTo -> "repliesTo"
95 | `HasReplyFrom -> "hasReplyFrom"
96 | `LinksTo -> "linksTo"
97 | `SharesAuthorWith -> "sharesAuthorWith"
98 | `SharesJournalWith -> "sharesJournalWith"
99 | `SharesPublicationVenueWith -> "sharesPublicationVenueWith"
100 | `SharesFundingAgencyWith -> "sharesFundingAgencyWith"
101 | `SharesAuthorInstitutionWith -> "sharesAuthorInstitutionWith"
102 | `Other s -> s
103
104let of_string s =
105 match String.lowercase_ascii s with
106 | "cites" -> `Cites
107 | "citesasauthority" -> `CitesAsAuthority
108 | "citesasdatasource" -> `CitesAsDataSource
109 | "citesasevidence" -> `CitesAsEvidence
110 | "citesforinformation" -> `CitesForInformation
111 | "usesdatafrom" -> `UsesDataFrom
112 | "usesmethodin" -> `UsesMethodIn
113 | "usesconclusionsfrom" -> `UsesConclusionsFrom
114 | "agreeswith" -> `AgreesWith
115 | "disagreeswith" -> `DisagreesWith
116 | "confirms" -> `Confirms
117 | "refutes" -> `Refutes
118 | "disputes" -> `Disputes
119 | "critiques" -> `Critiques
120 | "qualifies" -> `Qualifies
121 | "corrects" -> `Corrects
122 | "updates" -> `Updates
123 | "extends" -> `Extends
124 | "parodies" -> `Parodies
125 | "plagiarizes" -> `Plagiarizes
126 | "derides" -> `Derides
127 | "ridicules" -> `Ridicules
128 | "describes" -> `Describes
129 | "documents" -> `Documents
130 | "citesassourcedocument" -> `CitesAsSourceDocument
131 | "citesasmetadatadocument" -> `CitesAsMetadataDocument
132 | "compiles" -> `Compiles
133 | "reviews" -> `Reviews
134 | "retracts" -> `Retracts
135 | "supports" -> `Supports
136 | "givessupportto" -> `GivesSupportTo
137 | "obtainssupportfrom" -> `ObtainsSupportFrom
138 | "givesbackgroundto" -> `GivesBackgroundTo
139 | "obtainsbackgroundfrom" -> `ObtainsBackgroundFrom
140 | "speculateson" -> `SpeculatesOn
141 | "citesaspotentialsolution" -> `CitesAsPotentialSolution
142 | "citesasrecommendedreading" -> `CitesAsRecommendedReading
143 | "citesasrelated" -> `CitesAsRelated
144 | "includesquotationfrom" -> `IncludesQuotationFrom
145 | "includesexcerptfrom" -> `IncludesExcerptFrom
146 | "repliesto" -> `RepliesTo
147 | "hasreplyfrom" -> `HasReplyFrom
148 | "linksto" -> `LinksTo
149 | "sharesauthorwith" -> `SharesAuthorWith
150 | "sharesjournalwith" -> `SharesJournalWith
151 | "sharespublicationvenuewith" -> `SharesPublicationVenueWith
152 | "sharesfundingagencywith" -> `SharesFundingAgencyWith
153 | "sharesauthorinstitutionwith" -> `SharesAuthorInstitutionWith
154 | _ -> `Other s
155
156let equal a b =
157 match a, b with
158 | `Other sa, `Other sb -> sa = sb
159 | _ -> a = b
160
161let pp ppf t = Format.fprintf ppf "%s" (to_string t)
162
163let jsont =
164 let kind = "CiTO intent" in
165 let doc = "A Citation Typing Ontology intent annotation" in
166 let dec = of_string in
167 let enc = to_string in
168 Jsont.map ~kind ~doc ~dec ~enc Jsont.string