Skip to content
ValterVB edited this page Jan 4, 2015 · 1 revision
    private void EditExample()
    {
        //List of entity id
        string list = "Q938|Q98";

        // Connect to test.wikidata
        WikimediaAPI WD = new WikimediaAPI("https://test.wikidata.org", User, Password); 

        // request for JSON string
        string strJson = WD.LoadWD(list, WikimediaAPI.LoadTypeWD.All);

        // Deserialize entities
        Entities itemList = new Entities();
        itemList = JsonConvert.DeserializeObject<Entities>(strJson, new DatavalueConverter());

        // Select item with id=Q938
        Entity item = itemList.entities["Q938"];

        // 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, Aliases, Descriptions, Aliases, Claims, "BOT:Test");
    }
Clone this wiki locally