Combining the SNaP news ontology with other domain specific ontologies

The SNaP news ontology includes a basic Stuff domain model for modeling real world entities so they can be annotated against news assets (stories etc). Now there are many cases where you might want to use an existing specialised rich domain model to semantically annotate your news assets with, using an ontology that your consumers already may understand. At the Press Association we have joined Stuff to the Sport and Programmes ontologies (both built by the BBC) such that we can still contractually bind to the SNaP ontology. This will allow you to build applications and APIs based on SNaP while gaining the richness of these specific domain models.

Joining SNaP onto the Sport ontology

Within the Stuff domain model all entities inherit from pns:Tangible and pns:Intangible parent classes and a simple parent property (pns:notablyAssociatedWith) exists that relates pns:Stuff to other Stuff. Bringing in an additional domain model involves identifying the correct class to inherit the target classes from, and identifying which properties in the target domain are candidates for simple notable associations between these classes. These join points for the sport ontology are as follows: SNaP-Sport join points

In order to implement this we need to create the RDF that asserts these relationships as follows :

@prefix pns: <http://data.press.net/ontology/stuff/> .
@prefix pne: <http://data.press.net/ontology/stuff/> .
@prefix sport: <http://purl.org/ontology/sport/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

sport:SportsDiscipline rdfs:subClassOf pns:Intangible .
sport:Competition rdfs:subClassOf pne:Event .
sport:SportingOrganisation rdfs:subClassOf pns:Organization .
sport:discipline rdfs:subPropertyOf pns:notablyAssociatedWith .

Joining SNaP onto the Programmes ontology

Joining onto the Programmes ontology similarly involves identifying the correct classes and properties in Programmes : SNaP-Programmes join points

Joining SNaP to Programmes and then creating the appropriate RDF to make this happen :

@prefix pns: <http://data.press.net/ontology/stuff/> .
@prefix po: <http://purl.org/ontology/po/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

po:Programme rdfs:subClassOf pns:Tangible .
po:Outlet rdfs:subClassOf pns:Tangible .
po:actor rdfs:subPropertyOf pns:notablyAssociatedWith .
po:anchor rdfs:subPropertyOf pns:notablyAssociatedWith .
po:producer rdfs:subPropertyOf pns:notablyAssociatedWith .
po:director rdfs:subPropertyOf pns:notablyAssociatedWith .
po:commentator rdfs:subPropertyOf pns:notablyAssociatedWith .
po:director rdfs:subPropertyOf pns:notablyAssociatedWith .
po:news_reader rdfs:subPropertyOf pns:notablyAssociatedWith .

This now allows us to mint instance data for Programmes and Sport entities using these rich domain models, while retaining all functionality provided by our applications built on the core SNaP ontologies. An example of this is the semantic annotation service. This service analyses news content and annotates the text with linked-data entities found in the text. Disambiguation of entities is enhanced using ontological proximity via the pns:notablyAssociatedWith relationship in the Stuff ontology. For example if is notablyAssociatedWith , and an exists with the same label as , if the labels for A and B are both identified in the text, then A would be chosen over C due to its ontological proximity with B.

By ensuring the properties identified above in the Sport and Programmes ontologies inherit from pns:notablyAssociatedWith the semantic annotation service will continue to provide disambiguation of sport and programmes entities via ontological proximity with no change required to the code as the semantic annotation rules are bound to the Stuff ontology.