private void LoadFromContract(Contracts.Snak snak) { Debug.Assert(snak != null); SnakType = ParseSnakType(snak.SnakType); Hash = snak.Hash; RawDataValue = snak.DataValue; DataType = BuiltInDataTypes.Get(snak.DataType) ?? MissingPropertyType.Get(snak.DataType, (string)snak.DataValue?["type"]); }
internal static SerializableEntity Load(Contracts.Entity entity) { // If caller deserializes entity from EOF-ed stream, the caller can get null. if (entity == null) { return(null); } var inst = new SerializableEntity(false) { Id = entity.Id, Type = ParseEntityType(entity.Type) }; if (entity.DataType != null) { inst.DataType = BuiltInDataTypes.Get(entity.DataType) ?? MissingPropertyType.Get(entity.DataType, entity.DataType); } inst.Labels = new WbMonolingualTextCollection( entity.Labels?.Values.Select(v => new WbMonolingualText(v.Language, v.Value)) ?? Enumerable.Empty <WbMonolingualText>()); inst.Descriptions = new WbMonolingualTextCollection( entity.Descriptions?.Values.Select(v => new WbMonolingualText(v.Language, v.Value)) ?? Enumerable.Empty <WbMonolingualText>()); inst.Aliases = new WbMonolingualTextsCollection( entity.Aliases?.Values.SelectMany(vs => vs).Select(v => new WbMonolingualText(v.Language, v.Value)) ?? Enumerable.Empty <WbMonolingualText>()); inst.SiteLinks = new EntitySiteLinkCollection( entity.Sitelinks?.Values.Select(v => new EntitySiteLink(v.Site, v.Title, new ReadOnlyCollection <string>(v.Badges))) ?? Enumerable.Empty <EntitySiteLink>()); if (entity.Claims == null || entity.Claims.Count == 0) { inst.Claims = new ClaimCollection(); } else { // { claims : { P47 : [ {}, {}, ... ], P105 : ... } } inst.Claims = new ClaimCollection(entity.Claims.Values.SelectMany(c => c).Select(Claim.FromContract)); } return(inst); }