Wikibase: Combine same references from Wikidata [#596]

pull/620/head
gnosygnu 5 years ago
parent bc976ac300
commit f8bbdb1727

@ -173,9 +173,10 @@ public class Scrib_lib_wikibase_srl {
List_adp rv = List_adp_.New();
for (int i = 0; i < list_len; ++i) {
Wbase_references_grp references_grp = list[i];
Keyval[] references_kvs = new Keyval[2];
references_kvs[0] = Keyval_.new_("snaks", Srl_qualifiers(prop_mgr, visitor, references_grp.Snaks(), base_adj, page_url));
references_kvs[1] = Keyval_.new_("snaks-order", Srl_qualifiers_order(prop_mgr, visitor, references_grp.Snaks_order(), base_adj, page_url));
Keyval[] references_kvs = new Keyval[3];
references_kvs[0] = Keyval_.new_("hash", references_grp.Hash());
references_kvs[1] = Keyval_.new_("snaks", Srl_qualifiers(prop_mgr, visitor, references_grp.Snaks(), base_adj, page_url));
references_kvs[2] = Keyval_.new_("snaks-order", Srl_qualifiers_order(prop_mgr, visitor, references_grp.Snaks_order(), base_adj, page_url));
rv.Add(Keyval_.int_(i + base_adj, references_kvs));
}
return (Keyval[])rv.To_ary_and_clear(Keyval.class);

@ -393,7 +393,8 @@ public class Srl__tst {// see also FOOTNOTE:VIEWING_WIKIDATA_JSON
.References_
( wdata_fxt.Make_references
( wdata_fxt.Make_reference_grp
( Int_ary_.New(3, 1)
( "hash-abc"
, Int_ary_.New(3, 1)
, wdata_fxt.Make_reference_itm(3, wdata_fxt.Make_claim_time(3, "2001-02-03 04:05:06"))
, wdata_fxt.Make_reference_itm(1, wdata_fxt.Make_claim_string(1, "val1"))
)
@ -417,6 +418,7 @@ public class Srl__tst {// see also FOOTNOTE:VIEWING_WIKIDATA_JSON
, " type:'statement'"
, " references:"
, " 1:"
, " hash:'hash-abc'"
, " snaks:"
, " P3:"
, " 1:"

@ -72,11 +72,11 @@ public class Wdata_wiki_mgr_fxt {
public Wbase_references_grp[] Make_references(Wbase_references_grp... ary) {
return ary;
}
public Wbase_references_grp Make_reference_grp(int[] snaks_order, Wbase_claim_grp... snaks) {
public Wbase_references_grp Make_reference_grp(String hash, int[] snaks_order, Wbase_claim_grp... snaks) {
Wbase_claim_grp_list list = new Wbase_claim_grp_list();
for (Wbase_claim_grp itm : snaks)
list.Add(itm);
return new Wbase_references_grp(list, snaks_order);
return new Wbase_references_grp(Bry_.new_u8(hash), list, snaks_order);
}
public Wbase_claim_grp Make_reference_itm(int id, Wbase_claim_base... itms) {
return new Wbase_claim_grp(Int_obj_ref.New(id), itms);

@ -15,10 +15,12 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.xtns.wbases.claims; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
public class Wbase_references_grp {
public Wbase_references_grp(Wbase_claim_grp_list snaks, int[] snaks_order) {
public Wbase_references_grp(byte[] hash, Wbase_claim_grp_list snaks, int[] snaks_order) {
this.hash = hash;
this.snaks = snaks;
this.snaks_order = snaks_order;
}
public byte[] Hash() {return hash;} private final byte[] hash;
public Wbase_claim_grp_list Snaks() {return snaks;} private final Wbase_claim_grp_list snaks;
public int[] Snaks_order() {return snaks_order;} private final int[] snaks_order;
}

@ -64,6 +64,7 @@ class Wdata_claims_parser_v2 {
return rv;
}
private Wbase_references_grp Parse_references_grp(byte[] qid, Json_nde owner) {
byte[] hash = null;
Wbase_claim_grp_list snaks = null;
int[] snaks_order = null;
int len = owner.Len();
@ -71,12 +72,12 @@ class Wdata_claims_parser_v2 {
Json_kv sub = Json_kv.cast(owner.Get_at(i));
byte tid = Wdata_dict_reference.Reg.Get_tid_or_max_and_log(qid, sub.Key().Data_bry()); if (tid == Byte_.Max_value_127) continue;
switch (tid) {
case Wdata_dict_reference.Tid__hash: break; // ignore: "b923b0d68beb300866b87ead39f61e63ec30d8af"
case Wdata_dict_reference.Tid__hash: hash = sub.Val_as_bry(); break;
case Wdata_dict_reference.Tid__snaks: snaks = Parse_qualifiers(qid, Json_nde.cast(sub.Val())); break;
case Wdata_dict_reference.Tid__snaks_order: snaks_order = Parse_pid_order(Json_ary.cast_or_null(sub.Val())); break;
}
}
return new Wbase_references_grp(snaks, snaks_order);
return new Wbase_references_grp(hash, snaks, snaks_order);
}
public Wbase_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde qualifiers_nde) {
Wbase_claim_grp_list rv = new Wbase_claim_grp_list();

Loading…
Cancel
Save