Comment by pella

5 days ago

I have created a minimal wikidata query https://w.wiki/E5e3

  SELECT ?language ?languageLabel ?inceptionDate 
         (GROUP_CONCAT(DISTINCT ?website; SEPARATOR=", ") AS ?websites)
         (GROUP_CONCAT(DISTINCT ?developerLabel; SEPARATOR=", ") AS ?developers)
         (GROUP_CONCAT(DISTINCT ?paradigmLabel; SEPARATOR=", ") AS ?paradigms)
  WHERE {
    # Find items that are either programming languages or types of programming languages
    {
      ?language wdt:P31 wd:Q9143 .  # programming language
    } UNION {
      ?language wdt:P31 wd:Q116481801 .  # type of programming language
    }
    
    # Get the inception date
    ?language wdt:P571 ?inceptionDate .
    
    # Filter for languages created within the last 10 years
    FILTER(?inceptionDate >= "2009-05-12"^^xsd:dateTime)
    
    # Optional properties to get more information
    OPTIONAL { ?language wdt:P856 ?website . }  # official website
    OPTIONAL { 
      ?language wdt:P178 ?developer . 
      ?developer rdfs:label ?developerLabel .
      FILTER(lang(?developerLabel) = "en")
    }  # developer
    OPTIONAL { 
      ?language wdt:P3966 ?paradigm . 
      ?paradigm rdfs:label ?paradigmLabel .
      FILTER(lang(?paradigmLabel) = "en")
    }  # programming paradigm
    
    ?language rdfs:label ?languageLabel .
    FILTER(lang(?languageLabel) = "en")
  }
  GROUP BY ?language ?languageLabel ?inceptionDate
  ORDER BY DESC(?inceptionDate)  # Sort by date, newest first
  LIMIT 100

It's a good start, and i can't think of missing items off-hand, and i didn't know you could do that. I've done queries like this on the wiki sql itself locally, but i didn't know there was a notebook interface to querying like that.