(2013-07-30, 13:32)DiMag Wrote:
1. In your schema, would genres, tags and sets be attributes? And would attributes (in general, not just the aforesaid ones) be freely linkable to any object type, or would there be a restriction based on semantical relationships? Example: genre is inappropriate for documentaries or (should they come to be defined as a distinct object) sports shows. Tags can be in principle be used across all objects. Sets only serve as a binder for a single collection.
Genres, tags, and sets are all actually object types. They are child types of the Grouping type, which also includes things like Season, Album, and Playlist. So, there are instead relationships defined, like "movie_has_genre", "object_has_tag", "movieset_has_movie"; this is where the binding between a movie and its genres comes from. So, if documentary is a child type of Movie, the "movie_has_genre" relationship need not be inheritable so that, in your example, we won't be trying to fetch genres in a case where it may be inappropriate.
Also, like the object types, we have attribute types, which have a defined object type they can be applied to and a defined inheritability, so, for example, "filename" is an attribute for the Content object type, but it is inheritable for all of the children so that videos, songs, pictures, etc, can have this attribute as well. Consequently, any given object can not have all possible attributes; this prevents us from trying to fetch the plot of a Band, for example.
(2013-07-30, 13:32)DiMag Wrote:
2. If you plan to---and I submit that you should do so--- drop the segmentation of the video database between unitary (movie) and episodic (tvshow) objects, shall you then retain movie as a template for objects with that content but allow it to have episodic content? (Presently the only practical need for this is the ability to define DVD Extras in the same manner as TV shows define special seasons. It is not a negligible need.)
I'm not entirely certain I'm understanding this question, so please feel free to correct me if this response is not helpful. I'm trying, at least, to treat video files which represent movies and video files which represent episodes of a show similarly. There is a Video object type, and Movie, TV Show, and Episode all inherit from it. (Now that I'm writing this out, it seems like TV Show should be a grouping, and only have Movie and Episode be Videos). Movie (currently) has one grouping relationship, "movieset_has_movie," so you can put a movie into arbitrary sets. Two other relationships are "tvshow_has_season" and "season_has_episode." Through these two, relationship between a tv series and all of its episodes is conducted. Beyond this grouping, episodes are videos just like movies.
As for the DVD extra example: with the new schema of objects connected by relationships, it would be rather trivial to have added an object type, say "DVD Extra", and a relationship "movie_has_extra" which would link these two together. Then, some sort of GUI would need to be added to the movie info page (this part isn't my forte) to access this linked content.
(2013-07-30, 13:32)DiMag Wrote:
3. In defining new objects, do you take into account the availability of scrapable metadata material at present, or do you reason "once I make the structure available, at least one site will rise to the challenge and make metadata available"?
One of the goals of this new schema is
Quote:Everything gets added to the library, whether we can find online information or not.
So, I think the idea would be, we have all of these attributes, more can be added when wanted/necessary, and either allow the user to fill them or a scraper will rise to the occasion. However, I'm just designing the database to make it easy to do, so I can't speak for certain how this will go.