Warning:
This wiki has been archived and is now read-only.

ISO Extensions to SKOS

From Government Linked Data (GLD) Working Group Wiki
Jump to: navigation, search

Information

  • SKOS extension ontology that was started by group 3 in Dagstuhl 2011 seminar on DDI and the semantic web.
  • More information: [1]

Extension copy


@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
# TODO Decide the namespace (and change the prefix)
@prefix skosclass: <http://ddialliance.org/ontologies/skosclass#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .


#################################################################
# Ontology
#################################################################

<http://ddialliance.org/ontologies/skosclass> a owl:Ontology ;
dc:title "SKOS extension for the representation of classifications"@en , "Extension de SKOS pour la représentation des nomenclatures"@fr ;
dc:contributor "Wendy Thomas", "Daniel Gillman", "Jannik Jensen", "Thomas Bosch", "Richard Cyganiak", "Franck Cotton" ;
dc:creator "Franck Cotton" ;
owl:versionInfo "Version 0.9.0 - 2011-10-05" .
# TODO Probably add a reference to Dagstuhl workshop and license info

#################################################################
# Classes
#################################################################

# A classification is a skos:ConceptScheme and a classification level is a subclasse of skos:Collection
# If the order of the items in the specific level is important, this level can also be declared as an instance of skos:OrderedCollection

skosclass:ClassificationLevel a rdfs:Class, owl:Class ;
rdfs:label "Classification level"@en, "Niveau de nomenclature"@fr ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> ;
rdfs:subClassOf skos:Collection .

# The ConceptAssociation class generalizes the semantic relations modelled as properties in SKOS
# TODO : should ConceptAssociation be subclassed the same way skos:semanticRelation is (ExactMatchConceptAssociation, etc.) ?

skosclass:ConceptAssociation a rdfs:Class, owl:Class ;
rdfs:label "Concept association"@en , "Association de concepts"@fr ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# The ConceptAssociationCollection can be used to group concept associations in a meaningful way (eg : correspondance tables)
# TODO : should ConceptAssociation be subclassed the same way skos:semanticRelation is (ExactMatchConceptAssociation, etc.) ?

skosclass:ConceptAssociationCollection a rdfs:Class, owl:Class ;
rdfs:label "Concept association collection"@en , "Collection d'associations de concepts"@fr ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# TODO The UML model introduces a LevelType class to which the depth and a description are attached. Did we really decide that ?

#################################################################
# Data properties
#################################################################

# Depth of a classification (number of hierarchically imbricated levels) ; 1 for a flat classification
# TODO This property is named depth in the UML model, but I think we decided that depth was on the ClassificationLevel
# TODO Find a better name for this property

skosclass:numberOfLevels a rdf:Property, owl:DatatypeProperty ;
rdfs:label "number of levels"@en, "nombre de niveaux"@fr ;
rdfs:domain skos:ConceptScheme ;
rdfs:range xsd:positiveInteger ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Depth of a level inside a classification (1 for the highest level)
# TODO This property should be attached to the ClassificationLevel in the UML model

skosclass:depth a rdf:Property, owl:DatatypeProperty ;
rdfs:label "depth"@en, "profondeur"@fr ;
rdfs:domain skosclass:ClassificationLevel ;
rdfs:range xsd:positiveInteger ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

#################################################################
# Object properties
#################################################################

# List of the classification levels represented as an RDF list of ordered levels (instances of ClassificationLevel)

skosclass:hasLevels a rdf:Property, owl:ObjectProperty ;
rdfs:label "level list"@en, "liste des niveaux"@fr ;
rdfs:domain skos:ConceptScheme ;
rdfs:range rdf:List ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# TODO There is a containsClassificationLevel property in the UML model, but I think we said that skos:member could do the job
# for relations between levels, and skos:inScheme for attachement of levels to a classification (ConceptScheme)

# TODO Should we define a new property for the aggregation of concept associations in concept associations collections
# (hasMember in the UML model), or should we use skos:member ? The latter would probably necessitate to make ConceptAssociation
# a subclass of Concept and ConceptAssociationCollection a subclass of ConceptAssociation.

# Properties linking concepts to concepts associations
# TODO Find better names (and labels) for those two properties
# TODO Express cardinalities : a ConceptAssociation should associate at least one Concept to at least one Concept

skosclass:hasDomainConcept a rdf:Property, owl:ObjectProperty ;
rdfs:domain skos:Concept ;
rdfs:range skos:ConceptAssociation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:hasRangeConcept a rdf:Property, owl:ObjectProperty ;
rdfs:domain skos:Concept ;
rdfs:range skos:ConceptAssociation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Name (or nature, or type) of the items that constitute the level
# TODO the property is named 'containsConcept' in the UML model

skosclass:contains a rdf:Property, owl:ObjectProperty ;
rdfs:label "contains"@en, "contient"@fr ;
rdfs:domain skos:ConceptScheme ;
rdfs:range skos:Concept ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Domain covered by the classification (eg. activities, products, etc.)
# TODO Find better names ? Harmonize property names with the UML model
# TODO In the UML model, the domain is ClassificationLevel

skosclass:covers a rdf:Property, owl:ObjectProperty ;
rdfs:label "covers"@en, "couvre"@fr ;
rdfs:domain skos:ConceptScheme ;
rdfs:range skos:Concept ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Domain covered by the classification (exhaustive coverage)

skosclass:coversExhaustively a rdf:Property, owl:ObjectProperty ;
rdfs:label "covers exhaustively"@en, "couvre exhaustivement"@fr ;
rdfs:subPropertyOf skos:covers ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Domain covered by the classification (mutually exclusive coverage)

skosclass:coversMutuallyExclusively a rdf:Property, owl:ObjectProperty ;
rdfs:label "covers mutually exclusively"@en, "couvre sans recouvrement"@fr ;
rdfs:subPropertyOf skos:covers ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Types of semantic relations from ISO 1087 : associative relations

skosclass:causal a rdf:Property, owl:ObjectProperty ;
rdfs:label "causes"@en, "cause"@fr ;
rdfs:subPropertyOf skos:related ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:sequential a rdf:Property, owl:ObjectProperty ;
rdfs:label "has sequential"@en, "en relation séquentielle"@fr ;
rdfs:subPropertyOf skos:related ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:previous a rdf:Property, owl:ObjectProperty ;
rdfs:label "previous"@en, "précédent"@fr ;
rdfs:comment "immediate predecessor in the sequence"@en, "prédécesseur immédiat dans la séquence"@fr ;
rdfs:subPropertyOf skos:sequential ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:next a rdf:Property, owl:ObjectProperty ;
rdfs:label "next"@en, "suivant"@fr ;
rdfs:comment "immediate successor in the sequence"@en, "successeur immédiat dans la séquence" ;
rdfs:subPropertyOf skos:sequential ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:temporal a rdf:Property, owl:ObjectProperty ;
rdfs:label "has temporal"@en, "en relation temporelle"@fr ;
rdfs:subPropertyOf skos:sequential ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:before a rdf:Property, owl:ObjectProperty ;
rdfs:label "before"@en, "avant"@fr ;
rdfs:subPropertyOf skos:temporal ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:after a rdf:Property, owl:ObjectProperty ;
rdfs:label "after"@en, "après"@fr ;
rdfs:subPropertyOf skos:temporal ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Types of semantic relations from ISO 1087 : hierarchical relations

# Partitive relations and generic/specific relations
# Use case identified : OIICS classification
# TODO See if dcterms:hasPart and dcterms:isPartOf should be used instead or as superproperties

skosclass:isPartOf a rdf:Property, owl:ObjectProperty ;
rdfs:label "is a part of"@en, "est une partie de"@fr ;
owl:inverseOf skosclass:hasPart ;
rdfs:subPropertyOf skos:semanticRelation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:hasPart a rdf:Property, owl:ObjectProperty ;
rdfs:label "has part"@en, "a pour partie"@fr ;
owl:inverseOf skosclass:isPartOf ;
rdfs:subPropertyOf skos:semanticRelation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:specializes a rdf:Property, owl:ObjectProperty ;
rdfs:label "specializes"@en, "spécialise"@fr ;
owl:inverseOf skosclass:generalizes ;
rdfs:subPropertyOf skos:semanticRelation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

skosclass:generalizes a rdf:Property, owl:ObjectProperty ;
rdfs:label "generalizes"@en , "généralise"@fr ;
owl:inverseOf skosclass:specializes ;
rdfs:subPropertyOf skos:semanticRelation ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# Types of relations for comparison purposes

# subOrdinate, superOrdinate are in fact generic/specific or part-of
# TODO Dan to explain the difference between sub/super-ordinate and broader/narrower

skosclass:disjoint a rdf:Property, owl:ObjectProperty ;
rdfs:label "disjoint from"@en, "disjoint de"@fr ;
rdfs:subPropertyOf skos:related ;
rdfs:isDefinedBy <http://ddialliance.org/ontologies/skosclass> .

# TODO Verify that all structural construction from SDMX (eg hierarchical code lists) can be represented
# TODO Check in detail if Neuchâtel model is covered