Open main menu

User talk:TomT0m

About this board

Previous discussion was archived at User talk:TomT0m/Archive 1 on 2015-08-10.

VIGNERON (talkcontribs)
TomT0m (talkcontribs)

tu as raison, c’est bien une erreur

VIGNERON (talkcontribs)

Ok, du coup c'est logique.

Reply to "Précision"
Jeblad (talkcontribs)

I was looking at your Module:PropertyPath, and wondered how you would do “attribute selectors” like in CSS selectors. The reason why is that I have messed around with something similar, without matching paths, but it does have attribute selectors. It will make it possible to write something like child/child['sex or gender' eq 'male']. With some additional fancyness (!) it is possible to write just child/child[sex or gender eq male].

My idea allows matching on simple cardinal values, but your solution seems to be much better on traversing graphs?

The reason why I was looking at this is that I 'm toying with a tag function “with”. It make a context where an item can be accessed with short form paths, and the results can be used for morphological changes in the content between the tags. It would make it possible to write something like <with root="Q34201">{:label} have {child/child::count} grandchild+{child/child::number}</with>

The +-thingy controls inflection, and :number will return grammatical number like singular (sg), plural (pl), or something similar. This is a pretty standard fst-based inflection scheme. A single colon is a value attribute or claim from the result, and a double colon is a pseudoattribute on the result. The double colon syntax can be simplified.

I've been toying with this for several years, so don't hold your breath, I'm not finishing this tomorrow! Actually I tried to get this accepted a few years back, but now I doubt it is possible to get acceptance for something like this.

Reply to "“With” and PropertyPath"

Reminder: Community Insights Survey

1
MediaWiki message delivery (talkcontribs)

RMaung (WMF) 19:54, 20 September 2019 (UTC)

Reply to "Reminder: Community Insights Survey"
MediaWiki message delivery (talkcontribs)

RMaung (WMF) 17:38, 10 September 2019 (UTC)

Reply to "Community Insights Survey"
Nomen ad hoc (talkcontribs)
TomT0m (talkcontribs)

L’idée c’est que les professeurs d’université sont des cas particuliers d’enseignants chercheurs à l’université. Donc tout prof. (d’université sous entendu) est aussi un enseignant chercheur de l’université de france.

Donc ça satisfait les conditions pour qu’on ait

<professeur d’université> subclass of (P279) <enseignant chercheur>

(sachant que

<A> subclass of (P279) <B>

signifie « tout ce qui est un exemple de A est aussi un exemple de B », on est pile poil dans ce pour quoi c’est approprié.

On peut donc mettre en profession « professeur d’université », ce qui mécaniquement veut dire qu’ils sont enseignants chercheurs et indique leur rang du même coup. Foin réellement besoin de propriété « grade ».

Nomen ad hoc (talkcontribs)

Raisonnement intéressant ! Mais à mon sens, ce n'est pas parce qu'une fonction est une sous-classe d'une activité qu'elle est également à considérer comme telle (par exemple, parlementaire est une sous-classe de législateur et donc de personnalité politique (une activité)

TomT0m (talkcontribs)

Ça se discute. Comment tu définis « politicien » ? Précisément par « quelqu’un qui occupe une fonction politique » (ou au moins, occuper une fonction politique est nécessaire pour être politicien.

Qu’est-ce qui définit cette fonction ? Un ensemble d’activités associées aux responsabilité qu’elle confère. Autrement dit, ce qui définit la fonction c’est … une certaine activité. Tout comme ce qui définit une activité. Par exemple ce qui définit « boulanger » ? fabriquer du pain. Législateur ? faire les lois. Membre du parlement ? Tu dois trouver une pelleté de texte définissant les activités que doit remplir un membre du parlement.

Pour moi tout ça ce sont des activités, effectivement, avec un certain décorum dans le cas de fonctions républicaines et surtout une manière d’y accéder très codifiée (élection, concours …)

Nomen ad hoc (talkcontribs)

Les fonctions sont aussi des activités, certes. Mais alors, faut-il cesser de les déclarer comme fonction ? Auquel cas, je ne verrais pas trop l'intérêt d'avoir une propriété dédiée...

TomT0m (talkcontribs)

Il y a une certaine redondance dans un tel modèle. Quelle est l’utilité, si nous savons qu’une personne a occupé une fonction politique, de préciser que c’est une « personnalité politique » en plus ? Ça se discute effectivement. Le seul truc qu’on a besoin de savoir c’est que la fonction en question est une fonction politique, sinon un président de la république est trivialement un politicien.

TomT0m (talkcontribs)
TomT0m (talkcontribs)

Il y a quand même évidemment un piège potentiel, l’utilisation des rangs. Si on prend quelqu’un qui s’est retiré de la vie politique, NKM par exemple, la « bonne pratique » serait de mettre son poste actuel en rang privilégié. Du coup, si on veut inférer que ce fut une personnalité politique il ne faut pas oublier d’aller chercher dans ses anciens postes également, parce que mettre une déclaration en rang privilégié aura tendance à « masquer » les anciens si on y prend pas garde.

Mais en regardant l’élément NKM à la date d’aujourd’hui il n’y a en pratique tout simplement aucune utilisation des rangs…

TomT0m (talkcontribs)

De manière intéressante il y a 18 000 éléments qui sont marqués ayant une fonction politique mais n’ayant pas d’occupation déclarée.

En cliquant sur 2 d’entre eux, un comte (moyen age) et un ministre africain.

Nomen ad hoc (talkcontribs)
Reply to "Rangs académiques"
Bouzinac (talkcontribs)

Hello there, saurais tu m'aider pourquoi cette requête passe pas ? L'idée est de chercher les états existants/ayant existé qq part en Norvège. Je m'étonne de ne pas trouver par exemple : Orkdalen Kingdom (Q63341339) Merci d'avance pour ton aide précieuse !


SELECT ?country ?location ?countryLabelEn ?countryLabelFr ?creationDate ?dissolutionDate WHERE {
  # norway coordinates
  wd:Q20 wdt:P625 ?norwayLoc . 
  SERVICE wikibase:around { 
      ?country wdt:P625 ?location . 
      bd:serviceParam wikibase:center ?norwayLoc . 
      bd:serviceParam wikibase:radius "500" . 
      bd:serviceParam wikibase:distance ?dist.
  } 
  ?country wdt:P31/wdt:P279*  wd:Q7275.
  optional { ?country rdfs:label ?countryLabelFr filter(lang(?countryLabelFr)= "fr")} .
  optional { ?country rdfs:label ?countryLabelEn filter(lang(?countryLabelEn)= "en")}.
  optional { ?country wdt:P571 ?creationDate }.
  optional { ?country wdt:P576 ?dissolutionDate }.
<nowiki>}</nowiki>

Try it!

TomT0m (talkcontribs)

Cq passe en limitant le mobre de pays envisagés :

SELECT ?country ?location ?countryLabelEn ?countryLabelFr ?creationDate ?dissolutionDate ?dist WHERE {
  # norway coordinates
  wd:Q20 wdt:P625 ?norwayLoc . 
  SERVICE wikibase:around { 
      ?country wdt:P625 ?location . 
      bd:serviceParam wikibase:center ?norwayLoc . 
      bd:serviceParam wikibase:radius "500" . 
      bd:serviceParam wikibase:distance ?dist.
  } 
  { select ?country {
        ?country wdt:P31/wdt:P279*  wd:Q7275. } limit 100000 }
  optional { ?country rdfs:label ?countryLabelFr filter(lang(?countryLabelFr)= "fr")} .
  optional { ?country rdfs:label ?countryLabelEn filter(lang(?countryLabelEn)= "en")}.
  optional { ?country wdt:P571 ?creationDate }.
  optional { ?country wdt:P576 ?dissolutionDate }.
}

Try it!

et j'ai le royaume en question dans les résultats pour ma part. Après il faut que les coordonnées soient renseignées pour que ça marche, je sais pas si c'set fréquent pour ce type d'entités. C'est pas nécessairement étonnant que ça parte en timeout étant donnée que

SELECT ?country ?location ?countryLabelEn ?countryLabelFr ?creationDate ?dissolutionDate WHERE {
  ?country wdt:P31/wdt:P279*  wd:Q7275.
}

Try it! part elle aussi en hors délais. L'arbre des sous-classes de https://tools.wmflabs.org/wikidata-todo/tree.html?lang=fr&q=Q7275&rp=279 mériterai d'être nettoyé, ce qui risque de pas être une mince affaire étant donné que je sais pas trop si on a une définition bien claire de toutes ces notions, c'est pas nécessairement une bonne idée de partir d'un élément aussi vague.

Cela dit l'autre partie de la requête (les éléments géorlocalisés autours des coordonées de la norvège passe elle allègrement, et en forçant le moteur à essayer ça en premier avec une sous requçete nommées, le tout passe sans soucis dans les délais :

SELECT ?country ?location ?countryLabelEn ?countryLabelFr ?creationDate ?dissolutionDate 

with {
  select ?country {
    wd:Q20 wdt:P625 ?norwayLoc . 
    SERVICE wikibase:around { 
        ?country wdt:P625 ?location . 
        bd:serviceParam wikibase:center ?norwayLoc . 
        bd:serviceParam wikibase:radius "500" . 
        bd:serviceParam wikibase:distance ?dist.
    }
  } 
} as %places
WHERE {
  include %places .
  ?country wdt:P31/wdt:P279*  wd:Q7275.
  optional { ?country rdfs:label ?countryLabelFr filter(lang(?countryLabelFr)= "fr")} .
  optional { ?country rdfs:label ?countryLabelEn filter(lang(?countryLabelEn)= "en")}.
  optional { ?country wdt:P571 ?creationDate }.
  optional { ?country wdt:P576 ?dissolutionDate }.
}

Try it! (c'est un soucis d'ordonnacement, le moteur se rend pas compte/ignore qu'il gagnerait du temps à effectuer les choses dans ce sens et calcule d'abord un résultat intermédiaire sans espoir d'aboutir avant de savoir si les résultats sont proches de la norvège, alors qu'il faut lui faire calculer les éléments proche de la norvèges puis vérifier si ce sont des instances d'états)

Bouzinac (talkcontribs)
Bouzinac (talkcontribs)
TomT0m (talkcontribs)
SELECT distinct  ?country ?location ?countryLabelEn ?countryLabelFr ?creationDate ?dissolutionDate ?type

with {
  select ?country {
    wd:Q20 wdt:P625 ?norwayLoc . 
    SERVICE wikibase:around { 
        ?country wdt:P625 ?location . 
        bd:serviceParam wikibase:center ?norwayLoc . 
        bd:serviceParam wikibase:radius "500" . 
        bd:serviceParam wikibase:distance ?dist.
    }
  } 
} as %places
WHERE {
  include %places .
  ?country wdt:P31/wdt:P279*  ?type . values ?type {wd:Q7275 wd:Q1620908}.
  optional { ?country rdfs:label ?countryLabelFr filter(lang(?countryLabelFr)= "fr")} .
  optional { ?country rdfs:label ?countryLabelEn filter(lang(?countryLabelEn)= "en")}.
  optional { ?country wdt:P571 ?creationDate }.
  optional { ?country wdt:P576 ?dissolutionDate }.
} order by ?country

Try it!

TomT0m (talkcontribs)

La bonne traduction de "petty kingdom", ce serait pas un truc comme protoroyaume?

Bouzinac (talkcontribs)

Aucune idée. Tu as un peu raison mais je ne sais pas trop car la définition du wikitionnaire semble plus évoquer proto dans le sens préhistorique/prototype : quelque chose de débutant, de pas bien formé encore.

"petty kindgdom" serait plus dans le sens petit royaume, avec un roitelet, de taille modeste...

Je découvre (cf discussion actuelle sur le Bistrot) qu'il y a plein de nuances possibles au terme royaume… ce qui pour moi ne facilite pas l'utilsiation de Wikidata. Si un néophyte fait une requête avec "royaume", il aura l'illusion d'avoir la liste des royaumes présents sur Wikidata….

Reply to "Etats de Norvège"
Simon Villeneuve (talkcontribs)

Salut,
J'ai lancé une nouvelle section sur les fr:WP:RAW qui s'intitule "SPARQL du mois" (exemple). Je lance l'invitation ici et là à des contributeurs qui maîtrisent relativement bien le SPARQL. Si jamais tu penses avoir une bonne idée de thématique et/ou de bonne requêtes à partager, n'hésite pas !
La section de février est déjà prête. Pour celle de mars, je pensais faire un tableau avec le nombre d'articles consacré aux hommes et aux femmes par différentes publications externes. J'ai commencé quelque chose, mais je bloque.
En gros, j'aimerais faire un tableau montrant le nombre d'éléments de certaines publications selon les genres. Pour ce faire, j'ai filtré certains identifiants avec cette requête :

SELECT DISTINCT ?property ?propertyLabel ?propertyDescription
WHERE
{
    ?property rdf:type wikibase:Property ;
              wdt:P31/wdt:P279* wd:Q36218176 ;
              wdt:P31/wdt:P279* wd:Q55452870 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }	
}

Try it!

J'aimerais savoir si tu sais comment, pour chacune de ces 23 propriétés, recenser tous les éléments humains et les diviser en genre ? J'ai trouvé la requête suivante dans les exemples, mais elle n'est construite que pour un cas spécifique.

En bref, je suis capable de faire "à la main" ce travail : faire une requête individuelle pour chacune de ces 23 propriétés, diviser les éléments en genres et entrer ces valeurs dans un tableau. Je me demandais si tu connaissais un moyen de faire la chose d'un seul coup en SPARQL.

TomT0m (talkcontribs)

Oui c'est possible, première tentative : https://query.wikidata.org/#SELECT%20DISTINCT%20%3Fproperty%20%3FpropertyLabel%20%3FpropertyDescription%20%3Fsexe%20%3FsexeLabel%20%28count%28%3Fperson%29%20as%20%3Feffectif%29%0AWHERE%0A%7B%0A%20%20%20%20%3Fproperty%20rdf%3Atype%20wikibase%3AProperty%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20wdt%3AP31%2Fwdt%3AP279%2a%20wd%3AQ36218176%2C%20wd%3AQ55452870%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20wikibase%3AdirectClaim%20%3FpropertyMainValue%20.%0A%20%20%20%20%3Fperson%20%3FpropertyMainValue%20%5B%5D%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20wdt%3AP21%20%3Fsexe%20.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22%20%7D%09%0A%0A%7D%20group%20by%20%3Fproperty%20%3FpropertyLabel%20%3FpropertyDescription%20%3Fsexe%20%3FsexeLabel%20%0A%20%20order%20by%20%3Fproperty%20%3Fsexe mais il y a un peu de nettoyage à faire pour les "valeurs inconnues" je crois.

TomT0m (talkcontribs)

Entre une étape intermédiaire pour me rendre compte que les cas ou le sexe est inconnus sont probablement des cas ou il s'agit de compagnie ferroviaires ou de groupes donc que beaucoup de "non spécifié" ou "inconnus" ne sont pas très pertinent, je pense être arrivé à un truc pas mal en se restreignant aux humains :

select ?property ?propertyLabel ?propertyDescription ?sexe ?sexeLabel (count(?person) as ?effectif)
{
    ?property rdf:type wikibase:Property ;
              wdt:P31/wdt:P279* wd:Q36218176, wd:Q55452870 ;
              wikibase:directClaim ?propertyMainValue .
  
    ?person ?propertyMainValue [] ;
            wdt:P31 wd:Q5 .
    optional {
       ?person wdt:P21 ?sexe2
       bind(if(isBlank(?sexe2), "inconnu", ?sexe2) as ?sexe3) 
    }
    bind(if(!bound(?sexe3), "non specifié", ?sexe3) as ?sexe) 
  
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }	
  
} group by ?property ?propertyLabel ?propertyDescription ?sexe ?sexeLabel
  order by ?property ?sexe

Try it!

Simon Villeneuve (talkcontribs)

(cela concerne ton premier message. J'explore ton second à l'instant)

Vraiment trop cool !
Ça fait une demi-heure que je tente de transformer en % les effectifs en insérant ici et là des BIND et des count, mais je n'y arrive pas. Tu peux encore m'aider ?
Sinon, pour mieux apprendre le SPARQL, à part le livre sur Wikibook en anglais et les pages de W3C, tu as des suggestions ?

TomT0m (talkcontribs)

Une dernière version (pour l'instant, on verra les pourcentages plus tard) avec moins de ligne :

select ?property ?propertyLabel ?propertyDescription (group_concat(concat(str(?sexe_label_final), ": ", str(?effectif));separator=" - ") as ?sexes) (sum(?effectif) as ?total)

with {

select ?property ?sexe (count(?person) as ?effectif)
{
    ?property rdf:type wikibase:Property ;
              wdt:P31/wdt:P279* wd:Q36218176, wd:Q55452870 ;
              wikibase:directClaim ?propertyMainValue .
  
    ?person ?propertyMainValue [] ;
            wdt:P31 wd:Q5 .
    optional {
       ?person wdt:P21 ?sexe2 .
       bind(if(isBlank(?sexe2), "inconnu", ?sexe2) as ?sexe3) 
    }
    bind(if(!bound(?sexe3), "non specifié", ?sexe3) as ?sexe)
    
 
} group by ?property ?sexe
  order by ?property ?sexe
} as %dataset

where {
  {
    select ?property ?propertyLabel ?propertyDescription ?sexe ?sexe_label_final ?effectif{
      include %dataset .
      optional { ?sexe rdfs:label ?label_sexe filter langmatches(lang(?label_sexe), "fr") }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
      bind (if(bound(?label_sexe), ?label_sexe, ?sexe) as ?sexe_label_final)
    }
  }
} group by ?property ?propertyLabel ?propertyDescription

Try it!

TomT0m (talkcontribs)

Et finalement voilà les pourcentages :

select ?property ?propertyLabel ?propertyDescription 
       (group_concat(concat(str(?sexe_label_final), 
                           ": ", 
                           str(?effectif), " ",
                           "(", str(round(?effectif / sum(?effectif) * 100)), "%",")") ; separator=" - ") as ?sexes) 
       (sum(?effectif) as ?total)

with {

select ?property ?sexe (count(?person) as ?effectif)
{
    ?property rdf:type wikibase:Property ;
              wdt:P31/wdt:P279* wd:Q36218176, wd:Q55452870 ;
              wikibase:directClaim ?propertyMainValue .
  
    ?person ?propertyMainValue [] ;
            wdt:P31 wd:Q5 .
    optional {
       ?person wdt:P21 ?sexe2 .
       bind(if(isBlank(?sexe2), "inconnu", ?sexe2) as ?sexe3) 
    }
    bind(if(!bound(?sexe3), "non specifié", ?sexe3) as ?sexe)
    
 
} group by ?property ?sexe
  order by ?property ?sexe
} as %dataset

where {
  {
    select ?property ?propertyLabel ?propertyDescription ?sexe ?sexe_label_final ?effectif{
      include %dataset .
      optional { ?sexe rdfs:label ?label_sexe filter langmatches(lang(?label_sexe), "fr") }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
      bind (if(bound(?label_sexe), ?label_sexe, ?sexe) as ?sexe_label_final)
    }
  }
  bind( (?effectif / ?total )  as ?pourcent)
} group by ?property ?propertyLabel ?propertyDescription

Try it!

Simon Villeneuve (talkcontribs)

Je suis K.O.

Reply to "SPARQL du mois ?"
Nomen ad hoc (talkcontribs)

Hello,

pour ce qui est de mon message sur le Bistro, malheureusement je ne trouve plus d'exemple :(. Je cherche.

Puisque je vois que tu es logué et actif sur WD, j'en profite ;). Tu te rappelles la condition d'affichage que tu avais créé pour le Who's Who in France dans le module Autorité ? Comme la propriété a été transférée dans le nouveau modèle Dictionnaires, est-ce que tu pourrais la réécrire à cet endroit, éventuellement ? (J'ai essayé de faire un simple copier-coller mais ça me dit qu'il y a des erreurs :/.)

TomT0m (talkcontribs)

Oui j’ai vu ça, pour l’instant j’ai autre chose dans ma TODO list lua, faire afficher le nom de la commune à la date de naissance d’une personne si le nom de la commune a changé depuis dans biographie2. Je regarderai quand j’aurai fini (pas avant quelque jours parce que je manque de courage pour ça ce soir :) )

Nomen ad hoc (talkcontribs)

Ah oui, c'est un gros morceau ça ^^. Bon ben, bon courage et à bientôt ;).

Nomen ad hoc (talkcontribs)

Hello. Si tu n'as vraiment pas le temps, je t'invite à le dire... J'essaierai trouverai un autre contributeur compétent pour bricoler ce bout de code.

Nomen ad hoc (talkcontribs)
TomT0m (talkcontribs)

Quel est l’article ? J’avoue que j’ai fait ça vite fait en testant sur un article sur lequel le lien était supposé s’afficher, pas regardé sur un article sur lequel ce n’était pas supposé :)

Nomen ad hoc (talkcontribs)

Lien corrigé ; je voulais parler de l'article sur Macron.

Nomen ad hoc (talkcontribs)

Cette fois-ci, ça m'a l'air de marcher... Merci encore !!

Reply to "Suite Bistro"
Ghouston (talkcontribs)

Can you think of anything for this to be a subclass of? Otherwise, it can't have instances, without violating constraints at least.

TomT0m (talkcontribs)

It’s a subclass of « mathematical class » or something like this (as any complexity class is a mathematical class, in the sense of set theories)

Reply to "Q908207"

Reminder: Share your feedback in this Wikimedia survey

1
MediaWiki message delivery (talkcontribs)

WMF Surveys, 01:40, 13 April 2018 (UTC)

Reply to "Reminder: Share your feedback in this Wikimedia survey"
Return to the user page of "TomT0m".