mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Wikibase: Combine same references from Wikidata [#596]
This commit is contained in:
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…
Reference in New Issue
Block a user