iptc / sport-schema

The next generation of sports data, based on IPTC’s SportsML and semantic web principles
17 stars 1 forks source link

Add facets to support more detailed definitions of the sport played #194

Open riannella opened 2 months ago

riannella commented 2 months ago

Hi, how do you assert the actual sport being played?

For example, in this Football example: https://sportschema.org/examples/soccer/ How do I know the sport is "football" (yes, I know it is called "soccer" in a few countries :-)

bquinn commented 2 months ago

That's what

sport:sport            medtop:20001065 .

is saying. It refers to our Media Topics vocabulary https://cv.iptc.org/newscodes/mediatopic

riannella commented 2 months ago

Thanks @bquinn

next question...

If I wanted to be more specific, like "women's football" ?

bquinn commented 2 months ago

If I wanted to be more specific, like "women's football" ?

We don't currently have a way to do that.

Maybe we could revive the Sports Facets work that we did a while ago but never really caught on... Here's some documentation about it: https://iptc.org/std/NewsCodes/guidelines/#_using_media_topics_and_facets_in_your_content

So we could do something like

@prefix sport:              <https://sportschema.org/ontologies/main/> .
@prefix medtop:             <http://cv.iptc.org/newscodes/mediatopic/> .
@prefix aspfacet:           <http://cv.iptc.org/newscodes/asportfacet/> .
@prefix aspfacetvalue:      <http://cv.iptc.org/newscodes/asportfacetvalue/> .

<Competition> sport:sport medtop:20001065  ;          # Media Topics value for soccer
              sport:hasfacet aspfacet:gender ;        # Note: sport:hasfacet property does not yet exist
              sport:facetvalue aspfacetvalue:women .  # Note: sport:facetvalue property does not yet exist
pauljkelly commented 2 months ago

Yes, I think that might be a good idea

bquinn commented 1 month ago

Hmm I was implementing this and it made me think, don't we sometimes want to have more than one facet / facetvalue pair?

Also some facet values are unconstrained strings... eg "distance"

eg for Paralympic Womens 400m T11:

<CompABC123> a sport:Competition ;
  sport:sport medtop:20000827 ; # Athletics (en-GB) / Track & Field (en-US)
  sport:hasfacet aspfacet:distance ;
  sport:hasfacetvalue "400m" ;
  sport:hasfacet asportfacet:gender ;
  sport:hasfacetvalue aspfacetvalue:women ;
  sport:hasfacet aspfacet:parasporttype ;
  sport:hasfacetvalue "T11" .

This obviously won't work as a pile of triples, it needs to be some kind of array or multi-valued object...

So should we do something like:

<CompABC123> a sport:Competition ;
  sport:sport medtop:20000827 ; # Athletics (en-GB) / Track & Field (en-US)
  sport:facetpair [
    sport:hasfacet aspfacet:distance ;
    sport:hasfacetstringvalue "400m" ; # different property to handle string values? ugh
  ] ;
  sport:facetpair [
    sport:hasfacet asportfacet:gender ;
    sport:hasfacetvalue aspfacetvalue:women ;
  ] ;
  sport:facetpair [
    sport:hasfacet aspfacet:parasporttype ;
    sport:hasfacetstringvalue "T11" . # different property to handle string values? ugh
  ] .

I know the RDF police won't like the blank nodes here (nods to @silveroliver and Paul Wilton :-) ) so should we create an object called FacetPair ?? Seems like a lot of work to add a facet. Maybe

It gets even trickier for things like "women's discus throw F55", I think we need a new facet "aspfacet:athleticstype" which doesn't currently exist: it would include discus, shot-put, hammer throw etc. (Maybe OpenTrack has a CV for athletics types that we could use / borrow?)

riannella commented 1 month ago

My view of this approach is that it moves away from the ontological model to a structured model, and hence, you loose all the benefits of an ontology.

What its wrong with defining and using (real) properties? such as sport:gender and sport:paracategory

bquinn commented 1 month ago

That makes a lot of sense - thanks for pointing this out! It seems obvious now.

How about we take the list of facets in https://cv.iptc.org/newscodes/asportfacet/ and we turn them into actual properties, in the same way that we have done with some of the sports stats vocabs?

I'll try that approach in the PR branch and we can see how it works.