Oops, now I have 2 places to respond... I added the following to the ticket:

Hi Markus,
I created some Python code myself:
https://github.com/PolyglotOpenstreetmap/Python-scripts-to-automate-JOSM/blob/master/CreateWikidataEntries.py

lines 261 to 265 did what I was using before.

Then I use it from 387 to 397. So it searches on label first, then compares
whether the descriptions match. It's not the greatest code... but it did
the trick

Why was I coding this in Python? Well, I'm creating a prototype in the JOSM
editor, which is written in Java. Hopefully this can be incorporated in
core at some point and then it will be better to use a Java Toolkit. I had
started coding one myself, but that doesn't make much sense. Better to
stand on the shoulders of giants and reach up from there.

Jo

2016-02-13 23:46 GMT+01:00 Markus Krötzsch <[email protected]>:

> [Moving to wikidata-tech; previous conversation inline below]
>
> Hi Polyglot,
>
> ah, now I see. The Wikidata Toolkit method you call is looking for items
> by Wikipedia page title, not for items by label. Labels and titles are not
> related in Wikidata. The search by title is supported by the wbgetentities
> API action for which we have a wrapper class, but this API action does not
> support the search by label.
>
> In fact, I am not sure that there is any API action for doing what you
> want. There is only wbsearchentities, but this search will return near
> matches and also look for aliases. Maybe this is not a big issue for long
> strings as in your case, but for shorter strings you would get many results
> and you would still need to check if they really match.
>
> Anyway, you are right that it would be nice if we would implement support
> for the label/alias search as well. For this, we need to make a wrapper
> class for wbsearchentities. I created an issue to track this:
>
> https://github.com/Wikidata/Wikidata-Toolkit/issues/228
>
> Cheers,
>
> Markus
>
>
> On 13.02.2016 23:22, Jo wrote:
>
>> Hi Markus,
>>
>> I'm searching for a wikidata item with that label. It would be even
>> better if it were possible to search for a label/description combination.
>>
>> This is the item I'm looking for:
>> https://www.wikidata.org/wiki/Q22695926
>>
>> I mostly want to make sure that I'm not creating duplicate entries in
>> Wikidata, most of those schools are not noteworthy enough to get an
>> article on Wikipedia, but since they have objects in Openstreetmap, I
>> would think they are interesting enough for Wikidata.
>>
>> Polyglot
>>
>> 2016-02-13 23:13 GMT+01:00 Markus Krötzsch
>> <[email protected] <mailto:[email protected]>>:
>>
>>
>>     Hi Jo,
>>
>>     You are searching for an item that is assigned to the article
>>     "Kasega Church of Uganda Primary School" on English Wikipedia.
>>     However, there is not article of this name on English Wikipedia.
>>     Maybe there is a typo? Can you tell me which Wikidata item should be
>>     returned here?
>>
>>     Cheers,
>>
>>     Markus
>>
>>     P.S. If you agree, I would prefer to continue this discussion on
>>     wikidata-tech for the benefit of others who may have similar
>> questions.
>>
>>
>>
>>     On 13.02.2016 14:47, Jo wrote:
>>
>>         Hi Marcus,
>>
>>         I had started to write my own implementation of a Wikidata bot in
>>         Jython, so I could use it in JOSM, but still get to code in
>>         Python. This
>>         worked well for a while, but now apparently something was
>>         changed to the
>>         login API.
>>
>>         Anyway, I can't code in all possible things that can go wrong, so
>> it
>>         makes more sense to reuse an existing framework.
>>
>>         What I want to do is add items, but I want to check if they
>> already
>>         exist first. Try as I may, I can't seem to retrieve the items I
>>         create
>>         myself, like:
>>
>>
>>            Kasega Church of Uganda Primary School
>>
>>         Douglas Adams, on the other hand doesn't pose a problem.
>>
>>
>>         I can't figure out why this is. Some things can be found, others
>>         can't.
>>         I tried with a few more entries from recent changes.
>>
>>
>>         In my own bot, I had more succes with searchEntities than with
>>         getEntities. Was this implemented in WDTK?
>>
>>         I hope you can help, I'm stuck, as it doesn't make a lot of sense
>> to
>>         continue with the conversion, if I can't even get a trivial
>>         thing like
>>         this to work.
>>
>>         from org.wikidata.wdtk.datamodel.helpers import Datamodel
>>         from org.wikidata.wdtk.datamodel.helpers import
>> ItemDocumentBuilder
>>         from org.wikidata.wdtk.datamodel.helpers import ReferenceBuilder
>>         from org.wikidata.wdtk.datamodel.helpers import StatementBuilder
>>         from org.wikidata.wdtk.datamodel.interfaces import DatatypeIdValue
>>         from org.wikidata.wdtk.datamodel.interfaces import EntityDocument
>>         from org.wikidata.wdtk.datamodel.interfaces import ItemDocument
>>         from org.wikidata.wdtk.datamodel.interfaces import ItemIdValue
>>         from org.wikidata.wdtk.datamodel.interfaces import
>> PropertyDocument
>>         from org.wikidata.wdtk.datamodel.interfaces import PropertyIdValue
>>         from org.wikidata.wdtk.datamodel.interfaces import Reference
>>         from org.wikidata.wdtk.datamodel.interfaces import Statement
>>         from org.wikidata.wdtk.datamodel.interfaces import
>> StatementDocument
>>         from org.wikidata.wdtk.datamodel.interfaces import StatementGroup
>>         from org.wikidata.wdtk.wikibaseapi import ApiConnection
>>         from org.wikidata.wdtk.util import WebResourceFetcherImpl
>>         from org.wikidata.wdtk.wikibaseapi import ApiConnection
>>         from org.wikidata.wdtk.wikibaseapi import LoginFailedException
>>         from org.wikidata.wdtk.wikibaseapi import WikibaseDataEditor
>>         from org.wikidata.wdtk.wikibaseapi import WikibaseDataFetcher
>>         from org.wikidata.wdtk.wikibaseapi.apierrors import
>>         MediaWikiApiErrorException
>>         # print dir(ItemDocument)
>>         # print dir(ApiConnection)
>>
>>
>>         dataFetcher = WikibaseDataFetcher(connection, siteIri)
>>         # print dir(dataFetcher)
>>         # itemDocuments =
>>         dataFetcher.getEntityDocumentsByTitle('enwiki',['Kasega Church
>>         of Uganda
>>         Primary School'])
>>         # itemDocuments = dataFetcher.getEntityDocuments('Q22695926')
>>         itemDocuments =
>>         dataFetcher.getEntityDocumentsByTitle('enwiki','Kasega
>>         Church of Uganda Primary School')
>>         # print dir(itemDocuments)
>>         print str(len(itemDocuments)) + ' resulting items'
>>         print itemDocuments.toString()
>>         # for itemDocument in itemDocuments:
>>               # print '=========================='
>>               # print itemDocument.toString()
>>
>>
>>
>>
>
_______________________________________________
Wikidata-tech mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-tech

Reply via email to