You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@any23.apache.org by le...@apache.org on 2014/04/02 14:07:51 UTC

git commit: ANY23-148 Programmes Ontology and updated WO vocab

Repository: any23
Updated Branches:
  refs/heads/master 6c7880825 -> d66e7dbb9


ANY23-148 Programmes Ontology and updated WO vocab


Project: http://git-wip-us.apache.org/repos/asf/any23/repo
Commit: http://git-wip-us.apache.org/repos/asf/any23/commit/d66e7dbb
Tree: http://git-wip-us.apache.org/repos/asf/any23/tree/d66e7dbb
Diff: http://git-wip-us.apache.org/repos/asf/any23/diff/d66e7dbb

Branch: refs/heads/master
Commit: d66e7dbb9da12416e526eb9b969641632c14f069
Parents: 6c78808
Author: Lewis John McGibbney <le...@apache.org>
Authored: Wed Apr 2 13:07:38 2014 +0100
Committer: Lewis John McGibbney <le...@apache.org>
Committed: Wed Apr 2 13:07:38 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/any23/vocab/Programme.java  | 372 ++++++++++++++
 .../main/java/org/apache/any23/vocab/WO.java    | 493 +++++++++++++++++--
 2 files changed, 812 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/any23/blob/d66e7dbb/api/src/main/java/org/apache/any23/vocab/Programme.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/any23/vocab/Programme.java b/api/src/main/java/org/apache/any23/vocab/Programme.java
new file mode 100644
index 0000000..9e2a200
--- /dev/null
+++ b/api/src/main/java/org/apache/any23/vocab/Programme.java
@@ -0,0 +1,372 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.any23.vocab;
+
+import org.openrdf.model.URI;
+
+/**
+ * The <a href="http://purl.org/ontology/po/ ">Programmes Ontology</a> is aimed
+ * at providing a simple vocabulary for describing programmes.</p> 
+ * It covers brands, series (seasons), episodes, broadcast events, broadcast 
+ * services, etc. Its development was funded by the BBC, and is heavily grounded 
+ * on previous programmes data modeling work done there.</p>
+ * 
+ * @author lewismc
+ */
+public class Programme extends Vocabulary {
+
+  public static final String NS = "http://purl.org/ontology/po/";
+
+  private static Programme instance;
+
+  public static Programme getInstance() {
+    if(instance == null) {
+      instance = new Programme();
+    }
+    return instance;
+  }
+
+  //Resources
+  /** A version holding an audio description. */
+  public final URI AudioDescribedVersion  = createClass(NS, "AudioDescribedVersion");
+
+  /** A brand, e.g. `Top Gea`r*/
+  public final URI Brand                = createClass(NS, "Brand");
+
+  /** 
+   * A broadcast event. Subsumes the event concept defined in the Event ontology.
+   * A broadcast is associated with a service, and with a particular version of an episode.
+   */
+  public final URI Broadcast          = createClass(NS, "Broadcast");
+
+  /**   An organization responsible of some broadcasting services.
+   * It can hold a set of services and outlets.
+   */
+  public final URI Broadcaster             = createClass(NS, "Broadcaster");
+
+  /** A category provides a way of classifying a set of programmes. 
+   * Such classifications can be performed according to multiple 
+   * dimensions and taxonomies, e.g. genre, format, places, people, subjects...
+   */
+  public final URI Category          = createClass(NS, "Category");
+
+  /** A physical channel on which a broadcast occurs.
+   * A single outlet or service can be associated with multiple channels.
+   * For example, Radio 4 LW broadcasts on Analogue Long Wave and on Digital
+   * Satellite.
+   */
+  public final URI Channel           = createClass(NS, "Channel");
+
+  /** A particular clip, e.g. `Clip of Top Gear, first series' */
+  public final URI Clip          = createClass(NS, "Clip");
+
+  /** 
+   * Digital Audio Broadcasting */
+  public final URI DAB         = createClass(NS, "DAB");
+
+  /** Digital Video Broadcasting*/
+  public final URI DVB           = createClass(NS, "DVB");
+
+  /** 
+   * A particular episode, e.g. `Top Gear, first episode of the first series' 
+   * or the film 'A Walk in the Sun' (http://www.bbc.co.uk/programmes/b00gfzdt)
+   */
+  public final URI Episode          = createClass(NS, "Episode");
+
+  /** The FM broadcast band */
+  public final URI FM           = createClass(NS, "FM");
+
+  /** Specifies a broadcast as being the first one of a particular version.*/
+  public final URI FirstBroadcast        = createClass(NS, "FirstBroadcast");
+  
+  /**  
+   * Anchor point for format taxonomies, similar to po:Genre for genre taxonomies.
+   * Instances of this concept include documentaries, talk shows, animation, etc.
+   */
+  public final URI Format        = createClass(NS, "Format");
+  
+  /**  
+   * An anchor point for a programmes' genre taxonomy, #
+   * e.g. 'Drama'/'Biographical'.*/
+  public final URI Genre        = createClass(NS, "Genre");
+  
+  /** IP Stream*/
+  public final URI IPStream        = createClass(NS, "IPStream");
+  
+  /** The AM broadcast band.*/
+  public final URI LW        = createClass(NS, "LW");
+  
+  /** Radio services aiming at a local coverage.*/
+  public final URI LocalRadio        = createClass(NS, "LocalRadio");
+  
+  /** Classification of an episode version's region corresponding to a 
+   * musical track being played..*/
+  public final URI MusicSegment        = createClass(NS, "MusicSegment");
+  
+  /** Radio services aiming at a national coverage.*/
+  public final URI NationalRadio        = createClass(NS, "NationalRadio");
+  
+  /** An `original' version, the legacy version of a particular episode.*/
+  public final URI OriginalVersion        = createClass(NS, "OriginalVersion");
+  
+  /** Outlet of a particular service, e.g. Radio 4 LW and FM for Radio 4.
+   * Outlets are services which do not have variations. The identity criteria 
+   * for an outlet is its timeline. For example, Radio 4 LW broadcasts on 
+   * Analogue Long Wave, but also on Digital Satellite. It corresponds to just 
+   * one outlet, as they are simulcasts. The two physical channels for 
+   * broadcasts correspond to po:Channel.*/
+  public final URI Outlet        = createClass(NS, "Outlet");
+  
+  /** A Person.*/
+  public final URI Person        = createClass(NS, "Person");
+  
+  /** A physical place.*/
+  public final URI Place        = createClass(NS, "Place");
+  
+  /** A programme, can either be a brand, a series or an episode.*/
+  public final URI Programme        = createClass(NS, "Programme");
+  
+  /** A programme that can have versions, and as such can be broadcast or 
+   * made available on-demand, e.g. a clip or an episode.*/
+  public final URI ProgrammeItem        = createClass(NS, "ProgrammeItem");
+  
+  /** Services that use a radio medium.*/
+  public final URI Radio        = createClass(NS, "Radio");
+  
+  /** Radio services aiming at a regional coverage.*/
+  public final URI RegionalRadio        = createClass(NS, "RegionalRadio");
+  
+  /** Specifies a broadcast as being a repeat.*/
+  public final URI RepeatBroadcast        = createClass(NS, "RepeatBroadcast");
+  
+  /** A season is a group of broadcasts.*/
+  public final URI Season        = createClass(NS, "Season");
+  
+  /** Classification of an episode version's region, e.g. 
+   * 'this track was played at that time'.*/
+  public final URI Segment        = createClass(NS, "Segment");
+  
+  /** A series, e.g. `Top Gear, first season'*/
+  public final URI Series        = createClass(NS, "Series");
+  
+  /** A broadcasting service. Instances of this concept include BBC Radio Wales, 
+   * BBC Radio 4, BBC News, etc. A service is a collection of outlets which 
+   * contain common material, but with some variations, e.g. by region.
+   * Hence, a service may have multiple outlets (po:Outlet), e.g. BBC Radio 4 
+   * has BBC Radio 4 LW and BBC Radio 4 FM. A hierarchy of services types is 
+   * defined within this ontology, e.g. radio and TV. A service that is a master 
+   * brand only (a service that only commissions programmes, e.g. BBC Switch) should
+   * be an instance of the top-level po:Service.*/
+  public final URI Service        = createClass(NS, "Service");
+  
+  /** A shortened version.*/
+  public final URI ShortenedVersion        = createClass(NS, "ShortenedVersion");
+  
+  /** Classification of an episode version's region holding speech content.*/
+  public final URI SpeechSegment        = createClass(NS, "SpeechSegment");
+  
+  /** Anchor point for subject taxonomies.*/
+  public final URI SignedVersion        = createClass(NS, "SignedVersion");
+  
+  /** A version holding sign language.*/
+  public final URI Subject        = createClass(NS, "Subject");
+  
+  /** Classification of an episode version's region corresponding to a subtitle being shown. */
+  public final URI Subtitle        = createClass(NS, "Subtitle");
+  
+  /** Services that use a television medium.*/
+  public final URI TV        = createClass(NS, "TV");
+  
+  /** A particular version of an episode.
+   * Such versions include shortened ones, audio described ones
+   * or ones that holds sign language.
+   * The version is associated to a timeline.*/
+  public final URI Version        = createClass(NS, "Version");
+  
+  /** Services that use a Web medium.*/
+  public final URI Web        = createClass(NS, "Web");
+
+  //Properties
+  /** Relates a programmes to one of its actors - a person who plays the 
+   * role of a character. */
+  public final URI actor                   = createProperty(NS, "actor");
+
+  /** A television reporter who coordinates a programme. */
+  public final URI anchor               = createProperty(NS, "anchor");
+
+  /** The aspect ration of a particular version.*/
+  public final URI aspect_ratio           = createProperty(NS, "aspect_ratio"); 
+
+  /** Relates a programme to its author - the person who created the content */
+  public final URI author                = createProperty(NS, "author");
+
+  /** Relates a particular broadcast to the version being broadcasted.
+   * Sub-property of the event:factor one.*/
+  public final URI broadcast_of              = createProperty(NS, "broadcast_of");
+
+  /** Relates a particular broadcast to the service or outlet on which it was on.
+   * Sub-property of the event:factor one. */
+  public final URI broadcast_on            = createProperty(NS, "broadcast_on");
+
+  /** Associates a service to a broadcaster. */
+  public final URI broadcaster                = createProperty(NS, "broadcaster");
+
+  /** Relates a programme to a particular category, e.g. genre, format, place...*/
+  public final URI category           = createProperty(NS, "category"); 
+
+  /**  Associates a service to a channel, e.g. Radio 4 LW to Radio 4 LW on
+   *  Analogue Long Wave.*/
+  public final URI channel               = createProperty(NS, "channel");
+
+  /** Associates a brand, a series or an episode to a clip.*/
+  public final URI clip                = createProperty(NS, "clip");
+
+  /** Relates a programme to one of its commentators */
+  public final URI commentator             = createProperty(NS, "commentator");
+
+  /** Relates a programmes to a person who is credited in it */
+  public final URI credit              = createProperty(NS, "credit");
+
+  /** Relates a programme to its supervisor. Generally refers to the person 
+   * responsible for all audience-visible components of a program, film, or show, 
+   * whereas the producer is responsible for the financial and other 
+   * behind-the-scenes aspects. A director's duties might also include casting, 
+   * script editing, shot selection, shot composition, and editing */
+  public final URI director                 = createProperty(NS, "director");
+
+  /** The duration of a version, in seconds. */
+  public final URI duration                 = createProperty(NS, "duration");
+
+  /** Associates a brand or a series to an episode constituting it.*/
+  public final URI episode               = createProperty(NS, "episode");
+
+  /** Relates a programme to its executive producer - a producer who is not involved 
+   * in any technical aspects of the making process, but who is still responsible 
+   * for the overall production. Typically an executive producer handles business and 
+   * legal issues */
+  public final URI executive_producer          = createProperty(NS, "executive_producer");
+
+  /** Relates a programme to a particular format (eg. `Animation', `Documentary', etc.).*/
+  public final URI format        = createProperty(NS, "format"); 
+
+  /** Associates a channel to its frequency */
+  public final URI frequency               = createProperty(NS, "frequency");
+
+  /** Relates a programme to a particular genre.*/
+  public final URI genre           = createProperty(NS, "genre"); 
+
+  /** Associates a service to a geographic location, aiming at capturing what 
+   * this service aims at covering.*/
+  public final URI location                   = createProperty(NS, "location");
+
+  /** A long synopsis of a serie, brand or episode. Sub-property of po:synopsis.*/
+  public final URI long_synopsis           = createProperty(NS, "long_synopsis"); 
+
+  /** Associates a programme with its masterbrand (its commissionner) */
+  public final URI masterbrand            = createProperty(NS, "masterbrand");
+
+  /** A medium synopsis of a serie, brand or episode. Sub-property of po:synopsis.*/
+  public final URI medium_synopsis             = createProperty(NS, "medium_synopsis");
+
+  /** Associates a programme to its microsite. For example 
+   * http://www.bbc.co.uk/programmes/b00fm04s and http://www.bbc.co.uk/eastenders/ */
+  public final URI microsite              = createProperty(NS, "microsite");
+
+  /** Relates a programme to its news reader */
+  public final URI news_reader             = createProperty(NS, "news_reader");
+
+  /** Associates a service to an outlet, e.g. Radio 4 to Radio 4 LW.*/
+  public final URI outlet             = createProperty(NS, "outlet");
+
+  /** Relates a series to a series constituting it (eg. `Waking the dead').*/
+  public final URI parent_series                 = createProperty(NS, "parent_series");
+
+  /** Relates a service to another service encapsulating it (eg. `BBC One' and `BBC One South')*/
+  public final URI parent_service                 = createProperty(NS, "parent_service");
+
+  /** Relates a programme to one of its participants */
+  public final URI participant   = createProperty(NS, "participant"); 
+
+  /** Relates a programme to an entertainer who performs a dramatic or musical work for audience */
+  public final URI performer                     = createProperty(NS, "performer");
+
+  /** Relates a programme to a person*/
+  public final URI person              = createProperty(NS, "person");
+
+  /** Relates a programme to a place (e.g. `London')*/
+  public final URI place       = createProperty(NS, "place"); 
+
+  /** The position of a particular series or episode within its containing programme. 
+   * This property can also be used to give the position of an interval 
+   * within the containing timeline. */
+  public final URI position               = createProperty(NS, "position");
+
+  /** Relates a programme to its producer - the manager of an event, show, 
+   * or other work, usually the individual in charge of finance, personnel, 
+   * and other non-artistic aspects in the development of commercials, 
+   * plays, movies, and other works */
+  public final URI producer                 = createProperty(NS, "producer");
+
+  /** The schedule date of a broadcast event.*/
+  public final URI schedule_date               = createProperty(NS, "schedule_date");
+
+  /** Associates a season to its constituent broadcasts */
+  public final URI season_broadcast               = createProperty(NS, "season_broadcast");
+
+  /** Associates a brand or a series to a series constituting it.*/
+  public final URI series                   = createProperty(NS, "series");
+  
+  /** Associate a brand, series or episode to the master brand service.*/
+  public final URI service                   = createProperty(NS, "service");
+  
+  /**   A short synopsis of a serie, brand or episode. Sub-property of po:synopsis.*/
+  public final URI short_synopsis                   = createProperty(NS, "short_synopsis");
+  
+  /** The sound format of a particular version.*/
+  public final URI sound_format                   = createProperty(NS, "sound_format");
+  
+  /** Relates a programme to a subject (e.g. `easter').*/
+  public final URI subject                   = createProperty(NS, "subject");
+  
+  /** Language of the subtitles emebedded in a particular version.*/
+  public final URI subtitle_language                   = createProperty(NS, "subtitle_language");
+  
+  /** The synopsis of a serie, brand or episode.*/
+  public final URI synopsis                   = createProperty(NS, "synopsis");
+  
+  /** Associates an episode to a particular tag. */
+  public final URI tag                   = createProperty(NS, "tag");
+  
+  /** Associates a subtitle event to the corresponding text. */
+  public final URI text                   = createProperty(NS, "text");
+  
+  /** Associates an episode's version or a version's segment with a temporal interval. 
+   * This interval can be associated with a timeline, serving as an anchor for 
+   * further temporal annotations, e.g. subtitles or played track.*/
+  public final URI time                   = createProperty(NS, "time");
+  
+  /** Associates a music segment with a track, as defined in MO. */
+  public final URI track                   = createProperty(NS, "track");
+  
+  /** Associate an episode to a version of it. Different versions of a same 
+   * episode can exist (shortened version, version designed for the hearing impaired, etc.). */
+  public final URI version                   = createProperty(NS, "version");
+
+  private Programme(){
+    super(NS);
+  }
+}

http://git-wip-us.apache.org/repos/asf/any23/blob/d66e7dbb/api/src/main/java/org/apache/any23/vocab/WO.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/any23/vocab/WO.java b/api/src/main/java/org/apache/any23/vocab/WO.java
index 19cf79a..9f6f1ec 100644
--- a/api/src/main/java/org/apache/any23/vocab/WO.java
+++ b/api/src/main/java/org/apache/any23/vocab/WO.java
@@ -20,8 +20,13 @@ package org.apache.any23.vocab;
 import org.openrdf.model.URI;
 
 /**
- * This class models the <a href="http://purl.org/ontology/wo/">BBC Wildlife Ontology</a>.
- *
+ * The <a href="http://purl.org/ontology/wo/">Wildlife Ontology</a> vocabulary.</p>
+ * A simple vocabulary for describing biological species and related taxa. 
+ * The vocabulary defines terms for describing the names and ranking of taxa, 
+ * as well as providing support for describing their habitats, conservation status, 
+ * and behavioural characteristics, etc 
+ * 
+ * @author lewismc
  * @author Davide Palmisano (dpalmisano@gmail.com)
  */
 public class WO extends Vocabulary {
@@ -45,83 +50,465 @@ public class WO extends Vocabulary {
      */
     public final URI NAMESPACE = createURI(NS);
 
-    /**
-     * Generic class defining a biological species
+    ////////////////////////////////////////////////////////////////////
+    //CLASSES
+    ////////////////////////////////////////////////////////////////////
+    
+    /** An adaptation is any feature of an animal or plant which makes 
+     * it better suited for a particular habitat or to do a particular 
+     * task. For instance, being streamlined is an adaptation to swimming 
+     * fast and being able to survive on very little water is an 
+     * adaptation to life in the desert.*/
+    public final URI Adaption = createClass("Adaption");
+
+    /** Animal Intelligence or animal cognition is the title 
+     * given to a modern approach to the mental capacities of 
+     * non-human animals. It has developed out of comparative 
+     * psychology, but has also been strongly influenced by 
+     * the approach of ethology, behavioral ecology, and 
+     * evolutionary psychology.*/
+    public final URI Animal_Intelligence = createClass("AnimalIntelligence");
+    
+    /** Behavioural pattern describes an animal's dominant way of 
+     * life. Arboreal animals, for example, live in trees and 
+     * nocturnal animals are active at night.*/
+    public final URI BehaviouralPattern = createClass("BehaviouralPattern");
+    
+    /** A class is a scientific way to group related organisms 
+     * together, some examples of classes being jellyfish, 
+     * reptiles and sea urchins. Classes are big groups and 
+     * contain within them smaller groupings called orders, 
+     * families, genera and species.*/
+    public final URI Class = createClass("Class");
+    
+    /** A collection of resources, including documents, 
+     * multimedia files, programme clips and their associated .
+     * taxa, which aims to showcase a particular aspect of 
+     * natural history film-making, or illustrate aspects of 
+     * the natural world. A collection provides an alternate 
+     * way to organize content over and above the basic 
+     * taxonomic hierarchy.*/
+    public final URI Collection = createClass("Collection");
+    
+    /** Communication and senses are how an organism perceives 
+     * the world - for instance through scent or sight - and 
+     * how it sends messages or warnings to others.*/
+    public final URI CommunicationAdaption = createClass("CommunicationAdaption");
+    
+    /** Conservation status as described by the IUCN Red List. 
+     * Will typically have a number of properties including an 
+     * official IUCN status, population trend, and a year of assessment.*/
+    public final URI ConservationStatus = createClass("ConservationStatus");
+    
+    /** Ecosystem roles are about the part an animal or plant 
+     * plays in sustaining or maintaining the habitat around them. 
+     * Bees, for example, pollinate flowers, without which those 
+     * plants would not produce fruits or seeds. Other species, 
+     * such as dung beetles, play a vital role in keeping grasslands 
+     * clear of animal waste and recycling valuable resources.*/
+    public final URI EcosystemRole = createClass("EcosystemRole");
+    
+    /** Ecozones are a method of dividing up the Earth's surface. 
+     * Each ecozone is a large area that contains a number of 
+     * habitats, which are linked by the evolutionary history 
+     * of the animals and plants within them. For instance one 
+     * ecozone is Australasia, because its marsupials evolved 
+     * in isolation to mammals in the rest of the world.*/
+    public final URI Ecozone = createClass("Ecozone");
+    
+    /** Organisms that are adapted to extremes (known as Extremophiles) 
+     * are organisms that thrives in and even may require physically 
+     * or geochemically extreme conditions that are detrimental 
+     * to the majority of life on Earth.*/
+    public final URI ExtremesAdaptiation = createClass("ExtremesAdaptiation");
+    
+    /** A family is a scientific grouping of closely related organisms. 
+     * It has smaller groups, called genera and species, within it. A 
+     * family can have a lot of members or only a few. Examples of 
+     * families include the cats (Felidae), the gulls (Laridae) and 
+     * the grasses (Poaceae). Further Reading: 
+     * http://en.wikipedia.org/wiki/Family_%28biology%29
+     * http://www.bbc.co.uk/nature/family*/
+    public final URI Family = createClass("Family");
+    
+    /** Feeding habits describe the dominant diet of a particular 
+     * species or group of species, and how they go about obtaining it.*/
+    public final URI FeedingHabit = createClass("FeedingHabit");
+    
+    /** Freshwater habitats include bogs, ponds, lakes, rivers and streams. 
+     * About 3% of Earth's water is freshwater, but this includes the water 
+     * locked up in the ice caps and trapped in rocks and soil as groundwater. 
+     * Only a tiny fraction (0.014%) is surface water in the form of rivers, 
+     * lakes and swamps.*/
+    public final URI FreshwaterHabitat = createClass("FreshwaterHabitat");
+    
+    /** A genus is a scientific way of showing that species are very closed 
+     * related to each other. In fact the first word of the species' 
+     * scientific name is its genus. So for lions (Panthera leo), Panthera 
+     * is the genus and tells us that they are closely related to tigers 
+     * (Panthera tigris), because they share the name. Further Reading:
+     * http://en.wikipedia.org/wiki/Genus
+     * http://www.bbc.co.uk/nature/genus
+     * */
+    public final URI Genus = createClass("Genus");
+    
+    /** A habitat, or biome, is the type of environment in which plant 
+     * and animals live. Habitat is dictated by what kinds of plants 
+     * grow there, the climate and the geography. Rainforest, coral 
+     * reefs and the tundra are all habitats where particular kinds 
+     * of plants and animals might be found. Further Reading:
+     * http://en.wikipedia.org/wiki/Habitat
+     * http://www.bbc.co.uk/nature/habitats */
+    public final URI Habitat = createClass("Habitat");
+    
+    /** Infraorders are a subdivision of suborders - thus infraorders 
+     * are an intermediate rank of classification, that group together 
+     * related superfamilies and families. The tarsiers are a infraorder 
+     * of primates, containing a single extant family, whilst 
+     * shrimps (Caridea) are an example of an infraorder which 
+     * encompases many related superfamiles. Ceratopsia is the 
+     * infraorder that contains all the horned dinosaurs. Further Reading:
+     * http://en.wikipedia.org/wiki/Infraorder
+     * http://www.bbc.co.uk/nature/infraorder*/
+    public final URI Infraorder = createClass("Infraorder");
+    
+    /** Kingdoms are the major categories into which scientists 
+     * divide up all living things. The main kingdoms are animals, 
+     * plants, fungi and bacteria, although there are others. 
+     * Each kingdom has its own suite of defining characteristics - 
+     * for instance plants have rigid cell walls, whilst animals 
+     * do not. Further Reading: 
+     * http://en.wikipedia.org/wiki/Kingdom_%28biology%29
+     * http://www.bbc.co.uk/nature/kingdom*/
+    public final URI Kingdom = createClass("Kingdom");
+    
+    /** An organism's Life Cycle describes the stages in an 
+     * organisms development including metamorphosis, courtship 
+     * displays and parental care.*/
+    public final URI Lifecycle = createClass("Lifecycle");
+    
+    /** Locomotion is how an animal gets around - for instance by swimming, 
+     * flying or climbing.*/
+    public final URI LocomotionAdaption = createClass("LocomotionAdaption");
+    
+    /** Approximately 71% of the Earth's surface is covered by the oceans, 
+     * an area of some 223698816km/sq. Although marine life evolved around 
+     * three billion years before life on land, marine habitats are relatively 
+     * poorly studied and much of the ocean's depths remains unexplored.*/
+    public final URI MarineHabitat = createClass("MarineHabitat");
+    
+    /** Morphology is anything to do with what a plant or animal looks like - 
+     * its size, shape, colour or structure.*/
+    public final URI Morphology = createClass("Morphology");
+    
+    /** An order is a scientific way to categorise related organisms. 
+     * An order is a smaller grouping than a class, but bigger than 
+     * a family or genus. Examples of orders are willows, cockroaches 
+     * and primates. Further Reading: 
+     * http://en.wikipedia.org/wiki/Order_%28biology%29
+     * http://www.bbc.co.uk/nature/order*/
+    public final URI Order = createClass("Order");
+    
+    /** A phylum - also known as a division when referring to plants - 
+     * is a scientfic way of grouping together related organisms. 
+     * All the members of a phylum have a common ancestor and 
+     * anatomical similarities. For instance, all the arthropods 
+     * have external skeletons. Phlya are large groups and are 
+     * further subdivided into classes, orders, families and so on. 
+     * Further Reading: http://en.wikipedia.org/wiki/Phylum
+     * http://www.bbc.co.uk/nature/phylum*/
+    public final URI Phylum = createClass("Phylum");
+
+    /** Predation is catching and killing an animal in order to eat it. 
+     * The prey can be chased, ambushed or caught in a trap such as a 
+     * spider's web.*/
+    public final URI PredationStrategy = createClass("PredationStrategy");
+    
+    /** A category in the IUCN red list, 2001. Further Reading:
+     * http://www.iucnredlist.org/technical-documents/categories-and-criteria/2001-categories-criteria
      */
-    public final URI species = createProperty("species");
-
-    public final URI kingdomClass = createClass("Kingdom");
-
-    public final URI divisionClass = createClass("Division");
-
-    public final URI phylumClass = createClass("Phylum");
-
-    public final URI orderClass = createClass("Order");
-
-    public final URI genusClass = createClass("Genus");
-
-    public final URI classClass = createClass("Class");
-
+    public final URI RedListStatus = createClass("RedListStatus");
+    
+    /** Reproduction covers all the tactics and behaviours involved in obtaining 
+     * a mate, conceiving the next generation and successfully raising them. 
+     * It includes everything from plants being pollinated, to stags 
+     * fighting over hinds, to lionesses babysitting their sisters' cubs.*/
+    public final URI ReproductionStrategy = createClass("ReproductionStrategy");
+    
+    /** Social behaviour is all about how an animal interacts with members 
+     * of its own species. For instance, does it live in a colony or on 
+     * its own, does it fight to be top of the pecking order, or does 
+     * it try to keep strangers away from its home?*/
+    public final URI SocialBehaviour = createClass("SocialBehaviour");
+    
+    /** Generic class defining a biological species. Further Reading:
+     * http://en.wikipedia.org/wiki/Species
+     * http://www.bbc.co.uk/nature/species*/
+    public final URI Species = createClass("Species");
+    
+    /** Suborders are an intermediate classification rank - 
+     * an order can be split into many closely related suborders. 
+     * Suborders are therefore of lower rank than a order, but 
+     * higher than a infraorder or a family. All modern 
+     * snakes are placed within a suborder (Serpentes). 
+     * Theropoda is another suborder to which many 
+     * famous carnivorous dinosaurs belong. Further Reading:
+     * http://en.wikipedia.org/wiki/Suborder
+     * http://www.bbc.co.uk/nature/suborder*/
+    public final URI Suborder = createClass("Suborder");
+    
+    /** Subspecies are a rank of classification that is lower 
+     * than a species. The differences between subspecies are 
+     * less distinct than between species. Generally speaking 
+     * two subspecies can successfully interbreed but two species 
+     * cannot. If a subspecies can be shown to be different 
+     * enough, then it can be elevated to the status of species. 
+     * There are several subspecies of tiger (Panthera tigris) 
+     * including the Bengal tiger (Panthera tigris tigris), 
+     * Sumatran tiger (Panthera tigris sumatrae) and Siberian 
+     * tiger (Panthera tigris altaica). Further Reading:
+     * http://en.wikipedia.org/wiki/Subspecies
+     * http://www.bbc.co.uk/nature/subspecies*/
+    public final URI Subspecies = createClass("Subspecies");
+    
+    /** Superclass is an intermediate classification rank, or 
+     * grouping, that sits directly above a class, ranking 
+     * below a phylum or subphylum and containing one or more 
+     * classes. The tetrapods are a superclass encompasing the 
+     * amphibian, reptile, bird, mammal and dinosaur classes. 
+     * Further Reading: http://en.wikipedia.org/wiki/Superclass_(biology)
+     * http://www.bbc.co.uk/nature/superclass*/
+    public final URI Superclass = createClass("Superclass");
+    
+    /** Superfamilies are an intermediate classification rank, 
+     * or grouping, that is directly above a family. A 
+     * superfamily may contain one or more related families. 
+     * Dung beetles are a superfamily containing the stag, 
+     * bess and scarab beetle families. There is also a 
+     * superfamily of rodents (muroidea) containing six families 
+     * of rats, mice, hamsters and gerbils. Further Reading:
+     * http://en.wikipedia.org/wiki/Taxonomic_rank
+     * http://www.bbc.co.uk/nature/superfamily*/
+    public final URI Superfamily = createClass("Superfamily");
+    
+    /** Superorders are an intermediate classification rank or 
+     * grouping that sit directly above an order. A superorder 
+     * may contain several orders. Sharks are a good example of 
+     * a superorder, grouping together eight living orders of shark, 
+     * as well as, five extinct orders. Perhaps the most famous 
+     * superorder of them all is Dinosauria - the dinosaurs!
+     * Further Reading: http://en.wikipedia.org/wiki/Superorder
+     * http://www.bbc.co.uk/nature/superorder*/
+    public final URI Superorder = createClass("Superorder");
+    
+    /** Survival strategies include adaptations to changes in .
+     * the organisms environment, including: hibernation, abscission and migration.*/
+    public final URI SurvivalStrategy = createClass("SurvivalStrategy");
+    
+    /** A taxonomic name, describing the structure and provenance of a taxonomic name.*/
+    public final URI TaxonName = createClass("TaxonName");
+    
+    /** Generic concept for a taxonomic rank such as a Genus or Species.
+     * Further Reading: http://en.wikipedia.org/wiki/Taxonomic_rank
+*/
+    public final URI TaxonRank= createClass("TaxonRank");
+    
+    /** Terrestrial habitats include forests, grasslands, deserts 
+     * and rainforests. They are typically defined by factors such 
+     * as plant structure (trees and grasses), leaf types (eg broadleaf 
+     * and needleleaf), plant spacing (forest, woodland, savanna) and climate.*/
+    public final URI TerrestrialHabitat = createClass("TerrestrialHabitat");
+    
+    /** Tribes are a taxonomic rank that fall between family and genus. 
+     * Tribes can also be split in to smaller related groups called subtribes. 
+     * Tribes are mainly, but not always, used in botany to classify plants. 
+     * The true grass family is divided up into many subfamiles and then into 
+     * tribes, one of which is bamboo. The insect world also uses tribes 
+     * as a classification rank, for example, bombini is the tribe of bumblebees.
+     * Further Reading: http://en.wikipedia.org/wiki/Tribe_(biology)
+     * http://www.bbc.co.uk/nature/tribe*/
+    public final URI Tribe = createClass("Tribe");
+
+    //////////////////////////////////////////////////////////
+    //PROPERTIES
+    //////////////////////////////////////////////////////////
     /**
-     * A family is a scientific grouping of closely related organisms.
-     * It has smaller groups, called genera and species, within it.
-     * A family can have a lot of members or only a few.
-     * Examples of families include the cats (Felidae), the gulls (Laridae) and the grasses (Poaceae).
+     * associates a taxon rank with an adaptation which it displays 
      */
-    public final URI family = createClass("Family");
+    public final URI adaptation = createProperty("adaptation");
 
     /**
-     * associates a taxon rank with a family 
+     * associates a taxon rank with a class
      */
-    public final URI familyProperty = createProperty("family");
-
+    public final URI clazz = createProperty("class");
+    
     /**
-     * Used to specify the name of a family as part of a Taxon Name
+     * associates a taxon rank, habitat, species, clip with a collection of which it is a member
      */
-    public final URI familyName = createProperty("familyName");
+    public final URI collection = createProperty("collection");
 
     /**
-     * specifies the species part of a binomial name, allowing
-     * this portion of the name to be explicitly described.
-     * Therefore this property will typically only be used in TaxonNames
-     * associated with species. The property is largely provided as a 
-     * convenience to avoid applications having to parse the binomial name.
+     * associates a taxon rank with a description of a recent assessment of its conservation status
      */
-    public final URI speciesName = createProperty("speciesName");
+    public final URI conservationStatus = createProperty("conservationStatus");
 
     /**
-     * specifies the scientific name of a species, allowing
-     * this portion of the name to be explicitly described.
-     * Therefore this property will typically only be used in TaxonNames
-     * associated with species. The property is largely provided as a
-     * convenience to avoid applications having to parse the binomial name.
+     * associates a habitat, ecozone, or taxon rank with a map depicting its distribution or location
      */
-    public final URI scientificName = createProperty("scientificName");
+    public final URI distributionMap = createProperty("distributionMap");
 
-    public final URI kingdom = createProperty("kingdom");
-
-    public final URI phylum = createProperty("phylum");
+    /** indicates that a habitat or a taxon rank can be found within an ecozone */
+    public final URI ecozone = createProperty("ecozone");
 
-    public final URI order = createProperty("order");
+    /** associates a taxon rank with a family */
+    public final URI family = createProperty("family");
 
+    /** associates a taxon rank with a genus */
     public final URI genus = createProperty("genus");
+    
+    /** associates a taxon rank with a habitat in which it grows. 
+     * Sub-property of wo:habitat to be used for plants, fungi, etc */
+    public final URI growsIn = createProperty("growsIn");
 
-    public final URI division = createProperty("division");
+    /** associates a taxon rank with a habitat in which it may typically be found */
+    public final URI habitat = createProperty("habitat");
 
-    public final URI clazz = createProperty("class");
+    /** associates a taxon rank with a infraorder */
+    public final URI infraorder = createProperty("infraorder");
 
-    public final URI kingdomName = createProperty("kingdomName");
+    /** associates a taxon rank with a kingdom*/
+    public final URI kingdom = createProperty("kingdom");
 
-    public final URI phylumName = createProperty("phylumName");
+    /** associates a taxon rank with a habitat in which it lives. 
+     * Sub-property of wo:habitat to be used for members of the animal kingdom */
+    public final URI livesIn = createProperty("livesIn");
 
-    public final URI orderName = createProperty("orderName");
+    /** associates a taxon rank with a taxon name */
+    public final URI name = createProperty("name");
 
-    public final URI genusName = createProperty("genusName");
-
-    public final URI divisionName = createProperty("divisionName");
+    /** associates a taxon rank with an order */
+    public final URI order = createProperty("order");
 
+    /** associates a taxon rank with a phylum */
+    public final URI phylum = createProperty("phylum");
+    
+    /** associates a Conservation Status with a category in the IUCN Red List*/
+    public final URI redListStatus = createProperty("redListStatus");
+    
+    /** associates a taxon rank with a species*/
+    public final URI species = createProperty("species");
+    
+    /** associates a taxon rank with a subspecies*/
+    public final URI subspecies = createProperty("subspecies");
+    
+    /** associates a taxon rank with a suborder*/
+    public final URI suborder = createProperty("suborder");
+    
+    /** associates a taxon rank with a superclass*/
+    public final URI superclass = createProperty("superclass");
+    
+    /** associates a taxon rank with a superfamily*/
+    public final URI superfamily = createProperty("superfamily");
+    
+    /** associates a taxon rank with a superorder*/
+    public final URI superorder = createProperty("superorder");
+    
+    /** associates a taxon rank with a tribe*/
+    public final URI tribe = createProperty("tribe");
+    
+    //////////////////////////////////////////////////////////////
+    //DATATYPE PROPERTIES
+    //////////////////////////////////////////////////////////////
+    
+    /** Used to specify the name of a class as part of a Taxon Name*/
     public final URI clazzName = createProperty("className");
-
+    
+    /** associates a formal taxon name with a common version. E.g. 
+     * Panthera leo might be associated with a common name of 'Lion'. 
+     * A given taxon name may have several common names*/
+    public final URI commonName = createProperty("commonName");
+    
+    /** Used to specify the name of a family as part of a Taxon Name*/
+    public final URI familyName = createProperty("familyName");
+    
+    /** specifies the genus part of a binomial name, allowing this 
+     * portion of the name to be explicitly described. Therefore this 
+     * property will typically only be used in TaxonNames associated 
+     * with species. The property is largely provided as a convenience 
+     * to avoid applications having to parse the binomial name.*/
+    public final URI genusName = createProperty("genusName");
+    
+    /** Used to specify the name of a infraorder as part of a Taxon Name*/
+    public final URI infraorderName = createProperty("infraorderName");
+    
+    /** Used to specify the name of a kingdom as part of a Taxon Name */
+    public final URI kingdomName = createProperty("kingdomName");
+    
+    /** Used to specify the name of an order as part of a Taxon Name */
+    public final URI orderName = createProperty("orderName");
+    
+    /** Used to specify the name of a phylum as part of a Taxon Name */
+    public final URI phylumName = createProperty("phylumName");
+    
+    /** provides some indication of the population trend associated with an 
+     * assessment of a taxon's conversation status. The value of this 
+     * property is a simple literal, and is recommended to be one of: 
+     * Decreasing, Increasing, Stable, Unknown.*/
+    public final URI populationTrend = createProperty("populationTrend");
+    
+    /** associates a taxon name with its formal scientific name. This 
+     * may be a binomial name (e.g. Panthera leo) in the case of a 
+     * species name, or a uninomial (e.g. Panthera) name in the case 
+     * of a name associated with another taxon rank. In formal 
+     * taxonomic naming conventions, the scientific name is often 
+     * qualified with the source of the name, e.g. Panthera leo (Linnaeus, 1758).*/
+    public final URI scientificName = createProperty("scientificName");
+    
+    /** associates a short description with a Collection.*/
+    public final URI shortDescription = createProperty("shortDescription");
+    
+    /** specifies the species part of a binomial name, allowing this 
+     * portion of the name to be explicitly described. Therefore 
+     * this property will typically only be used in TaxonNames 
+     * associated with species. The property is largely provided 
+     * as a convenience to avoid applications having to parse the 
+     * binomial name.*/
+    public final URI speciesName = createProperty("speciesName");
+    
+    /** Used to specify the name of a suborder as part of a Taxon Name*/
+    public final URI suborderName = createProperty("suborderName");
+    
+    /** Used to specify the name of a subspecies as part of a Taxon Name*/
+    public final URI subspeciesName = createProperty("subspeciesName");
+    
+    /** Used to specify the name of a superspecies as part of a Taxon Name*/
+    public final URI superspeciesName = createProperty("superspeciesName");
+    
+    /** Used to specify the name of a superclass as part of a Taxon Name*/
+    public final URI superclassName = createProperty("superclassName");
+    
+    /** Used to specify the name of a superfamily as part of a Taxon Name*/
+    public final URI superfamilyName = createProperty("superfamilyName");
+    
+    /** Used to specify the name of a superorder as part of a Taxon Name*/
+    public final URI superorderName = createProperty("superorderName");
+    
+    /** a naming property, associating a formal taxonomic name with a Taxon 
+     * Name instance. This property is a parent of a number of sub-properties 
+     * that provide more specific terms for denoting names of families, phyla, 
+     * species, etc.*/
+    public final URI taxonomicName = createProperty("taxonomicName");
+    
+    /** description of the threat(s) that have been identified as part of 
+     * the assessment of the Conservation Status of a taxon*/
+    public final URI threatDescription = createProperty("threatDescription");
+    
+    /** Used to specify the name of a tribe as part of a Taxon Name*/
+    public final URI tribeName = createProperty("tribeName");
+    
+    /** the year in which the conservation status was assessed.*/
+    public final URI yearAssessed = createProperty("yearAssessed");
+    
     private URI createClass(String name) {
         return createClass(NS, name);
     }


Re: git commit: ANY23-148 Programmes Ontology and updated WO vocab

Posted by Peter Ansell <an...@gmail.com>.
On 3 April 2014 23:56, Simone Tripodi <si...@apache.org> wrote:
> Hi Lewis!
>
> thanks a lot for putting efforts on that! I just have few minor notes:
>
>> + *
>> + * @author lewismc
>
> as already adopted in other ASF projects, I'd suggest to drop all
> @author tags, since committers are mentioned in the parent POM
>
>> + */
>> +public class Programme extends Vocabulary {
>> +
>> +  public static final String NS = "http://purl.org/ontology/po/";
>> +
>> +  private static Programme instance;
>> +
>> +  public static Programme getInstance() {
>> +    if(instance == null) {
>> +      instance = new Programme();
>> +    }
>> +    return instance;
>> +  }
>> +
>
> this operation is not thread-safe, the instance can be potentially
> instantiated more than once

Threadsafety is only really relevant if there is either going to be a
memory-leak or a deadlock/livelock between threads. Supporting
multiple equivalent URI instances is required by the OpenRDF URI API
to interact properly. Ie, you can't do "==" equality to check whether
a URI is the same as one in this vocabulary. So, if everyone is using
.equals it shouldn't matter whether there are different physical URI
objects, and proper synchronisation won't hurt, but won't actually
gain anything other than a very very small amount of memory from the
duplicated objects in some cases. The instance variable will also only
ever end up with a single field in it after the initial threaded calls
pass through, and others will end up calling getInstance multiple
times as necessary rather than keeping the reference for the life of
the application, so any multiple instances are likely to come up for
garbage collection before long.

Having said that, if you did strictly require a single instance this
pattern is broken and needs a synchronized(Programme.class) block with
another null check inside. A pattern to avoid if you do need strict
"singleton" behaviour is that a "public static synchronized" is a very
bad thing for threaded applications as it can cause the threads to
block and/or interact with one another, even if temporarily and only
for a short amount of time, it reduces performance unnecessarily.

>> +  //Resources
>> +  /** A version holding an audio description. */
>> +  public final URI AudioDescribedVersion  = createClass(NS, "AudioDescribedVersion");
>> +
>> +  /** A brand, e.g. `Top Gea`r*/
>> +  public final URI Brand                = createClass(NS, "Brand");
>> +
>
> first char of fields name should be lower-case (as above and below);
> as an alternative solution, we could use an Enum for that type, unless
> users have to define their own class...

This good java convention breaks with many ontologies that are case
sensitive and have both upper and lower case URIs defined for classes
and properties respectively.

Cheers,

Peter

Re: git commit: ANY23-148 Programmes Ontology and updated WO vocab

Posted by Simone Tripodi <si...@apache.org>.
Hi Lewis!

thanks a lot for putting efforts on that! I just have few minor notes:

> + *
> + * @author lewismc

as already adopted in other ASF projects, I'd suggest to drop all
@author tags, since committers are mentioned in the parent POM

> + */
> +public class Programme extends Vocabulary {
> +
> +  public static final String NS = "http://purl.org/ontology/po/";
> +
> +  private static Programme instance;
> +
> +  public static Programme getInstance() {
> +    if(instance == null) {
> +      instance = new Programme();
> +    }
> +    return instance;
> +  }
> +

this operation is not thread-safe, the instance can be potentially
instantiated more than once

> +  //Resources
> +  /** A version holding an audio description. */
> +  public final URI AudioDescribedVersion  = createClass(NS, "AudioDescribedVersion");
> +
> +  /** A brand, e.g. `Top Gea`r*/
> +  public final URI Brand                = createClass(NS, "Brand");
> +

first char of fields name should be lower-case (as above and below);
as an alternative solution, we could use an Enum for that type, unless
users have to define their own class...

HTH, all the best!
-Simo