1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2025-05-30 14:04:56 +00:00

Wikibase: Add qualifiers-order to GetEntityStatements [#374]

This commit is contained in:
gnosygnu 2019-06-22 21:53:07 -04:00
parent 2526b677fa
commit d4a28d3ffe
3 changed files with 45 additions and 4 deletions

View File

@ -135,6 +135,7 @@ public class Scrib_lib_wikibase_srl {
list.Add(Keyval_.new_(Wdata_dict_claim_v1.Str_rank, Wbase_claim_rank_.Reg.Get_str_or_fail(itm.Rank_tid())));
list.Add(Keyval_.new_("type", itm.Prop_type()));
Srl_root(list, Wdata_dict_claim.Itm__qualifiers.Key_str(), Srl_qualifiers(prop_mgr, visitor, itm.Qualifiers(), base_adj, page_url));
Srl_root(list, Wdata_dict_claim.Itm__qualifiers_order.Key_str(), Srl_qualifiers_order(prop_mgr, visitor, itm.Qualifiers_order(), base_adj, page_url));
return (Keyval[])list.To_ary_and_clear(Keyval.class);
}
private static Keyval[] Srl_qualifiers(Wbase_prop_mgr prop_mgr, Scrib_lib_wikibase_srl_visitor visitor, Wbase_claim_grp_list list, int base_adj, byte[] page_url) {
@ -155,6 +156,16 @@ public class Scrib_lib_wikibase_srl {
}
return (Keyval[])rv.To_ary_and_clear(Keyval.class);
}
private static Keyval[] Srl_qualifiers_order(Wbase_prop_mgr prop_mgr, Scrib_lib_wikibase_srl_visitor visitor, int[] list, int base_adj, byte[] page_url) {
if (list == null) return null;
int list_len = list.length; if (list_len == 0) return Keyval_.Ary_empty;
List_adp rv = List_adp_.New();
for (int i = 0; i < list_len; ++i) {
String itm_pid = "P" + Int_.To_str(list[i]);
rv.Add(Keyval_.int_(i + base_adj, itm_pid));
}
return (Keyval[])rv.To_ary_and_clear(Keyval.class);
}
private static Keyval[] Srl_claims_prop_itm_core(Wbase_prop_mgr prop_mgr, Scrib_lib_wikibase_srl_visitor visitor, String pid, Wbase_claim_base itm, byte[] page_url) {
boolean snak_is_valued = itm.Snak_tid() == Wbase_claim_value_type_.Tid__value; // PURPOSE: was != Wbase_claim_value_type_.Tid__novalue; PAGE:it.s:Autore:Anonimo DATE:2015-12-06
int snak_is_valued_adj = snak_is_valued ? 1 : 0;

View File

@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
package gplx.xowa.xtns.scribunto.libs.wikibases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.libs.*;
import org.junit.*; import gplx.core.tests.*;
import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.xtns.wbases.stores.*;
public class Srl__tst {
public class Srl__tst {// see also FOOTNOTE:VIEWING_WIKIDATA_JSON
@Before public void init() {fxt.Clear();} private Srl__fxt fxt = new Srl__fxt();
@Test public void Label() {
fxt.Init_label("en", "Earth").Init_label("fr", "Terre").Init_label("de", "Erde");
@ -328,7 +328,21 @@ public class Srl__tst {
}
@Test public void Qualifiers() {
Wdata_wiki_mgr_fxt wdata_fxt = fxt.Wdata_fxt();
fxt.Init_prop(wdata_fxt.Make_claim_string(2, "Earth").Qualifiers_(wdata_fxt.Make_qualifiers(wdata_fxt.Make_qualifiers_grp(3, wdata_fxt.Make_claim_time(3, "2001-02-03 04:05:06")))));
fxt.Init_prop
( wdata_fxt.Make_claim_string(2, "Earth")
.Qualifiers_
( wdata_fxt.Make_qualifiers
( wdata_fxt.Make_qualifiers_grp
( 3, wdata_fxt.Make_claim_time(3, "2001-02-03 04:05:06")
)
, wdata_fxt.Make_qualifiers_grp
( 1, wdata_fxt.Make_claim_string(1, "val1")
)
)
)
.Qualifiers_order_(Int_ary_.New(3, 1))
)
;
fxt.Test
( "claims:"
, " P2:"
@ -358,6 +372,17 @@ public class Srl__tst {
, " property:'P3'"
, " snaktype:'value'"
, " datatype:'time'"
, " P1:"
, " 1:"
, " datavalue:"
, " type:'string'"
, " value:'val1'"
, " property:'P1'"
, " snaktype:'value'"
, " datatype:'string'"
, " qualifiers-order:"
, " 1:'P3'"
, " 2:'P1'"
, ""
);
}
@ -418,4 +443,9 @@ public class Srl__tst {
Keyval keyval = Keyval_find_.Find(true, visitor.Rv(), "value", "numeric-id");
Gftest.Eq__int(456, (int)keyval.Val()); // NOTE: must be 456 not "456"
}
}
}
/*
FOOTNOTE:VIEWING_WIKIDATA_JSON
* https://www.wikidata.org/w/api.php?action=wbgetentities&ids=q2
* https://www.wikidata.org/wiki/Special:Export/Q2
*/

View File

@ -34,7 +34,7 @@ public abstract class Wbase_claim_base implements CompareAble {
public Wbase_claim_base Rank_tid_(byte v) {this.rank_tid = v; return this;}
public void Wguid_(byte[] v) {this.wguid = v;}
public Wbase_claim_base Qualifiers_(Wbase_claim_grp_list v) {qualifiers = v; return this;}
public void Qualifiers_order_(int[] v) {qualifiers_order = v;}
public Wbase_claim_base Qualifiers_order_(int[] v) {qualifiers_order = v; return this;}
public void References_(Wbase_references_grp[] v) {references = v;}
public int compareTo(Object obj) {