User talk:MisterSynergy

Jump to: navigation, search

About this board

Babel user information
de-N Dieser Benutzer spricht Deutsch als Muttersprache.
en-4 This user has near native speaker knowledge of English.
Users by language

Previous discussion was archived at User talk:MisterSynergy/Archive 1 on 2015-11-09.

ShadessKB (talkcontribs)

My understanding is as a general rule the labels shouldn't be capitalized. Is there a reason Einheitenzeichen (P5061) in German should?

Schwede66 (talkcontribs)

Nouns are always capitalised in German.

MisterSynergy (talkcontribs)

Thanks Schwede66, correct.

Jura1 (talkcontribs)

Hi MisterSynergy,

P2439 is somehow linked to the initial request on that page. Could you close that too? It seems it should be kept for film/tv stuff.

MisterSynergy (talkcontribs)
Jura1 (talkcontribs)
MisterSynergy (talkcontribs)

To my opinion, the P364/P407 discussion is only remotely related to P2439, which is why the latter one was discussed separately. I closed the other section I linked above now as well.

In the stale thread I cannot see that there is any concensus, thus I will not “close” the discussion how to proceed. It would probably be wiser to recap the outcome until now and then focus to the remaining problems, but I don’t see myself in a position that I should be doing this.

Jura1 (talkcontribs)

We are already in the recap of a recap of a stale thread .. There was a previous discussion about the same and that was closed as having no consensus. If there is no consensus and not much recent discussion, I think it can be closed as such.

Besides a few rare productive contributors, the whole thing doesn't seem to interest people who actually use the properties.

I can understand if you don't want to venture too far into this.

MisterSynergy (talkcontribs)

At a later point in time I will try to have another look, but I can’t promise to find a solution.

Reply to "deletion closures"
Edgars2007 (talkcontribs)

Hi!

I finally was able to ssh to toollabs :) All I had to do was buy a new laptop and create a new ssh key. Probably first thing wasn't necessary :)

Now I have two basic questions:

  • Is (if yes, then how) it possible to clone a tool? Basically, how to do this. (ok, have figured that out)
  • Interaction with my local computer files... Is/how that possible. Basic cp command isn't working this way.
    • Maybe I have fully working tool developed on local machine and I want to put that thing in public_html folder.
    • Or in the other direction. Want to put some things from tool to local machine.
MisterSynergy (talkcontribs)

Hey Edgars, great to read that it meanwhile works!

It depends a bit on your operation system which software to use. Linux machines get along with (Linux-based) Toolforge much better (shell or standard file manager), but Windows is not a problem as well. On the latter, you'd probably want to use PuTTY for a Toolforge shell, and something such as WinSCP as a file manager with GUI for transfer of many files at once (in either direction). Both require usage of your SSH key. You can also use the SCP command in PuTTY to transfer files, but I don't find this very comfortable to be honest.

Edgars2007 (talkcontribs)

Instead of PuTTY I use Cygwin, but yeah, thanks for suggestion. WinSCP works fine, but in some cases it would be easier to work in command line not GUI (never though that I would say such words :D ). Will have to try the scp command some time.

OK, currently last question. A long time ago I read some sysadmins telling to users, that they have to submit cron (or ordinar python jobs) somewhere else, not in the standart "<name>@login.tools.wmflabs.org". Is it true also now? Documentation is a little bit crappy in this question (or I simply don't understand it :D ).

MisterSynergy (talkcontribs)
Jura1 (talkcontribs)
MisterSynergy (talkcontribs)

Thanks. I guess you particularly want me to take notice of the third bullet point? I can’t reproduce what’s claimed there — where do I have to look at?

Jura1 (talkcontribs)

The first and the third.

It can't be reproduced immediately as constraint definitions are only reloaded every couple of months.

MisterSynergy (talkcontribs)

On #1) I did not add any country-related templates; I just shifted them around a bit, when necessary. Actually I don’t really care whether they are there or not, they just should not be in the wrong place.

On #3) Property talk:P2091 has section headers immediately before the constraint boxes since August 3, 2016 [diff]. Yet the constraints appear on Special:ConstraintReport/P2091 about the property itself as well as on items which use the property, such as Special:ConstraintReport/Q576663. How long does this flaw take to become effective, if it still works after 9 months?

MisterSynergy (talkcontribs)

I assume that this problem has been solved meanwhile and proceed with further section headers. If you observe that the flaw is still effective, please let me know. I’d immediately open a bug report via Phabricator in that case.

Jura1 (talkcontribs)

I don't think it has been resolved. Please stop adding them.

MisterSynergy (talkcontribs)

We basically talk about a bug here, which needs to be solved anyway. In no way it is a reason not to structure property talk pages.

Special:ConstraintsReport is broken in many regards anyway. A significant number of checks is not properly implemented, there is an unquantifiable lag in data recognition, it produces cryptic hints and wrong/useless links when violations are found, it can’t properly deal with item redirects, and it basically relies on the property talk page templates, which might change as well in future. This page is not functional at all at the moment, regardless of the problem you claimed here.

Since I nevertheless like this functionality a lot, I am using Javascript to add a link to the left naviation panel on all Property and Item pages for convenient access to Special:ConstraintReport. In February I also asked the developers to put effort into this promising Special: page, but unfortunately they have not done so obviously.

Jura1 (talkcontribs)

Well, there is a bug and it's unlikely to be resolved. In any case, once it's resolved the templates will be redundant. So please stop breaking things in the meantime.

Currently you can use the bug to disable unhelpful error messages, e.g. the single value constraint for VIAF on Special:ConstraintReport/Q21329086.

MisterSynergy (talkcontribs)

Helpful example, thanks.

However, I am not sure whether this is caused by the existence of section headers, or by the fact that constraint reports are basically split into different block – which typically isn’t the case. I’ll keep an eye on that an eventually report it to the developers.

Jura1 (talkcontribs)

There seem to be working on some of the GUI stuff (see the new script) and became aware that the actual message displayed to users might need different wordings depending on the constraints.

BTW, you might want to have a look at Property talk:P369 which tests a replacement for constraint templates.

MisterSynergy (talkcontribs)
  1. Uhm, what’s “the new script” all the people are talking about recently? I haven’t noticed any differences.
  2. I am browsing phabricator right now and there is indeed something going on in the field of constraint checks, but it does not appear to be necessarily related to Special:ConstraintReport.
  3. Thanks for the link to the sandbox property.
MisterSynergy (talkcontribs)
This post was hidden by Jura1 (history)
Jura1 (talkcontribs)

yes.

Jura1 (talkcontribs)
MisterSynergy (talkcontribs)

:pt:Georges Stobbaerts; male human, date of death 6 January 2014; seven edits in total, no external references and backlinks

Jura1 (talkcontribs)

Thanks. Could be VIAF 99900009 , but otherwise let him RIP.

MisterSynergy (talkcontribs)

Good spot, I have restored the item and added some more claims, including identifiers. Thanks for asking.

Jura1 (talkcontribs)

Well, if you hadn't deleted it, I'd never have figured out who he was ;)

MisterSynergy (talkcontribs)

That is the problem with so many items we have. If there aren’t any identifiers or references in the item when the last sitelink is deleted, it will very likely not be improved or identified later. I have meanwhile seen a lot of such cases. They typically base on deleted Wikipedia sitelinks which where either

  • fully promotional (thus have very little credibility)
  • copyright infringements
  • complete fakes
  • created by problematic (perma-banned) users
  • simply found to be not notable for Wikipedia

Some of these Wikipedia deletion rationales do not imply lack of notability for Wikidata, but for most entities this is indeed the case.

If there are no sitelinks, backlinks, and external references, I thus delete such items without any external searches for notability indicators and wait for users to complain about the deletion—which happens extremely rarely. With very few exceptions, there are simply no editors who watch these items. Yet I am happy if someone takes notice and asks for the content or undeletion :-)

Jura1 (talkcontribs)

If creation/deletion was easier, probably, it wouldn't matter much if we deleted items without much content automatically. Personally, I wouldn't mind.

I was somewhat surprised when reading that some users think that Wikidata items get created (and possibly maintained) automatically ;)

MisterSynergy (talkcontribs)

I agree, both creation and deletion are not really effortless (enough). At least undeletion is pretty simple, so the somewhat aggressive deletion approach (as described in my previous comment) currently taken by a couple of admins is a good compromise to my opinion.

Unfortunately there are much more problematic items than admins who are significantly involved in the deletion business. Furthermore, deleting an item requires several clicks and page loads, the GUI is not made for that workflow. We will likely continue to have a substantial amount of problematic items in this project.

Jura1 (talkcontribs)

Maybe another way to see this could be that some items reached their threshold of usefulness and others didn't.

For complete fakes, obviously, this can't ever happen.

For others, it depends on the content of items here. What I noticed with the last category is that frequently, it's impossible to find anything useful on such people (e.g. a non-elected candidate in some local election).

MisterSynergy (talkcontribs)

Meta: sorry for closing, I did not see your new comment. Topic is open for discussion again :-)

Assuming you refer to “simply found to be not notable for Wikipedia” as “the last category”: it is really important that Wikidata-suitable entities that are found not to be notable for Wikipedia have their identifiers imported, so that one can easily see what the item is about. Unfortunately this does not happen frequently and it is often very difficult, as you say, to identify an entity if no external references or Wikipedia sitelinks are in the item.

Jura1 (talkcontribs)

I tend to agree, but given the countless identifiers we start having (some of which don't allow to actually identify things), maybe we should be more selective.

MisterSynergy (talkcontribs)

I agree as well.

It would be great if the identifiers were classified in a way that user-generated content (databases) could be tell apart from serious sources. In fact we do already rate them on a case-by-case basis so that the pure existence of a statement in the identifier section does not necessarily mean that we keep the item (think of social media handles or empty Quora pages). That’s not very efficient of course.

On the other hand: today I just deleted items without any sitelinks, backlinks, identifiers or references of any kind, and I already spent some hours with that task without the feeling that the backlog was significantly shortened after hundreds of cases. In that sense we do not have to worry about good or bad identifiers when there are plenty of items in a much worse situation.

Jura1 (talkcontribs)

Maybe a more automated solution could help.

I don't think user-generated content is necessarily problematic .. otherwise we wouldn't like Wikimedia in the first place. Obviously, the many do-it-userself identifier properties don't really add much, but even P213 or P1417 (when it links a non-existing articles) don't necessarily help identify things.

Nomen ad hoc (talkcontribs)

Hi, MisterSynergy. First let me wish you a happy New Year!

Then, do you thing that the deleted item could you restored? I could add more authorities like ORCID* and theses.fr IDs, and link it to Jean Lemaitre (Q33820736) with doctoral student (P185). Also, I would purge the item from all "personal" datas (as like as Twitter account), so it could be no matter for anyone.

*Btw, I believe that a bot is massively creating items for corresponding ORCID IDs not matched in Wikidata (I saw it several times lately). So I suppose that the item will be recreated one day or another.

MisterSynergy (talkcontribs)

Which item?

Nomen ad hoc (talkcontribs)

Oops... Wait a few minutes, so I could find it through my more than 7.500 creations...

Nomen ad hoc (talkcontribs)

Here it is: Q33820187.

MisterSynergy (talkcontribs)

Ah, that special case. (Back)links for easier navigation:

I am not aware of a systematic ORCID import, so I have no idea whether it will likely be created again in future (it would be great if you could point to this bot account).

Due to the special kind of request we had back then, I personally prefer to keep it like that for now—unless @Spinster confirms that the subject would now be happy with an item. It is clear that at some point a person cannot be rated as “relatively unknown” any longer and an item is unavoidable, but here I cannot see that we have crossed this (virtual) line already. I’d even say that we are still pretty far away from it.

Besides this, I will also start a discussion on the matter at the project chat, without a reference to this case or topic. Spinster also tried that after the deletion of the item at Wikidata talk:Deletion policy#Deleting items about non-notable, living people, by their own request, but that is apparently a pretty remote place to discuss such problems.

Based on the input at the project chat, I will re-evaluate my position. So consider this as an On hold answer to your request.

Nomen ad hoc (talkcontribs)

Thank you! (I can't speak instead of the subject, but I really think the issue drawn from this item was mainly that it linked bibliographical datas and more "personal" (quote unquote) ones such as Twitter account.) I'll try to get in touch with the bot's trainer.

MisterSynergy (talkcontribs)

Short note: the WD:PC topic will not be ready today, but I will find time for it tomorrow early.

Spinster (talkcontribs)

I haven't been in touch anymore with the person involved in that deletion (we just occasionally met during a hackathon). Totally fine with taking this to Project Chat!

MisterSynergy (talkcontribs)
Nomen ad hoc (talkcontribs)

Hello. It seems to me that the discussion showed that there is a no community consensus for deleting "borderline" items (and that we could instead blur/withdraw litigious claims), is it?

MisterSynergy (talkcontribs)

Difficult to say.

We still do not have a local policy which explicitly covers this situation, and I guess there will not be one in the foreseeable future. Whatever I do will be a decision on a by-case basis, so there will always be someone unhappy regardless of the solution. The discussion at WD:PC was meant to collect more opinions, and based on the input one can decide this case in either direction.

There is comprehensible objection against deletion of items that are in use—which was/would not the case here (thus a borderline case, which I tried to describe). I explicitly did not mention the possibility of individual claim removal, since there was no such request in this case as far as I know. I am also not aware which claims are considered “potentially controversial”, “private information”, or “litigous” here. There was just the request to delete the entire item.

So it still feels wrong for me to restore the item if the subject does not want to have it existing (assuming their opinion hasn’t changed since September), when Wikidata or Wikimedia actually do not make any use of it at all. I mean, what’s the value of having it?

Doc Taxon (talkcontribs)

Hallo MisterSynergy!

Okay, ich habe sie erst mal auf eine Nation (nur Sweden (Q34)) minimiert, damit keine Timeouts entstehen, folgende ist die gesamte Abfrage:

select ?sitelinks ?itemLabel ?itemDescription ?P106 ?P18 ?P27 ?P569 ?P570 ?P19Label ?P20Label ?item
with {
   select distinct ?item 
   where {
      hint:Query hint:optimizer "None".
      values ?item_class {wd:Q34}
      ?item wdt:P27 ?item_class; wdt:P21 wd:Q6581072; wdt:P31 wd:Q5.
      filter not exists {[] schema:about ?item; schema:isPartOf <https://de.wikipedia.org/>}
   }
} as %subquery
where {
   hint:Query hint:optimizer "None".
   include %subquery.
   optional {?item wdt:P106 ?P106.}
   optional {?item wdt:P18 ?P18.}
   optional {?item wdt:P27 ?P27.}
   optional {?item wdt:P569 ?P569.}
   optional {?item wdt:P570 ?P570.}
   optional {?item wdt:P19 ?P19.}
   optional {?item wdt:P20 ?P20.}
   bind(xsd:integer(substr(str(?item), 33)) as ?num).
   ?item wikibase:sitelinks ?sitelinks 
   service wikibase:label {bd:serviceParam wikibase:language "de,[AUTO_LANGUAGE]".}
}
order by desc(?sitelinks) asc(?num)

Try it!

Und so entstehen auch keine Timeouts mehr. Möglicherweise kannst Du mir so besser helfen und ein GROUP BY einrichten, so dass die result items nicht mehrfach gelistet werden.

Besten Dank, Doc Taxon ...

Doc Taxon (talkcontribs)

Also die Gruppierung wäre eigentlich das wichtigste, was da jetzt noch offen ist. Hast Du eine Idee?

MisterSynergy (talkcontribs)

Ja, bin noch dran und antworte später…

Doc Taxon (talkcontribs)

Besten Dank jetzt schon mal.

MisterSynergy (talkcontribs)

Auf die Schnelle: Deine Abfrage ist schon so relativ fett, ich habe das mal um ein paar Ausgaben gekürzt. Prinzipiell solltest Du aber die Gruppierung nun nachvollziehen können:

select
   ?sitelinks
   ?itemLabel
   ?itemDescription
   (GROUP_CONCAT(DISTINCT ?P106l; separator=', ') AS ?P106s) 
   (GROUP_CONCAT(DISTINCT ?date_of_birth; separator=', ') AS ?P569s) 
   ?item
with {
   select distinct ?item 
   where {
      ?item wdt:P27 wd:Q34; wdt:P21 wd:Q6581072; wdt:P31 wd:Q5.
      filter not exists {[] schema:about ?item; schema:isPartOf <https://de.wikipedia.org/>}
   }
} as %subquery
where {
   include %subquery.
   optional {?item wdt:P106 ?P106. OPTIONAL { ?P106 rdfs:label ?P106l . FILTER(LANG(?P106l) = 'de') } }
   optional {?item wdt:P569 ?P569.}
   BIND(SUBSTR(STR(?P569), 1, 10) AS ?date_of_birth) .
   bind(xsd:integer(substr(str(?item), 33)) as ?num).
   ?item wikibase:sitelinks ?sitelinks 
   service wikibase:label {bd:serviceParam wikibase:language "de,[AUTO_LANGUAGE]".}
} GROUP BY ?sitelinks ?itemLabel ?itemDescription ?item
order by desc(?sitelinks) asc(?num)

Try it!

GROUP BY machst Du also mit allen Variablen nach denen gruppiert wird (i.e. im Ergebnis-Set findest Du keine zwei Resultate, die in allen vier Variablen identisch sind). Alle anderen Variablen musst Du geeignet zusammenfassen, hier indem Du die Strings mit ', ' zusammenfügst mit (GROUP_CONCAT(DISTINCT ?var_in; separator=', ') AS ?var_out). Alternativen wären: Anzahl von Elementen zählen mit (COUNT(*) AS ?cnt), Zahlen aufsummieren mit (SUM(?var) AS ?sum), Beispieldatum ausgeben mit (SAMPLE(?var) AS ?smpl). Es gibt da glaub ich noch andere Gruppierungsmethoden.

Bei Fragen… fragen! :-) Viele Grüße!

Doc Taxon (talkcontribs)

Oh danke, fügt GROUP_CONCAT alle möglichen Strings einer property zusammen, oder nur die höherrangigen, wenn man bei einem den Rang eins höher gesetzt hat?

MisterSynergy (talkcontribs)

Das gruppiert alles, was im Ergebnis-Set vorgefunden wird. Und was dort vorgefunden wird, hängt davon ab wie Du abfragst:

  • Das wdt:-Präfix gibt Dir alle Aussagen mit bestmöglichem Rank zurück, jedoch keine mit missbilligtem Rang. Wenn also bevorzugte Aussagen vorhanden sind, so werden nur jene alle zurückgegeben. Wenn keine bevorzugten Aussagen vorhanden sind, werden alle Aussagen mit normalem Rang zurückgegeben.
  • Alternativ kannst Du mit p:Pxxx/ps:Pxxx Aussagenwerte abfragen, und dann bekommst Du alle Aussagen zurück, die nicht missbilligten Rang haben – unabhängig davon, ob es bevorzugte Aussagen gibt oder nicht.

Ein Anschauungsbeispiel wären diese Abfragen:

  • SELECT ?date_of_birth WHERE { wd:Q9389759 p:P569/ps:P569 ?date_of_birth } gibt zwei Ergebnisse
  • SELECT ?date_of_birth WHERE { wd:Q9389759 wdt:P569 ?date_of_birth } gibt nur die Aussage mit bevorzugtem Rang

für das Geburtsdatum von Zdzisław Michalski (Q9389759) (eines hat bevorzugten Rang, und eines hat normalen Rang).

Darüberhinaus kannst Du auch Aussagen mit explizit vorgegebenem Rang abfragen:

  • SELECT ?date_of_birth WHERE { wd:Q9389759 p:P569 [ ps:P569 ?date_of_birth; wikibase:rank wikibase:NormalRank ] }

gibt Dir zum Beispiel aus dem oben bereits verlinkten Objekt alle Geburtsdaten mit normalem Rang zurück, obwohl es auch eine Aussage mit bevorzugtem Rang gibt.

Ich finde im Übrigen File:Rdf mapping-vector.svg ganz hilfreich, um die anfangs recht unübersichtlichen Verlinkungen zwischen Objekten, Aussagen, Werten, Fundstellen, Qualifiern, usw. zu verstehen.

Doc Taxon (talkcontribs)

But p:/ps: runs more into a timeout than wdt does. It's awful.

MisterSynergy (talkcontribs)

Ja, das ist etwas aufwändiger. Ich weiß nicht so recht, wo Du Deine Abfrage einsetzen möchtest, aber ich würde eine Verschlankung empfehlen und wdt: nutzen. Das sieht ja wie eine Arbeitsliste für dewiki-Rotlinks aus, da muss IMO nicht die volle Datenkomplexität in der Liste erscheinen – auch wenn das grundsätzlich technisch möglich wäre, jetzt mal abgesehen von den Timeouts.

MisterSynergy (talkcontribs)

Nachtrag: wenn Du filter(?sitelinks >= 4) . mit in die Unterabfrage steckst, läuft die Abfrage viel schneller und Du kannst den Rest aufwändiger gestalten.

select
   ?sitelinks
   ?itemLabel
   ?itemDescription
   (GROUP_CONCAT(DISTINCT ?P106l; separator=', ') AS ?P106s) 
   (GROUP_CONCAT(DISTINCT ?date_of_birth; separator=', ') AS ?P569s) 
   ?item
with {
   select ?item ?sitelinks
   where {
      ?item wdt:P27 wd:Q34; wdt:P21 wd:Q6581072; wdt:P31 wd:Q5; wikibase:sitelinks ?sitelinks .
      filter not exists {[] schema:about ?item; schema:isPartOf <https://de.wikipedia.org/>}
      filter(?sitelinks >= 4) .
   }
} as %subquery
where {
   include %subquery.
   optional {?item wdt:P106 ?P106. OPTIONAL { ?P106 rdfs:label ?P106l . FILTER(LANG(?P106l) = 'de') } }
   optional {?item wdt:P569 ?P569.}
   BIND(SUBSTR(STR(?P569), 1, 10) AS ?date_of_birth) .
   bind(xsd:integer(substr(str(?item), 33)) as ?num).
   service wikibase:label {bd:serviceParam wikibase:language "de,[AUTO_LANGUAGE]".}
} GROUP BY ?sitelinks ?itemLabel ?itemDescription ?item
order by desc(?sitelinks) asc(?num)

Try it!

Doc Taxon (talkcontribs)

Ist das möglich, statt den zusammengefügten P106 statt der P106-itemLabels die female form of label (P2521) zu diesen itemLabels zu bekommen? So dass ich statt "Kaufmann" eben "Kauffrau" geliefert bekomme bspw.

MisterSynergy (talkcontribs)

Ja, ersetze rdfs:label durch wdt:P2521 in der 18. Zeile. Alles andere kann so bleiben.

Doc Taxon (talkcontribs)

Ist aber alles nicht brauchbar, da die Abfragen alle in den Timeout laufen. SPARQL ist diesbezüglich höchst unzufriedenstellend. Man muss sich halt an die wachsende Menge der Daten anpassen, sonst können wir SPARQL bald vergessen. Ich habe die ungruppierte Abfrage von oben wieder aufgegriffen und gruppiere das Ergebnis post-query mit einem Skript. Das ist zwar unschön, aber da Smalyshev das Manko anscheinend nicht einsieht bzw. nichts unternehmen will, ist das so meine einzige Chance.

Oh, da ist noch eine Deiner Fragen offen: ja, es geht um dewiki-Rotlinks. Die Listen, die hier entstehen sollen, sind auf de:WP:FRAUROT gelistet und werden für den in etwa einem Monat stattfindenden Edith-a-thon zusätzlich auch gebraucht.

Das Skript zum Gruppieren (was ich mir von SPARQL abnehmen lassen wollte) und zum Listen ist im Rohzustand, kleine Fixes sind noch nötig und dann "HAU REIN!" Abfragen und Listengenerierung abseits von SPARQL, eben über API und SQL-Abfragen, laufen um ein mehrfaches länger, daher ist der Umweg über SPARQL eine sehr gute Methode, um schnell und effizient zu arbeiten. Die post-query-Gruppierung und Listengenerierung pro Einzelergebnis dauert nur wenige Millisekunden, damit kann ich sehr gut leben.

Vielen Dank zunächst für Deine ausdauernde Hilfe,

ich hoffe, dass ich bei weiteren Fragen erneut auf Dich zukommen darf

Liebe Grüße

MisterSynergy (talkcontribs)

Hallo Doc, ich schlage nun einmal folgende Abfrage mit Gruppierung vor, die hoffentlich alle bisher adressierten Aspekte Deines Problems umfasst:

select
   ?sitelinks
   ?itemLabel
   ?itemDescription
   (GROUP_CONCAT(DISTINCT ?P106l; separator=', ') AS ?P106s) 
   (GROUP_CONCAT(DISTINCT ?date_of_birth; separator=', ') AS ?P569s)
   (GROUP_CONCAT(DISTINCT ?P19l; separator=', ') AS ?P19s) 
   (GROUP_CONCAT(DISTINCT ?date_of_death; separator=', ') AS ?P570s)
   (GROUP_CONCAT(DISTINCT ?P20l; separator=', ') AS ?P20s) 
   (GROUP_CONCAT(DISTINCT ?P27l; separator=', ') AS ?P27s) 
   (SAMPLE(?P18) AS ?P18s) 
   ?item
with {
   select ?item ?sitelinks
   where {
      ?item wdt:P27 wd:Q183; wdt:P21 wd:Q6581072; wdt:P31 wd:Q5; wikibase:sitelinks ?sitelinks .
      filter not exists {[] schema:about ?item; schema:isPartOf <https://de.wikipedia.org/>}
      filter(?sitelinks >= 3) .
   }
} as %subquery
where {
   include %subquery.
   optional {?item wdt:P106 ?P106. OPTIONAL { ?P106 wdt:P2521 ?P106l . FILTER(LANG(?P106l) = 'de') } }
   optional {?item wdt:P18 ?P18.}
   optional {?item wdt:P27/rdfs:label ?P27l. FILTER(LANG(?P27l) = 'de')}
   optional {?item wdt:P569 ?P569.}
   optional {?item wdt:P570 ?P570.}
   optional {?item wdt:P19/rdfs:label ?P19l. FILTER(LANG(?P19l) = 'de')}
   optional {?item wdt:P20/rdfs:label ?P20l. FILTER(LANG(?P20l) = 'de')}
   BIND(SUBSTR(STR(?P569), 1, 10) AS ?date_of_birth) .
   BIND(SUBSTR(STR(?P570), 1, 10) AS ?date_of_death) .
   bind(xsd:integer(substr(str(?item), 33)) as ?num).
   service wikibase:label {bd:serviceParam wikibase:language "de,[AUTO_LANGUAGE]".}
} GROUP BY ?sitelinks ?itemLabel ?itemDescription ?item
order by desc(?sitelinks) asc(?num)

Try it!

Das gibt Dir zwar „nur“ die Objekte mit drei oder mehr Sitelinks (und ohne dewiki-Artikel), aber das sind immernoch 235 deutsche Frauen und fast 1600 schwedische Frauen. Meines Erachtens ist das für einen Edit-a-thlon genug, wenn der jetzt nicht ein Megaevent werden soll. Die Ausführungszeit der Abfrage liegt je nach Staatsangehörigkeit bei mir zwischen 7 und 15 Sekunden, das ist satt unter der Schwelle von einer Minute.

Für richtig fette Abfragen muss man letztlich andere Wege finden, das war schon immer so und das wird wohl auch so bleiben. Stas Malyshev hat die (durchaus beeindruckende) Zahl der Anfragen pro Tag ja schon genannt, und die Datenmenge wächst tatsächlich auch rasant (chart; die Zahl der Datentripel ist binnen eines Jahres von 1.6 Mrd auf 4.7 Mrd gewachsen). Das Timeout-Limit lag lange bei 30 Sekunden, und es ist noch nicht so lange her dass das auf eine Minute hochgesetzt wurde. Wenn also Timeouts auftreten, muss man entweder die Abfrage optimieren, die abgefragte Datenmenge sinnvoll reduzieren – oder eine eigene Infrastruktur aufsetzen, was aber für Leute wie uns recht unmachbar ist. Die ersten beiden Optionen schöpfen wir hier aus.

Bei weiteren Fragen kannst Du mich gern ansprechen, auch in der Zukunft bei neuen Abfragen. Ich bin mittlerweile eh mehr Wikidatian geworden, obwohl ich mal als Wikipedianer gestartet bin. SPARQL habe ich übrigens auch autodidaktisch hier bei Wikidata gelernt, und dazu nicht mehr als meine autodidaktischen SQL-Kenntnisse als Basis gehabt, die bestenfalls nachrangig hilfreich sind und manchmal auch beim lernen störten (sprich: ich habe hier keinen professionellen Hintergrund).

Viele Grüße!

Doc Taxon (talkcontribs)
  • Warum "(SAMPLE(?P18) AS ?P18s)"?
  • und bei P27, P19 und P20 kann ich den Filter auf deutsch nicht gebrauchen. Ist das item in deutsch nicht verfügbar, brauch ich es in der nächstmöglichen Sprache, z.B. schwedisch, englisch oder französisch. Können wir da was machen?
MisterSynergy (talkcontribs)
  • Ich denke ein Bild reicht, deshalb SAMPLE(). Du kannst alternativ auch so gruppieren wie bei den anderen Variablen, allerdings wird dann implizit eine Umwandlung zu einer URL vorgenommen – und die musst Du ziemlich umständlich verarbeiten. Du könntest anstelle eines Bildes (oder zusätzlich) auch schauen, ob Du eine Commons category (P373) ausgeben kannst.
  • Für Schwedinnen und Deutsche zusammen gibt es ca. 150 Objekte, wo solch eine deutschsprachige Bezeichnung fehlt (). Meinste wir bekommen für alle eine Beschreibung hin? Teilweise kann man die sicher aus dem Englischen übernehmen.
Doc Taxon (talkcontribs)

Bei sitelinks >= 0 wären es aber 630

MisterSynergy (talkcontribs)

Ich schaue mir das heute Abend an (link). Würde mich wundern, wenn wir das nicht substantiell reduziert bekämen ;-)

Doc Taxon (talkcontribs)
select
   ?sitelinks
   ?itemLabel
   ?itemDescription
   (group_concat(distinct ?P106l; separator=', ') as ?P106s) 
   (sample(?P18) as ?P18s)
   (group_concat(distinct ?P569l; separator=', ') as ?P569s)
   (group_concat(distinct ?P569prec; separator=', ') as ?P569precs)
   (group_concat(distinct ?P569cal; separator=', ') as ?P569cals)
   (group_concat(distinct ?P19l; separator=', ') as ?P19s) 
   (group_concat(distinct ?P570l; separator=', ') as ?P570s)
   (group_concat(distinct ?P570prec; separator=', ') as ?P570precs)
   (group_concat(distinct ?P570cal; separator=', ') as ?P570cals)
   (group_concat(distinct ?P20l; separator=', ') as ?P20s) 
   (group_concat(distinct ?P27l; separator=', ') as ?P27s) 
   ?item
with {
   select ?item ?sitelinks
   where {
      ?item wdt:P27 wd:Q183; wdt:P21 wd:Q6581072; wdt:P31 wd:Q5; wikibase:sitelinks ?sitelinks.
      minus {
         ?article schema:about ?item; schema:isPartOf <https://de.wikipedia.org/>.
      }
      filter(?sitelinks >= 3)
   }
} as %subquery
where {
   include %subquery.
   optional {?item wdt:P106 ?P106. optional {?P106 wdt:P2521 ?P106l. filter(lang(?P106l) = 'de')} }
   optional {?item wdt:P18 ?P18.}
   optional {?item wdt:P27/rdfs:label ?P27l.}
   optional {?item wdt:P569 ?P569.}
   optional {?item p:P569/psv:P569 [wikibase:timePrecision ?P569prec; wikibase:timeCalendarModel ?P569cal]}
   optional {?item wdt:P570 ?P570.}
   optional {?item p:P570/psv:P570 [wikibase:timePrecision ?P570prec; wikibase:timeCalendarModel ?P570cal]}
   optional {?item wdt:P19/rdfs:label ?P19l.}
   optional {?item wdt:P20/rdfs:label ?P20l.}
   bind(substr(str(?P569), 1, 10) AS ?P569l).
   bind(substr(str(?P569), 1, 10) AS ?P569l).
   bind(xsd:integer(substr(str(?item), 33)) as ?num).
   service wikibase:label {bd:serviceParam wikibase:language 'de,[AUTO_LANGUAGE]'.}
}
group by ?sitelinks ?itemLabel ?itemDescription ?item
order by desc(?sitelinks) asc(?num)

Try it!

Das minus{} im %subquery hab ich neuerdings von Lucas Werkmeister mitgekriegt. Ich gebe jetzt Geburtsdatum, Precision und Calendarmodel jeweils für sich gruppiert aus. Kann ich das irgendwie zusammengruppieren: 2018-02-27+11+Q1985786, 2018-02-01+10+Q1985786 <- bei zwei verschiedenen Daten für Geburtsdatum

MisterSynergy (talkcontribs)

MINUS {} und FILTER NOT EXISTS {} sind in den meisten Fällen ähnlich schnell und bringen dasselbe Ergebnis. Jedoch gibt es ein paar Spezialsituationen, wo das nicht gilt. Mir ist bisher allerdings kein Fall vorgekommen, wo der Unterschied eine Rolle gespielt hätte. Falls Du interessiert bist, kannst Du nach dem Unterschied googlen, denn es gibt ein paar interessante, aber auch anspruchsvolle Erklärungen dazu.

Doc Taxon (talkcontribs)

ah, mit bind(concat ... as ...) geht das

MisterSynergy (talkcontribs)

Richtig. Wobei das wahrscheinlich performancetechnisch keine gute Idee ist :-)

Doc Taxon (talkcontribs)

nee, geht doch nicht mit concat

Doc Taxon (talkcontribs)

Hallo! Das scheint recht einfach zu sein, aber ich hab dennoch null Idee, wie ich das anstellen soll. Ich weiß schon das item, will von Rebecka Edgren Aldén (Q31683889) das date of birth (P569) mit SPARQL auslesen, inklusive calendarmodel und timePrecision. Wie stell ich das am besten an? Danke Dir

MisterSynergy (talkcontribs)
SELECT ?date_of_birth ?precision ?calendar WHERE { wd:Q31683889 p:P569/psv:P569 [ wikibase:timeValue ?date_of_birth; wikibase:timePrecision ?precision; wikibase:timeCalendarModel ?calendar ] }

Try it!

Viele Grüße!

Doc Taxon (talkcontribs)

Komisch, das hatte ich doch probiert, - okay, dann hatte ich irgendwo einen Fehler drin. Pass auf, es kann durchaus passieren, dass es zwei verschiedene Geburtsdaten zu einem item gibt. Egal welcher Rang, gibt mir dein Beispiel alle Geburtsdaten zurück (weil ich seh da was mit p:/psv: statt wdt:)?

Doc Taxon (talkcontribs)

Dafür, dass ?wd in der Abfrage schon auf ein bestimmtes item verweist, dauert die Abfrage mit 43654 ms ganz schön lange.

MisterSynergy (talkcontribs)
  • Die Abfrage wie sie da steht braucht bei mir weniger als 200 Millisekunden. Hast Du das exakt so übernommen?
  • So wie es da steht, bekommst Du alle Aussagen mit nicht-missbilligtem Rang. Möchtest Du nur Aussagen mit bestmöglichem Rang?
Doc Taxon (talkcontribs)

ja, hatte es mit dem Handy bei schlechterem Empfang probiert. SPARQL gibt wohl nicht die Abfragezeit pur zurück sondern inklusive Rendering, jetzt hab ich ähnliche Werte wie Du.

Ich wollte eigentlich alle Werte haben, egal welcher Rang.

MisterSynergy (talkcontribs)

Ja dann müsste das so stimmen. Das Demo-Objekt hat allerdings nur eine solche Aussage.

Doc Taxon (talkcontribs)

Ja, dann bräuchten wir eine Abfrage: Zeige alle (oder auch nur den erstgefundenen) Items, die zwei oder mehr Aussagen zu P569 haben, um ein solches Item zum Testen des oberen Querys zu finden. Was SPARQL betrifft, bin ich noch ziemlich neu, und man kann wirklich nur sehr wenige Abfragen stellen, wenn man das Manual zu SPARQL durchgearbeitet hat, das müsste man wirklich besser machen und mit mehr Beispielen auf den behandelten Punkt. Aber das ist jetzt Off Topic.

MisterSynergy (talkcontribs)
SELECT ?item ?date_of_birth1 ?precision1 ?calendar1 ?rank1 ?date_of_birth2 ?precision2 ?calendar2 ?rank2 WHERE {
  ?item p:P569 [ psv:P569 ?psv1; wikibase:rank ?rank1 ] .
  ?item p:P569 [ psv:P569 ?psv2; wikibase:rank ?rank2 ] .
  FILTER(?psv1 != ?psv2) .
  ?psv1 wikibase:timeValue ?date_of_birth1; wikibase:timePrecision ?precision1; wikibase:timeCalendarModel ?calendar1 .
  ?psv2 wikibase:timeValue ?date_of_birth2; wikibase:timePrecision ?precision2; wikibase:timeCalendarModel ?calendar2 .
  FILTER(YEAR(?date_of_birth1) > 1900 && YEAR(?date_of_birth2) > 1900)
} LIMIT 100

Try it!

Das sollten genug Testergebnisse sein :-)

Doc Taxon (talkcontribs)

Gut, ich gruppiere das mal bei "Abfrage minimiert" mit ein.

Doc Taxon (talkcontribs)

wie werden eigentlich negative Geburtsdaten ausgegeben, vor unserer Zeitrechnung?

MisterSynergy (talkcontribs)
Doc Taxon (talkcontribs)

wie kann ich zu deinem ersten Beispiel ganz oben noch ?item mit ausgeben. Das Beispiel mit zwei verschiedenen, definierten items krieg ich nicht hin.

Doc Taxon (talkcontribs)

ah, mit values {...}, sorry wegen der Störung.

Mewa767 (talkcontribs)

Hallo MisterSynergy, ich habe eine längere Erfahrung mit Wikipedia und Wikicommons und in Wikidata habe ich auch schon einges editiert (korrigiert, ergänzt). Jetzt versuchte ich ein neues Datenobjekt anzulegen "Walter Kleinfeldt", doch außer dem Namen und der Angabe, dass es ein Fotograf war, kann ich nichts anders eingeben. Seine Lebensdaten mit Geburts- und Sterbeort sind mir bekannt. Im Momment gibt es keinen Wikipediaartikel über ihn. Ich habe vor, ihn einmal zu schreiben, Material gibt es genug, nur zu wenig Zeit. Jetzt wollte ich den Creator anzulegen, doch seitdem der Creator sich alle Daten aus Wikidata holt, ist das unübersichtlich geworden. Der Creator "Walter Kleinfeldt" hat keine Verbindung zum Datenobjekt gefunden (weil ich offenbar etwas nicht richtig gemacht habe) und ist leer.

Kannst du mir Erklärungen helfen?

Grüße, Mewa767

MisterSynergy (talkcontribs)

Hallo Mewa767, mit der Verbindung zu Commons kenne ich mich nicht so recht aus, aber es sieht auf den ersten Blick so aus, also müsse die Q-ID des Wikidata-Objektes bei Commons eingetragen werden – siehe diesen Diff, der das Problem gelöst hat. Ich war dann mal so frei und habe weitere Daten im Datenobjekt eingetragen. Du darfst da gern weitermachen, und bei Bedarf auch hier weiter fragen…

Viele Grüße!

Mewa767 (talkcontribs)

Hallo MisterSynergy, danke, dass du dich so schnell um das Datenobjekt "Walter Kleinfeldt" gekümmert hast. Ich habe danach das Geburts- und Todesdatum korrigiert, was nicht mehr schwer ist. Ich wollte aber lernen, solche Objekte eingermaßen selbst anzulegen. Wie bekommt man die passenden Boxen? In Creator war es vorgesehen, dass man Tätigkeitsort(e) und Tätigkeitszeitraum angibt. Diese Möglichkeiten müsste es jetzt über Data geben, aber wie? Grüße, Mewa767

MisterSynergy (talkcontribs)

Hallo Mewa767

Du kannst in dem Datenobjekt über Walter Kleinfeldt (Q50364005) beliebige weitere Aussagen hinzufügen. Dazu scrollst Du die Seite bis ans Ende der bereits vorhandenen Aussagen, wo Du den Link „+ Aussage hinzufügen“ (oder so ähnlich) findest. Klickst Du ihn, geht eine neue Box auf, in der Du links im blau hinterlegten Teil die Eigenschaft (“Property”) eingeben kannst, und rechts danach den passenden Wert. Die Eigenschaft kannst Du entweder über ihren P-Identifikator auswählen (etwa P937 für work location (P937)), oder direkt über die Bezeichnung „Wirkungsort“. Gleiches gilt für die Auswahl des Wertes: da wird der passende Q-Identifikator akzeptiert, aber eben auch die für Menschen besser handzuhabende Bezeichnung.

Welche Eigenschaften (P-Identifikatoren oder deren deutschsprachige Bezeichnung) dabei von Relevanz sind, ist in commons:Creator:Walter Kleinfeldt#Changing template content on Wikidata dokumentiert. Damit lasse ich Dich diesmal erstmal machen und ausprobieren, nehme das Objekt aber auf die Beobachtungsliste und kann auf Wunsch auch gern helfen. Du weißt ja, wo Du mich hier findest :-)

Viele Grüße!

Doc Taxon (talkcontribs)

Hi! This property should be listed as identifier and not as statement, because its value is an ID. What is your meaning about it?

MisterSynergy (talkcontribs)

That seems to be controversial. Apparently the values are not stable, thus they do not identify their entities. Read here:

You can try to start a new discussion if you think that the values are stable (unlike found before), otherwise I’m afraid you’ll not going to get this changed. Cheers!

Doc Taxon (talkcontribs)

Ah! Okay, thank you!

Doc Taxon (talkcontribs)

Ähm, um es zu verstehen: wie lässt sich das eigentlich von Statement auf Identifier oder anders rum ändern?

MisterSynergy (talkcontribs)

Auf Nutzerebene überhaupt nicht. Den Datentyp von Eigenschaften kann ich glaub ich nicht einmal als Administrator ändern, das bräuchte wohl einen Entwicklereingriff.

Es werden im Web-Frontend einfach alle Eigenschaften mit Datentyp "external-id" im Identifier-Bereich angezeigt. Technisch sind das aber auch einfach Strings. Die Übersicht ist einfach der Tatsache geschuldet, dass anderenfalls die Eigenschaften viel zu unübersichtlich dargestellt werden würden, so wie das bis ca. 2015 oder so der Fall war. Wenn Du ein Datenobjekt maschinenlesbar runterlädst, zum Beispiel per Special:EntityData/Q1380.json, dann haben die Identifier keine solche Sonderplatzierung.

Ärgerlich ist das tätsächlich bei den Fällen, wo es nicht ganz klar ist ob das ein Identifikator ist oder nicht—so wie dieser.