- From: Richard Wallis <richard.wallis@oclc.org>
- Date: Mon, 14 Jan 2013 09:32:41 +0000
- To: Gregg Kellogg <gregg@greggkellogg.net>
- CC: Jason Douglas <jasondouglas@google.com>, "public-vocabs@w3.org" <public-vocabs@w3.org>
- Message-ID: <CD19813A.4CB3%richard.wallis@oclc.org>
Hi Gregg, Referencing the other current thread on this list about the purpose of Schema.org and the breadth and purpose of the list itself, I am looking at this from the point of view of someone marking up their web pages. Using the additionalType property, I come up with something like this in Microdata: <div itemscope itemtype="http://schema.org/Person"> <link itemprop="additionalType" href="http://schema.org/FictionalThing" /> <span itemprop="name">Harry Potter</span> Affiliation: <span itemprop="affiliation">Hogwarts</span> <div itemscope itemtype="http://schema.org/FictionalThing"> From the book: <span itemprop="referencedIn">Harry Potter and the Philosopherıs Stone</span> </div> </div> I am deliberately resisting the urge to create a Character class, as it is an approach that will obviously not scale across all the fictitious things that we could come across. How is this different to saying that a thing we are describing is a schema:Book with an additionalType of schema:Offer so that we can so that we can describe both its creative work and product or sale properties. I acknowledge that Character may be a special case that requires a type after all we have a word in English to describe a fictitious person in a creative work, so it may well have enough extra importance to demand one. But using what is a special case to test a generic theory doesnıt work very well lets get generic right and then specialise if it is inadequate. A bit of turtle always helps me see what Iım modelling, this is what I get for the above which would naturally map to RDFa: <http://example.com/people/1234> a <http://schema.org/Person>; a <http://schema.org/FictionalThing> ; schema:name "Harry Potter"; schema:affiliation "Hogwarts"; schema:referencedIn ³Harry Potter and the Philosopherıs Stone². Iım no RDFS expert so the nuances of your explanation are not fully clear however many of our [web page markup] audience are not even aware of RDFS. The above feels like a simple solution to me (which may be simpler to use, than describe using OWL & RDFS). ~Richard. On 13/01/2013 09:05, "Gregg Kellogg" <gregg@greggkellogg.net> wrote: > Hi Richard, > > On Jan 11, 2013, at 5:44 PM, Richard Wallis <richard.wallis@oclc.org> wrote: > >> Re: Modeling fictional characters in movies and TV >> Hi Gregg, >> >> Sorry for replying to this one out of sequence, I have been thinking about it >> and discussing it ;-) >> >> You say ³From my understanding of RDFS, if I have a subject with two >> different types, then I'm really saying that the properties associated with >> this subject are the intersection of those two types.² >> >> My understanding is that the result would be the union of the properties of >> the two types, thus achieving the result I was suggesting. > > Yes, of course you're right, I was confusing this with rdfs:subTypeOf. My > concern is that if I wanted to describe properties on a fictional person, I > would need to define a type which is the union of schema:Person and > schema:FictionalThing, such as the following: > > :FictionalPerson a [ a owl:Class; owl:unionOf (schema:Person > schema:FictionalThing)] . > >> I am confused by your actor example, as an actor would not normally be a >> fictional Person, the character they portray would be. > > I was using schema:actor as a property of a schema:Character. When I was > saying that schema:actor had the domain of wikia:Character, I was saying that > a Character may have an associated Actor; I think this is okay. If I had used > rdfs:range instead of rdfs:domain, then it would be a problem. > >> To satisfy your example of an actor portraying a fictional character, I >> believe we may be looking for a type of Person ŒActorı that has a property of >> Œportrayedı or Œcreatedı that would have an expected type of Person. When >> encoding your data you could then describe that person (your character) as >> being of type Person and of type FictionalThing. > > That "portrayed" is an appropriate inverse property of actor, as if a > character has an Actor, an actor portrays a Character. > >> To be successful we need to find a generic way of enabling any Œthingı to be >> described as a FictionalThing picking off individual solutions for specific >> types of things such as a character simply wonıt scale. > > Yes, I think that having such a generic mechanism is a good idea, it's just > that if you want to start to describe properties on the "mixin" of Person and > FictionalThing, though, you need to be able to describe the union type. I > believe that this is the intent of schema:rangeIncludes/domainIncludes. I > think that appropriate rules for these could be the following (although > expressing it formally will require some more work. > > For all classes ?c* which have a common subject and rdfs:rangeIncludes > predicate, construct the following triples: > > _:rangeClass a owl:Class; owl:unionOf (?c*) . # same for domains > > Actually constructing these statements is challenging because owl:unionOf > takes a list rather than multiple repeated statements for each object. > > Note that multiple properties having the same set of range/domainIncludes will > result in multiple blank nodes, which entail each other, but are not > equivalent nodes. Furthermore, actually using the property in a concrete > instantiation uses an entailment rule that claims that the range is of an > equivalent class > > <JamesTKirk> schema:actor <WilliamShatner> . > > would end up entailing > > <JamesTKirk> a [ owl:Class; owl:unionOf (schema:Person schema:FictionalThing) > ]. > > due to rule rdfs2 > > If it is appropriate for schema.org <http://schema.org> to define a something > like a character property (in addition to the Performance property suggested > by Yves), then I think it does need to define a schema:Character class, so > that properties such as schema:actor can be ascribed to it. For schema > definition purposes, in the spirit of not getting all pedantic about using OWL > to do this representation, it might require adding something like a > schema:classIncludes annotation property, similar to rangeIncludes and > domainIncludes so we could assert: > > schema:Character schema:classIncludes schema:Person, schema:FictionalThing . > > Gregg > >> ~Richard. >> >> >> >> On 09/01/2013 21:14, "Gregg Kellogg" <gregg@greggkellogg.net >> <x-msg://178/gregg@greggkellogg.net> > wrote: >> >>> Hi Richard, >>> >>> On Jan 9, 2013, at 1:38 AM, Richard Wallis <richard.wallis@oclc.org >>> <x-msg://178/richard.wallis@oclc.org> > wrote: >>> >>>> Re: Modeling fictional characters in movies and TV >>>> Starting from the point of view that most of the Œrealı types of things we >>>> want to describe could have fictional equivalents fictional people >>>> (characters), fictional organisations, fictional places, fictional >>>> products, fictional automobiles, fictional planets, fictional fizzy drinks, >>>> fictional races, fictional religions, fictional songs, ...., .... >>>> >>>> I am thinking perhaps a more generic solution might be appropriate. >>>> >>>> What about a FictionalThing type. Probably a sub-type of Intangible, having >>>> createdIn and referencedIn properties both having an expected type of >>>> CreativeWork. >>>> >>>> To describe something as fictional you would only have to add >>>> FictionalThing as an alternativeType, or add a typeOf attribute in RDFa. >>>> >>>> That way we would not have to invent a new type for every new thing that we >>>> find a fictional instance for. >>> >>> I agree that there's a more general need here, and that anything could be >>> fictional, but I think just adding another type doesn't really solve the >>> problem. From my understanding of RDFS, if I have a subject with two >>> different types, then I'm really saying that the properties associated with >>> this subject are the intersection of those two types. It actually is sort of >>> the reverse of this based on rdfs:domain and rdfs:range semantics. If I say >>> the following: >>> >>> schema:actor a rdf:Property >>> rdfs:domain schema:Person, schema:FictionalThing . >>> >>> What I'm saying is that the property is on _both_ schema:Person and >>> schema:FictionalThing. In general, I don't want 'actor' to be a property of >>> either schema:Person or schema:Thing. Dan's introduced the notion of >>> schema:rangeIncludes to address this problem, but the semantics haven't >>> entirely been worked out yet. This issue is, is there a similar >>> schema:typeIncludes that uses something closer to owl:unionOf semantics. >>> But, using schema:additionalType (or @typeof with RDFa) won't do this, >>> AFAIK. >>> >>> The way I had actually modeled Character for Wikia was closer to the >>> following: >>> >>> wikia:Character a owl:Class >>> rdfs:subClassOf [ a owl:Class; owl:unionOf schema:CreativeWork, >>> schema:Person ] . >>> >>> This basically allows me to define properties on wikia:Character that done >>> "infect" schema:Person or schema:CreativeWork. >>> >>> Gregg >>> >>>> ~Richard. >>>> >>>> >>>> On 09/01/2013 02:04, "Jason Douglas" <jasondouglas@google.com >>>> <x-msg://178/jasondouglas@google.com> >>>> <x-msg://3694/jasondouglas@google.com >>>> <x-msg://3694/jasondouglas@google.com> > > wrote: >>>> >>>>> >>>>> >>>>> >>>>> On Tue, Jan 8, 2013 at 6:01 PM, Gregg Kellogg <gregg@greggkellogg.net >>>>> <x-msg://178/gregg@greggkellogg.net> <x-msg://3694/gregg@greggkellogg.net >>>>> <x-msg://3694/gregg@greggkellogg.net> > > wrote: >>>>>> On Jan 8, 2013, at 5:43 PM, Jason Douglas <jasondouglas@google.com >>>>>> <x-msg://178/jasondouglas@google.com> >>>>>> <x-msg://3694/jasondouglas@google.com >>>>>> <x-msg://3694/jasondouglas@google.com> > > wrote: >>>>>> >>>>>>> > On Tue, Jan 8, 2013 at 3:43 PM, Gregg Kellogg <gregg@greggkellogg.net >>>>>>> <x-msg://178/gregg@greggkellogg.net> >>>>>>> <x-msg://3694/gregg@greggkellogg.net >>>>>>> <x-msg://3694/gregg@greggkellogg.net> > > wrote: >>>>>>> > TL:DR: propose adding schema:Character, schema:Location, and >>>>>>> schema:FictionalLocation classes, along with a schema:character >>>>>>> property. >>>>>>> > >>>>>>> > In the work I'm doing with Wikia, we're using extensions to schema.org >>>>>>> <http://schema.org> <http://schema.org <http://schema.org/> > >>>>>>> <http://schema.org <http://schema.org/> <http://schema.org/> > to add >>>>>>> structure to Wiki content. Wikia hosts hundreds of thousands of wiki's, >>>>>>> mostly related to special-interest subjects. Important classes of these >>>>>>> include sites about Movies, TV Shows/Series and Video Games. >>>>>>> > >>>>>>> > Cool!! >>>>>>> > >>>>>>> > >>>>>>> > The schema.org <http://schema.org> <http://schema.org >>>>>>> <http://schema.org/> > <http://schema.org <http://schema.org/> >>>>>>> <http://schema.org/> > vocabulary is pretty useful in doing this but >>>>>>> lacks some important properties and types: >>>>>>> > >>>>>>> > Character class: a Character is a subclass of Person, which is >>>>>>> intended to represent some fictional character. This could include >>>>>>> fictional human characters, such as Sam Spade, as well as non-human >>>>>>> characters, such as "The Cat in the Hat". As such, it could also be >>>>>>> considered to be a union of schema:CreativeWork and schema:Person. >>>>>>> Alternatively, it may simply be a sub-class of Creative Work which >>>>>>> simply has some properties in common with Person (birthDate, colleague, >>>>>>> gender, ...). Note that books can also have characters. >>>>>>> > >>>>>>> > Character property: An important characteristic of things such as >>>>>>> movies, and TV shows is the characters that are in them. For instance, >>>>>>> TVEpisode has actor, director, producer and so forth, but no way to >>>>>>> indicate the characters that are in the show. Here is where having >>>>>>> Character class comes in handy, so that you might have the following: >>>>>>> > >>>>>>> > >>>>>>> <http://en.memory-alpha.org/wiki/Where_No_Man_Has_Gone_Before_(episode)> >>>>>>> > a schema:TVEpisode; >>>>>>> > schema:name "Where No Man Has Gone Before"@en; >>>>>>> > schema:partOfTVSeries >>>>>>> <http://en.memory-alpha.org/wiki/Star_Trek:_The_Original_Series>; >>>>>>> > schema:character <http://en.memory-alpha.org/wiki/James_T._Kirk>; >>>>>>> > schema:actor <http://en.memory-alpha.org/wiki/William_Shatner> . >>>>>>> > >>>>>>> > One downside of this is that when you have multiple characters you >>>>>>> lose the ability to correlate the actor to the character. >>>>>> >>>>>> In the example below, I set schema:actor on the character >>>>> >>>>> ah, missed that. >>>>> >>>>>> , but it's obviously loosing some temporal information. More complex >>>>>> modeling can be more accurate, but within the context of a single graph >>>>>> (e.g., for a specific episode), we can probably simplify it that there is >>>>>> a signal actor for each character, or at least a set of actors. >>>>>> >>>>>>> > An alternative, that Freebase uses, is to create a class for >>>>>>> Performance, that has the properties of character (expects Character has >>>>>>> you defined) and actor (which works the same as actor on today). >>>>>> >>>>>> This is sort of like an Event, which acts to join various elements >>>>>> together (characters and actors in this case), perhaps along with >>>>>> elements such as scenes and locations. I like the idea of having a >>>>>> Performance class, but there may be times when simpler modeling works. >>>>>> >>>>>>> > Connecting that to TVEpisode could be done with either a new >>>>>>> "performance" property or by making actor accept Person or Performance. >>>>>>> > >>>>>>> > >>>>>>> > <http://en.memory-alpha.org/wiki/James_T._Kirk> a schema:Character >>>>>>> > schema:name "James T. Kirk"; >>>>>>> > schema:birthDate "2233-03-22"^^xsd:date; >>>>>>> > schema:deathDate "2371"^^xsd:gYear; >>>>>>> > schema:actor <http://en.memory-alpha.org/wiki/William_Shatner> . >>>>>>> > >>>>>>> > Another class of properties generally useful for works of media >>>>>>> classes is Location. A schema:Location class could be a sub-class of >>>>>>> schema:Place, intended to describe locations that might not be real, or >>>>>>> not at least not having geographic coordinates you can get to using >>>>>>> Goole Maps. A location could also be a Fictional Location, such as >>>>>>> Middle Earth. >>>>>>> > >>>>>>> > Lastly, many wiki's concern themselves with Video Games, which have >>>>>>> quite deep structure. Logically, a Video Game is probably a sub-class of >>>>>>> schema:SoftwareApplication. Of course, there are many other things that >>>>>>> could be modeled on video games, such as levels, objectives and weapons, >>>>>>> but having a concrete class for describing them would be quite useful. >>>>>>> > >>>>>>> > Since the Wikia communities are the real domain experts here do you >>>>>>> think there's any chance they could enumerate these in a public >>>>>>> schema.org <http://schema.org> <http://schema.org <http://schema.org/> >>>>>>> > <http://schema.org <http://schema.org/> <http://schema.org/> > >>>>>>> extension proposal? >>>>>> >>>>>> This post was an attempt to get that started, and the most obvious >>>>>> missing pieces are for Character and Location, along with the character >>>>>> relationship. >>>>> >>>>> Agreed, those are needed incremental additions. >>>>> >>>>>> >>>>>> Video Games is a deeper subject, and we can share the work we're doing, >>>>>> but it will be a more substantive proposal. I'd really like to use it to >>>>>> get a conversation with other people who have worked on modeling games. >>>>>> Our current focus has been on linear first-person shooter style games, >>>>>> but much of the work carries over to open-world/parallel mission >>>>>> environments too. We'll come back with more on this in the future. >>>>> >>>>> Yeah, Video Games is where I was hoping for a more "substantive proposal" >>>>> as you say. Sounds good. >>>>> >>>>>> >>>>>> Gregg >>>>>> >>>>>>> > -jason >>>>>>> > >>>>>>> > >>>>>>> > Gregg Kellogg >>>>>>> > gregg@greggkellogg.net <x-msg://178/gregg@greggkellogg.net> >>>>>>> <x-msg://3694/gregg@greggkellogg.net >>>>>>> <x-msg://3694/gregg@greggkellogg.net> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> >>>>> >>>>> >>> >>> > >
Received on Monday, 14 January 2013 09:33:21 UTC