/// <summary> /// Return true if property with value /// </summary> /// <param name="Property">property to check (ex P123)</param> /// <param name="dv">value to check</param> /// <returns></returns> public bool PropertyValueExist(string Property, Datavalue dv) { List <Datavalue> tmpList = new List <Datavalue>(); if (this.claims != null) { foreach (KeyValuePair <string, List <Claim> > tmpClaims in this.claims) { if (tmpClaims.Key == Property) { List <Claim> tmpListClaim = tmpClaims.Value; foreach (Claim tmpClaim in tmpListClaim) { if (tmpClaim.mainsnak.datavalue.FormatValue == dv.FormatValue) { return(true); } } } } } return(false); }
public Mainsnak() { datavalue = new Datavalue(); }
/// <summary> /// Add Label, description, alias, sitelink, claim with qualifier and reference, all datatype. /// </summary> private void EditExample() { string list = "Q938"; WikimediaAPI WD = new WikimediaAPI("https://test.wikidata.org", User, Password); string strJson = WD.LoadWD(list, WikimediaAPI.LoadTypeWD.All); Entities itemList = new Entities(); itemList = JsonConvert.DeserializeObject <Entities>(strJson, new DatavalueConverter()); Entity item = itemList.entities["Q938"]; List <Datavalue> dvList = item.PropertyValue("P245"); WD.SetBadge("Q89", "itwiki", "Q608"); // Edit entity Dictionary <string, string> Labels = new Dictionary <string, string>(); Dictionary <string, string> Descriptions = new Dictionary <string, string>(); Dictionary <string, string> Sitelinks = new Dictionary <string, string>(); Dictionary <string, List <string> > Aliases = new Dictionary <string, List <string> >(); List <Claim> Claims = new List <Claim>(); // To add one or more Label Labels.Add("it", "Label1 IT"); Labels.Add("en", "Label1 EN"); // To add one or more Description Descriptions.Add("it", "Description1 IT"); Descriptions.Add("en", "Description1 EN"); // To add one or more Sitelink Sitelinks.Add("itwiki", "Sandbox"); Sitelinks.Add("enwiki", "Sandbox (computer security)"); // To add one or more Alias List <string> itAlias = new List <string>(); itAlias.Add("Alias1 IT"); itAlias.Add("Alias2 IT"); Aliases.Add("it", itAlias); List <string> enAlias = new List <string>(); enAlias.Add("Alias1 EN"); enAlias.Add("Alias2 EN"); Aliases.Add("en", enAlias); // To add one or more Claim with qualifiers and references Claim claim = new Claim(); claim.mainsnak.property = "P40"; Datavalue dv = new Datavalue(); dv = Utility.CreateDataValue("Stringa", Utility.typeData.String); // for string claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P40"; dv = Utility.CreateDataValue("Stringa2", Utility.typeData.String); // for string claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P37"; dv = Utility.CreateDataValue("Q77", Utility.typeData.Item); // for item claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P285"; dv = Utility.CreateDataValue("it|testo", Utility.typeData.Monolingual); // for monolingual claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P268"; dv = Utility.CreateDataValue("+00000002013-01-01T00:00:00Z|0|0|0|11", Utility.typeData.Time); // for time claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P253"; dv = Utility.CreateDataValue("8.10|9.12|0", Utility.typeData.Coordinate); // for coordinate claim.mainsnak.datavalue = dv; Claims.Add(claim); claim = new Claim(); claim.mainsnak.property = "P245"; dv = Utility.CreateDataValue("+10|1|+10|+10", Utility.typeData.Quantity); // for quantity claim.mainsnak.datavalue = dv; Claims.Add(claim); // To add one or more reference List <Reference> refs = new List <Reference>(); Reference reference = new Reference(); List <Snak> snaks = new List <Snak>(); Snak snak = new Snak(); dv = Utility.CreateDataValue("StringaFonte1", Utility.typeData.String); // for string snak.datavalue = dv; snaks.Add(snak); snak = new Snak(); dv = Utility.CreateDataValue("StringaFonte2", Utility.typeData.String); // for string snak.datavalue = dv; snaks.Add(snak); reference.snaks.Add("P40", snaks); refs.Add(reference); //Another ref reference = new Reference(); snaks = new List <Snak>(); snak = new Snak(); dv = Utility.CreateDataValue("it|testo", Utility.typeData.Monolingual); // for monolingual snak.datavalue = dv; snaks.Add(snak); reference.snaks.Add("P285", snaks); refs.Add(reference); claim.references = refs; //To add One or more qualifiers Dictionary <string, List <Qualifier> > qualifiers = new Dictionary <string, List <Qualifier> >(); List <Qualifier> QualList = new List <Qualifier>(); Qualifier qualifier = new Qualifier(); dv = Utility.CreateDataValue("it|testo1", Utility.typeData.Monolingual); // for monolingual qualifier.datavalue = dv; QualList.Add(qualifier); qualifier = new Qualifier(); dv = Utility.CreateDataValue("it|testo2", Utility.typeData.Monolingual); // for monolingual qualifier.datavalue = dv; QualList.Add(qualifier); qualifiers.Add("P285", QualList); QualList = new List <Qualifier>(); qualifier = new Qualifier(); dv = Utility.CreateDataValue("StringaQualificatore", Utility.typeData.String); // for string qualifier.datavalue = dv; QualList.Add(qualifier); qualifiers.Add("P40", QualList); claim.qualifiers = qualifiers; Claims.Add(claim); WD.EditEntity(item.title, Sitelinks, null, Descriptions, Aliases, Claims, "BOT:Test"); }
private string WriteCategory(Entity entity) { Datavalue dvCat = Utility.CreateDataValue("Q4167836", Utility.TypeData.Item); //Category if (entity.sitelinks != null && (entity.PropertyValueExist("P31", dvCat) && entity.claims["P31"].Count() == 1)) { Dictionary <string, string> Descriptions = new Dictionary <string, string>(); foreach (KeyValuePair <string, string> CatDesc in Utility.dicCat) { if (entity.descriptions == null || !entity.descriptions.ContainsKey(CatDesc.Key)) { Descriptions.Add(CatDesc.Key, CatDesc.Value); } } if (entity.descriptions != null && entity.descriptions.ContainsKey("no")) { Descriptions["no"] = ""; } // Per il norvegese "no" è sbagliato if (Descriptions.Count() > 0) { try { string ret = WD.EditEntity(entity.id, null, null, Descriptions, null, null, "BOT:Add category description"); if (ret != "") { if (ret.IndexOf("code=\"maxlag\"") != -1) { Thread.Sleep(5000); return(entity.id + '\t' + "maxlag" + Environment.NewLine); } else if (ret.IndexOf("Server non disponibile") != -1) { return(entity.id + '\t' + "(503) Server non disponibile" + Environment.NewLine); } else if (ret.IndexOf("code=\"readonly\"") != -1) { return(entity.id + '\t' + "read only" + Environment.NewLine); } else if (ret.IndexOf("error code=\"badtoken\"") != -1) { WD.GetToken(); return(entity.id + '\t' + "bad token" + Environment.NewLine); } else { return("Cat only\t" + entity.id + '\t' + Utility.CleanApiError(ret)); } } else { return(""); } } catch (Exception ex) { return(entity.id + '\t' + ex.Message + Environment.NewLine); } } } return(""); }