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 let dec = of_string in 162 let enc = to_string in 163 Jsont.map ~kind ~doc ~dec ~enc Jsont.string