From 6e39f9979d0da42a826db28d0237fb415d0dc908 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Wed, 23 Nov 2016 11:25:59 -0500 Subject: [PATCH] Wikibase: Return 'property' not 'item' if wikidata page is Property: --- .../libs/Scrib_lib_wikibase_srl.java | 6 ++++-- .../libs/Scrib_lib_wikibase_srl_tst.java | 20 +++++++++++++++++++ .../libs/Scrib_lib_wikibase_tst.java | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java index 6a1a80655..b2b1f88fa 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java @@ -22,8 +22,10 @@ class Scrib_lib_wikibase_srl { int base_adj = legacy_style ? 0 : 1; List_adp rv = List_adp_.New(); if (header_enabled) { - rv.Add(Keyval_.new_("id", wdoc.Qid())); - rv.Add(Keyval_.new_("type", Wbase_claim_entity_type_.Itm__item.Key_str())); + byte[] qid = wdoc.Qid(); + boolean doc_is_qid = Bry_.Has_at_bgn(qid, Byte_ascii.Ltr_q) || Bry_.Has_at_bgn(qid, Byte_ascii.Ltr_Q); + rv.Add(Keyval_.new_("id", qid)); + rv.Add(Keyval_.new_("type", doc_is_qid ? Wbase_claim_entity_type_.Itm__item.Key_str() : Wbase_claim_entity_type_.Itm__property.Key_str())); // type should be "property"; PAGE:ru.w:Викитека:Проект:Викиданные DATE:2016-11-23 rv.Add(Keyval_.new_("schemaVersion", base_adj + 1)); // NOTE: needed by mw.wikibase.lua } Srl_root(rv, Wdata_doc_parser_v2.Str_labels , Srl_langtexts (Wdata_dict_langtext.Itm__language.Key_str(), Wdata_dict_langtext.Itm__value.Key_str(), wdoc.Label_list())); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java index 7c31eecba..96bc78b69 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java @@ -368,6 +368,26 @@ public class Scrib_lib_wikibase_srl_tst { Gftest.Eq__str("timezone", keyval.Key()); Gftest.Eq__int(0, (int)keyval.Val()); // fails when keyval.Val() is String; DATE:2016-10-28 } + @Test public void Type_is_property() { // PURPOSE: type should be "property"; PAGE:ru.w:Викитека:Проект:Викиданные DATE:2016-11-23 + fxt.Init_header_enabled_y_(); + fxt.Wdata_fxt().doc_("Property:P1", fxt.Wdata_fxt().Make_claim_string(123, "abc")); + fxt.Test + ( "id:'Property:P1'" + , "type:'property'" + , "schemaVersion:'2'" + , "" + ); + } + @Test public void Type_is_item() { // PURPOSE: type should be "item"; PAGE:ru.w:Викитека:Проект:Викиданные DATE:2016-11-23 + fxt.Init_header_enabled_y_(); + fxt.Wdata_fxt().doc_("Q2", fxt.Wdata_fxt().Make_claim_string(123, "abc")); + fxt.Test + ( "id:'Q2'" + , "type:'item'" + , "schemaVersion:'2'" + , "" + ); + } } class Scrib_lib_wikibase_srl_fxt { private Wdata_doc_bldr wdoc_bldr; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java index 184f64eb1..5eae52bff 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java @@ -76,7 +76,7 @@ public class Scrib_lib_wikibase_tst { fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_wikibase.Invk_getEntity, Object_.Ary("p2", false), String_.Concat_lines_nl_skip_last ( "1=" , " id=Property:p2" // only difference from above - , " type=item" + , " type=property" // also, type should be "property"; PAGE:ru.w:Викитека:Проект:Викиданные DATE:2016-11-23 , " schemaVersion=2" , " labels=" , " en="