Car Options Ontology

An extension to the GoodRelations ontology for e-commerce

V 1.1, Release 2010-10-12

Latest version: http://purl.org/coo/ns (RDF/XML, HTML)

Last update: 2010-10-12

Author: Martin Hepp, Hepp Research GmbH

The COO provides a vocabulary for exposing available configuration options for car models. It allows indicating choices that can be made as well as compatibility, dependency, and inclusion information. The ontology imports and extends the GoodRelations ontology for e-commerce, which provides an abstract framework for product model information via gr:ProductOrServiceModel and its associated properies.

The main difference between COO and the default patterns for model data in GoodRelations is that GoodRelations requires the materialization of all choices for features, which can quickly lead to very large amounts of data if features can be combines rather freely, due to the combinatorial effects.

Vocabulary: http://purl.org/coo/ns
Namespace: http://purl.org/coo/ns#

The Car Options Ontology is designed to be used in combination with GoodRelations for the commercial aspects of offers for sale or rental, and the Vehicle Sales Ontology for car features.
See http://purl.org/goodrelations/ and http://purl.org/vso/ns for more information.

This document is the official specification. For the other developer resources, please check:

Examples

In this section we give brief examples of how to use the Car Options Ontology.

Data

Company and Base Model Information

Turtle:

# Volkswagen (Company)
ex:VW a gr:BusinessEntity ;
	gr:legalName "Volkswagen AG" ;
	rdfs:label "Volkswagen AG"@en ;
	rdfs:comment "Volkswagen is the leading car manufacturer in the world"@en ;
	foaf:page <http://www.volkswagen.co.uk/> .

# Base Model
ex:GolfBaseModel a coo:BaseModel, vso:Automobile ;
	rdfs:label "Golf (2010)"@en ;
	rdfs:comment "The Volkswagen Golf is the most popular car model in the world."@en ;
	gr:hasManufacturer ex:VW ;
	vso:modelDate "2010-01-01"^^xsd:date ; # year-only data is not possible in xsd:date and also theoretically problematic
	vso:bodyStyle <http://dbpedia.org/resource/Hatchback> ;
	vso:axles [ a gr:QuantitativeValueInteger ;
				  gr:hasValueInteger "2"^^xsd:int ;
				  gr:hasUnitOfMeasurement "C62"^^xsd:string ] ;
	vso:fuelTankVolume [ a gr:QuantitativeValueFloat ;
						   gr:hasValueFloat "50"^^xsd:float ;
						   gr:hasUnitOfMeasurement "LTR"^^xsd:string ] ;
	vso:height [ a gr:QuantitativeValueFloat ;
				   gr:hasValueFloat "150"^^xsd:float ;
				   gr:hasUnitOfMeasurement "CMT"^^xsd:string ] ;
	vso:length [ a gr:QuantitativeValueFloat ;
				   gr:hasValueFloat "520"^^xsd:float ;
				   gr:hasUnitOfMeasurement "CMT"^^xsd:string ] ;
	vso:width [ a gr:QuantitativeValueFloat ;
				  gr:hasValueFloat "175"^^xsd:float ;
				  gr:hasUnitOfMeasurement "CMT"^^xsd:string ] ;
	vso:wheelbase [ a gr:QuantitativeValueFloat ;
					  gr:hasValueFloat "380"^^xsd:float ;
					  gr:hasUnitOfMeasurement "CMT"^^xsd:string ] ;
	vso:ACRISSCode "CCMR"^^xsd:string ;
	foaf:page <http://www.volkswagen.co.uk/2010/Golf/> . # URI of the web page .
		

Trim Information

Turtle:

# Available Trims
ex:GolfBaseModel coo:hasTrim ex:GolfS, ex:GolfMatch .

# Trims
ex:GolfS a coo:Trim, vso:Automobile ;
	rdfs:label "Golf S (2010)"@en ;
	rdfs:comment "The Volkswagen Golf S trim is the entry configuration for your Golf."@en ;
	gr:isVariantOf ex:GolfBaseModel ; # inheriting features from base model
	# Fixed parts / features for this trim: Qualitative
	vso:feature dbpedia:Cup_holder,	# Add more DBPedia / Wikipedia URIs for additional features
				dbpedia:Power_window,
				dbpedia:Air_conditioner ;  # Consider using VVO / VW-specific URIs
	# Fixed parts / features for this trim: Quantitative
	vso:cargoVolume	 [ a gr:QuantitativeValueFloat ;
						 gr:hasValueFloat "500"^^xsd:float ;
						 gr:hasUnitOfMeasurement "LTR"^^xsd:string ] ;
	# Configurable components / features
	# NONE, since they are available only at the level of Derivatives

	foaf:depiction <http://www.volkswagen.co.uk/2010/Golf/GolfS/image1.jpg> ; # URI of a photo
	foaf:page <http://www.volkswagen.co.uk/2010/Golf/GolfS/> . # URI of the web page

ex:GolfMatch a coo:Trim, vso:Automobile ;
	rdfs:label "Golf Match (2010)"@en ;
	rdfs:comment "The Volkswagen Golf Match trim is the luxury configuration for your Golf."@en ;
	gr:isVariantOf ex:GolfBaseModel ; # inheriting features from base model
	# Fixed parts / features for this trim: Qualitative
	vso:feature dbpedia:Cup_holder,	# Add more DBPedia / Wikipedia URIs for additional features
				dbpedia:Power_window,
				dbpedia:Air_conditioner,
				dbpedia:Armrest,
				dbpedia:Tow_hitch,
				dbpedia:Power_steering,
				dbpedia:Child_safety_lock,
				dbpedia:Parking_sensors ;  # Consider using VVO / VW-specific URIs
	# Fixed parts / features for this trim: Quantitative
	vso:cargoVolume	 [ a gr:QuantitativeValueFloat ;
						 gr:hasValueFloat "500"^^xsd:float ;
						 gr:hasUnitOfMeasurement "LTR"^^xsd:string ] ;
	# Configurable components / features
	# NONE, since they are available only at the level of Derivatives

	foaf:depiction <http://www.volkswagen.co.uk/2010/Golf/GolfMatch/image1.jpg> ; # URI of a photo
	foaf:page <http://www.volkswagen.co.uk/2010/Golf/GolfMatch/> . # URI of the web page
		

Derivatives and Configurational Options

Turtle:

# Available Derivatives
ex:GolfS coo:hasDerivative ex:GolfS16TDI . # Add more

# Derivative with SpecItemCollections
ex:GolfS16TDI a coo:Derivative, vso:Automobile ;
	rdfs:label "Golf S 1.6 TDI 3door Manual (2010)"@en ;
	rdfs:comment "The Volkswagen Golf S 1.6 TDI 3door package with manual transmission is the best deal for budget-oriented power drivers."@en ;
	gr:isVariantOf ex:GolfS ; # inheriting features from trim

	# Fixed parts / features for this Derivative: Qualitative
	vso:feature dbpedia:Anti-lock_braking_system ;	# Consider using VVO / VW-specific URIs
	vso:transmission dbpedia:Manual_transmission ;	# Consider using VVO / VW-specific URIs
	vso:fuelType dbpedia:Diesel ; # Consider using VVO / VW-specific URIs

	# Fixed parts / features for this trim: Quantitative
	vso:doors [ a gr:QuantitativeValueInteger ;
				  gr:hasValueInteger "3"^^xsd:int ;
				  gr:hasUnitOfMeasurement "C62"^^xsd:string ] ;
	vso:seatingCapacity [ a gr:QuantitativeValueInteger ;
							gr:hasMinValueInteger "1"^^xsd:int ;
							gr:hasMaxValueInteger "5"^^xsd:int ;
					 		gr:hasUnitOfMeasurement "C62"^^xsd:string ] ;
	vso:gearsTotal [ a gr:QuantitativeValueInteger ;
					   gr:hasValueInteger "6"^^xsd:int ;
					   gr:hasUnitOfMeasurement "C62"^^xsd:string ] ;
	vso:engineDisplacement [ a gr:QuantitativeValueFloat ;
							   gr:hasValueFloat "1.6"^^xsd:float ;
							   gr:hasUnitOfMeasurement "LTR"^^xsd:string ] ;
	vso:engineName "1.6 TDI"@en ;

	# Configurable components / features
	coo:hasSpecItems ex:Colors1, ex:AudioOptions1 ;
	# Compatibility information
	coo:compatibility ex:ConfigurationInfo1, ex:ConfigurationInfo2a, ex:ConfigurationInfo2b, ex:ConfigurationInfo2c ;

	foaf:depiction <http://www.volkswagen.co.uk/2010/Golf/GolfS/GolfS16TDI.jpg> ; # URI of a photo
	foaf:page <http://www.volkswagen.co.uk/2010/Golf/GolfS/GolfS16TDI/> . # URI of the web page

# Spec Items
ex:Colors1 a coo:SpecItemCollection ; # A set of color choices
	rdfs:label "Color"@en ;
	coo:default ex:OceanBlue ; # The default color is ocean blue
	coo:availableChoice ex:Silver, ex:Gold, ex:Black ;
	coo:max 1 ; # exactly one color must be chosen
	coo:min 1 ;
	coo:displayPos 1 . # The color choice should come first in a user dialog

ex:AudioOptions1 a coo:SpecItemCollection ; # A set of color choices
	rdfs:label "Audio Option"@en ;
	coo:default ex:AMFMRadio ; # The default color is an AMFMRadio
	coo:availableChoice ex:CD, ex:MultimediaStation ;
	coo:max 1 ; # at max one Audio option can be chosen
	coo:min 0 ;
	coo:displayPos 2 . # The audio choice should come second in a user dialog

# Choices
ex:OceanBlue a coo:ChoiceOrComponent ; # Note that this is a subclass of gr:ProductOrServiceModel
	# So ontologically, this is not a color, but a feature document to be added to an existing model or car
	rdfs:label "ocean blue"@en ;
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:color "ocean blue"@en ] ; # Important: The car will be ocean blue, not the option!
	coo:displayPos 1 .

ex:Silver a coo:ChoiceOrComponent ;
	rdfs:label "silver"@en ;
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:color "silver"@en]
	coo:displayPos 2 .

ex:Gold a coo:ChoiceOrComponent ;
	rdfs:label "gold"@en ;
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:color "gold"@en ] ;
	coo:displayPos 3 .

ex:Black a coo:ChoiceOrComponent ;
	rdfs:label "black"@en ;
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:color "black"@en ] ;
	coo:displayPos 4 .

ex:AMFMRadio a coo:ChoiceOrComponent ;
	rdfs:label "AM/FM Radio"@en ;
	# Note that this is a subclass of gr:ProductOrServiceModel
	# So ontologically, this is the model of a radio an can have all properties for radios from various vocabularies
	# Add radio properties here, if available
	# It also modifies the properties of the resulting vehicle to vso:feature dbpedia:Radio
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:feature dbpedia:Radio ] ;
	coo:displayPos 1 .

ex:CD a coo:ChoiceOrComponent ;
	rdfs:label "CD player for cars"@en ;
	coo:featureOverride [ a coo:PropertySpecification ;
							vso:feature dbpedia:CD_Changer ] ;
	# Add CD player properties here, if available
	coo:displayPos 2 .

ex:MultimediaStation a coo:ChoiceOrComponent ;
	rdfs:label "Multimedia Station for cars"@en ;
	# Add additional properties here, if available
	coo:displayPos 3 .
		

Compatibility Information Assertion / Negation

Turtle:

# The AM/FM radio option is not possible in combination with a silver color
ex:ConfigurationInfo1 a coo:ConfigurationInfo ;
	coo:includesChoices ex:AMFMRadio, ex:Silver ;
	coo:valid "false"^^xsd:boolean .

# Alternative modeling using pairwise statement
ex:Silver coo:inCompatibleWith ex:AMFMRadio .

# The color option gold is assured to be compatible with any audio option
ex:ConfigurationInfo2a a coo:ConfigurationInfo ;
	coo:includesChoices ex:AMFMRadio, ex:Gold ;
	coo:valid "true"^^xsd:boolean .

ex:ConfigurationInfo2b a coo:ConfigurationInfo ;
	coo:includesChoices ex:CD, ex:Gold ;
	coo:valid "true"^^xsd:boolean .

ex:ConfigurationInfo2c a coo:ConfigurationInfo ;
	coo:includesChoices ex:MultimediaStation, ex:Gold ;
	coo:valid "true"^^xsd:boolean .

# Alternative modeling using three pairwise statements
ex:Gold coo:compatibleWith ex:AMFMRadio, ex:CD, ex:MultimediaStation .

# Inclusion of features
# If you choose the Multimedia station, you also get power speakers
ex:MultimediaStation coo:includes ex:PowerSpeakers .

ex:PowerSpeakers a coo:ChoiceOrComponent ;
	rdfs:label "2 x 100 W Power Speakers"@en .
	# Add additional speaker properties here, if available

# Dependecies of features
# If you choose the Multimedia station, you need an extra battery
ex:MultimediaStation coo:dependsOn ex:ExtraBattery .

ex:ExtraBattery a coo:ChoiceOrComponent ;
	rdfs:label "100 Ah Extra Battery"@en .
	# Add additional battery properties here, if available

# Now, we also need to state that the extra battery is an option for the derivative:
ex:GolfS16TDI coo:hasSpecItems ex:AdditionalBattery .

ex:AdditionalBattery a coo:SpecItemCollection ; # A set of battery choices
	coo:availableChoice ex:ExtraBattery ;
	coo:max 1 ;
	coo:min 0 .
	# Compatibility info could be added
		

Advanced Topics

Turtle:

# Complex Property Specification via coo:featureOverride
# The multimedia station is so big that you give up one seat (4 instead of 5)
# Note that the new seating capacity is not a property of the multimedia station, but of the resulting car
ex:MultimediaStation coo:featureOverride ex:ReductionOfSeats .

ex:ReductionOfSeats a coo:ComplexPropertySpecification ;
	vso:seatingCapacity [ a gr:QuantitativeValueInteger ;
							gr:hasMinValueInteger "1"^^xsd:int ;
							gr:hasMaxValueInteger "4"^^xsd:int ;
							gr:hasUnitOfMeasurement "C62"^^xsd:string ] .

# You should also state that this is a valid configuration
ex:GolfS16TDI coo:compatibility ex:ConfigurationInfo3 .

ex:ConfigurationInfo3 a coo:ConfigurationInfo ;
	coo:includesChoices ex:ExtraBattery, ex:PowerSpeakers, ex:MultimediaStation ;
	coo:compatible "true"^^xsd:boolean .

# Relative Price Specifications via coo:priceModifier
# Variant 1: The multimedia station increases the car price by 500 EUR
ex:MultimediaStation coo:priceModifier ex:MultimediaUpgrade .

ex:MultimediaUpgrade a coo:RelativePriceSpecification ;
	gr:hasCurrency "EUR"^^xsd:string ;
	gr:hasCurrencyValue "500"^^xsd:float .

# Variant 2: The multimedia station for golden cars is just 400 EUR
ex:ConfigurationInfo2c coo:priceModifier ex:MultimediaGoldUpgrade .

ex:MultimediaGoldUpgrade a coo:RelativePriceSpecification ;
	gr:hasCurrency "EUR"^^xsd:string ;
	gr:hasCurrencyValue "400"^^xsd:float .
		

SPARQL Queries

You can try the queries against the sample data provided at http://www.heppnetz.de/ontologies/tribalddb/coo/examples.ttl.

Scenario: List all configuration options (coo:SpecItem) for a given derivative (coo:Derivative)

SPARQL Query:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX coo: <http://purl.org/coo/ns#>
PREFIX ex: <http://www.heppnetz.de/ontologies/tribalddb/coo/examples#>

# List SpecItems and Choices for a particular coo:Derivative
# Note: This does not yet include a check for buildability

SELECT * WHERE
{
 ex:GolfS16TDI coo:hasSpecItems ?s .
 ?s rdfs:label ?ls .
 OPTIONAL {?s coo:displayPos ?ps } .
 ?s coo:availableChoice ?c .
 ?c rdfs:label ?lc .
 OPTIONAL {?s coo:displayPos ?pc } .
}
ORDER BY ?ps ?pc
LIMIT 500
		

Scenario: Can the color option "silver" be combined with an AM/FM radio for the GolfS16TDI derivative?

SPARQL Query:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX coo: <http://purl.org/coo/ns#>
PREFIX ex: <http://www.heppnetz.de/ontologies/tribalddb/coo/examples#>

# If the result is true, you know it's valid
# If the result is false, you know it is invalid

SELECT ?valid WHERE
{
 ex:GolfS16TDI coo:compatibility ?ci.
 ?ci coo:includesChoices ex:Silver .
 ?ci coo:includesChoices ex:AMFMRadio .
 ?ci coo:valid ?valid .
}
		

Table of Contents

  1. Ontology Metadata
  2. Conventions
  3. Classes
  4. Datatype Properties
  5. Object Properties
  6. Contact Information
  7. License
  8. Acknowledgments
  9. References
  10. Change Log

[back to top]

Car Options Ontology Metadata (rdf:type owl:Ontology)

URI http://purl.org/coo/ns#
rdfs:label Car Options Ontology

rdfs:comment

COO: The Car Options Ontology

The COO provides a vocabulary for exposing available configuration options for car models. It allows indicating choices that can be made as well as compatibility, dependency, and inclusion information.

The ontology imports and extends the GoodRelations ontology for e-commerce, which provides an abstract framework for product model information via gr:ProductOrServiceModel and ist associated properies.

The main difference between COO and the default patterns for model data in GoodRelations is that GoodRelations requires the materialization of all choices for features, which can quickly lead to very large amounts of data if features can be combines rather freely, due to the combinatorial effects.

Vocabulary: http://purl.org/coo/ns
Namespace: http://purl.org/coo/ns#

The Car Options Ontology is designed to be used in combination with GoodRelations, a standard vocabulary for the commercial aspects of offers for sale or rental, and the Vehicle Sales Ontology.

See http://purl.org/goodrelations/ and http://purl.org/vso/ns for more information.

dc:subject E-Commerce, E-Business, GoodRelations, Ontology, Cars, Automobiles

dc:contributor Charles Sandeman-Craik, Tribal DDB; Chris Jenkins, Tribal DDB; Tim Redding, Tribal DDB; Yago Otero, Tribal DDB; William Greenly, Tribal DDB; Robin Dingle, Volkswagen UK;

dc:rights The Car Options Ontology is available under the Creative Commons Attribution 3.0 Unported license; see http://creativecommons.org/licenses/by/3.0/. In a nutshell, you are free to copy, distribute and transmit the work; to remix/adapt the work (e.g. to import the ontology and create specializations of its elements), as long as you attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

[back to top]

Conventions

Cardinality Recommendations

For properties, cardinality recommendations are given in the form "propertyName (0..*)".
This indicates the recommended range for the number of occurrences of this property for the same subject.

The following variants are used:

Note: These cardinality recommendations are NOT modeled as OWL cardinality constraints, since the OWL formal semantics does not match the intended semantics.

[back to top]

Classes

[back to top]

coo:BaseModel (rdf:type owl:Class)

URI http://purl.org/coo/ns#BaseModel
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label BaseModel

rdfs:comment

A Base Model is an abstract entity specifying the basic features of a group of vehicles.

Examples: VW Golf, VW Polo, VW Passat

is rdfs:domain of coo:hasTrim

[back to top]

coo:ChoiceOrComponent (rdf:type owl:Class)

URI http://purl.org/coo/ns#ChoiceOrComponent
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label ChoiceOrComponent

rdfs:comment

A Choice or Component is a component (e.g. engine), add-on, feature (color "ocean blue"), or service that can be chosen to be part of a final vehicle configuration.

Example: Engine 1.6 l TDI, color ocean blue, trailer hitch

is rdfs:domain of coo:compatibleWith coo:dependsOn coo:featureOverride coo:includes coo:incompatibleWith coo:priceModifier
is rdfs:range of coo:availableChoice coo:compatibleWith coo:default coo:dependsOn coo:hasSpecItemChoice coo:includes coo:includesChoices coo:incompatibleWith

[back to top]

coo:CompleteCarModel (rdf:type owl:Class)

URI http://purl.org/coo/ns#CompleteCarModel
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label CompleteCarModel

rdfs:comment

A Complete Car Model is an abstract entity specifying all features and configuration choices needed for actually producing a vehicle. In other words, it is the gr:ProductOrServiceModel ("datasheet") for a completely configured vehicle.
While a Complete Car Model can be defined indepently of a Base Model, Trim, or Derivative, it is usually based on a Derivative plus choices for all mandatory configurational options (coo:SpecItemCollection) of that Derivative.
A Complete Car Model should be linked to its Derivative via gr:isVariantOf, if available.

Example: VW Golf S 1.6 TDI 3door Manual in ocean blue with air-conditioning, CD player, trailer hitch, power steering, and power windows

Note: A coo:CompleteCarModel is NOT an actual car, but a complete feature description of one or multiple actual cars.

is rdfs:domain of coo:hasSpecItemChoice
is rdfs:range of coo:hasCompleteCarModel

[back to top]

coo:ConfigurationInfo (rdf:type owl:Class)

URI http://purl.org/coo/ns#ConfigurationInfo
rdfs:label ConfigurationInfo

rdfs:comment

A Configuration Info is an abstract entity that gives information on whether a set of Choices Or Components results in a valid configuration.
Using coo:compatible, it is possible to indicate either compatibility (true) and incompatibility (false) so that modeling remains efficient, no matter whether most combinations are valid or whether most configurations are invalid.
If no such statement is found, the validity of a configuration is unknown.

Note: The two properties coo:includes and coo:dependsOn, attached to coo:ChoiceOrComponent, may contain additional information on the validity of configuration.

is rdfs:domain of coo:featureOverride coo:includesChoices coo:priceModifier coo:valid
is rdfs:range of coo:compatibility

[back to top]

coo:Derivative (rdf:type owl:Class)

URI http://purl.org/coo/ns#Derivative
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label Derivative

rdfs:comment

A Derivative is an abstract entity specifying (1) the basic features plus (2) a set of functional (e.g. engine type) and non-functional configuration (e.g. upholstery) choices of a group of vehicles.
A Derivative has often a number of remaining configuration choices (coo:SpecItemCollection attached via coo:hasSpecItems), which will determine the actual properties of the resulting vehicle.
A Derivative should be linked to its Trim via gr:isVariantOf, if available.

Examples: VW Golf S 1.6 TDI 3door Manual

is rdfs:domain of coo:compatibility coo:hasCompleteCarModel coo:hasSpecItems
is rdfs:range of coo:hasDerivative

[back to top]

coo:PropertySpecification (rdf:type owl:Class)

URI http://purl.org/coo/ns#PropertySpecification
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label PropertySpecification

rdfs:comment

A Property Specification is an abstract entity specifying a set of properties for a vehicle that results from a single choice or the combination of two or more choices and that override the individual properties of the resulting vehicle.

Example 1: Power steering and Air conditioning in combination reduce the available engine power from 90 kW to 89 kW.
Example 2: Choosing the color option "blue" changes the color of the car to "blue".

is rdfs:range of coo:featureOverride

[back to top]

coo:RelativePriceSpecification (rdf:type owl:Class)

URI http://purl.org/coo/ns#RelativePriceSpecification
rdfs:subClassOf http://purl.org/goodrelations/v1#PriceSpecification
rdfs:label RelativePriceSpecification

rdfs:comment

A shortcut for indicating the effect of a choice or set of choices on the unit price. Use positive values for a surcharge and negative values for a deduction.

Note: Price information should in general be attached to a gr:Offering node, not to a Base Model, Trim, Derivative, or Complete Car Model. Use this shortcut with care.

is rdfs:range of coo:priceModifier

[back to top]

coo:SpecItemCollection (rdf:type owl:Class)

URI http://purl.org/coo/ns#SpecItemCollection
rdfs:label SpecItemCollection

rdfs:comment

A Spec Item Collection is an entity collating multiple coo:ChoiceOrComponent options for a given coo:Derivative, i.e. the available configurational choices.
The default choice can be indicated using a coo:default link. All other choices are attached using coo:availableChoice. The number of coo:ChoiceOrComponent items that can / must be selected for a valid configuration are indicated via coo:min and coo:max.

is rdfs:domain of coo:availableChoice coo:default coo:max coo:min
is rdfs:range of coo:hasSpecItems

[back to top]

coo:Trim (rdf:type owl:Class)

URI http://purl.org/coo/ns#Trim
rdfs:subClassOf http://purl.org/goodrelations/v1#ProductOrServiceModel
rdfs:label Trim

rdfs:comment

A Trim is an abstract entity specifying (1) the basic features plus (2) a set of configuration choices (mostly non-functional) of a group of vehicles.
A Trim should be linked to its Base Model via gr:isVariantOf, if available.

Examples: VW Golf S, VW Polo Match, VW Passat SE

is rdfs:domain of coo:hasDerivative
is rdfs:range of coo:hasTrim

[back to top]

Datatype Properties

[back to top]

coo:displayPos (rdf:type owl:DatatypeProperty)

URI http://purl.org/coo/ns#displayPos
rdfs:label displayPos (0..1)

rdfs:comment

The position at which the option or element should be listed in a menu or user dialog, lower numbers come first.
The main usage of this property are coo:SpecItemCollection and coo:ChoiceOrComponent, but it is possible to apply it to any owl:Class.

Note: It is recommended to rely on this property only for data originating from a single RDF graph; otherwise, unpredictable results are possible.

rdfs:domain http://www.w3.org/2002/07/owl#Class
rdfs:range http://www.w3.org/2001/XMLSchema#int

[back to top]

coo:max (rdf:type owl:DatatypeProperty)

URI http://purl.org/coo/ns#max
rdfs:label max (0..1)

rdfs:comment

The maximum number of coo:ChoiceOrComponent entities that can be selected for a valid configuration

rdfs:domain coo:SpecItemCollection
rdfs:range http://www.w3.org/2001/XMLSchema#int

[back to top]

coo:min (rdf:type owl:DatatypeProperty)

URI http://purl.org/coo/ns#min
rdfs:label min (0..1)

rdfs:comment

The minimum number of coo:ChoiceOrComponent entities that must be selected for a valid configuration

rdfs:domain coo:SpecItemCollection
rdfs:range http://www.w3.org/2001/XMLSchema#int

[back to top]

coo:valid (rdf:type owl:DatatypeProperty)

URI http://purl.org/coo/ns#valid
rdfs:label valid (1..1)

rdfs:comment

Indicates whether the attached set of choices is a valid (true) or invalid (false) configuration for the Derivative

rdfs:domain coo:ConfigurationInfo
rdfs:range http://www.w3.org/2001/XMLSchema#boolean

[back to top]

Object Properties

[back to top]

coo:availableChoice (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#availableChoice
rdfs:label availableChoice (1..*)

rdfs:comment

This property links available Choices or Components to a Spec Item.

rdfs:domain coo:SpecItemCollection
rdfs:range coo:ChoiceOrComponent

Subproperties

[back to top]

coo:compatibility (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#compatibility
rdfs:label compatibility (0..*)

rdfs:comment

Links from a Derivative to information on whether a particular configuration is valid (true) or invalid (false)

rdfs:domain coo:Derivative
rdfs:range coo:ConfigurationInfo

[back to top]

coo:compatibleWith (rdf:type owl:SymmetricProperty)

URI http://purl.org/coo/ns#compatibleWith
rdfs:label compatibleWith (0..*)

rdfs:comment

Indicates that two Choices or Components are compatible with each other.

Note: This property is symmetric, i.e., if A is compatible with B, then B is also compatible with A.

rdfs:domain coo:ChoiceOrComponent
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:default (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#default
rdfs:subPropertyOf coo:availableChoice
rdfs:label default (0..1)

rdfs:comment

This property links the default Choice or Component to a Spec Item.
Since it is defined a sub-property of coo:availableChoice, the default choice is automatically part of the available choices.

rdfs:domain coo:SpecItemCollection
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:dependsOn (rdf:type owl:TransitiveProperty)

URI http://purl.org/coo/ns#dependsOn
rdfs:label dependsOn (0..*)

rdfs:comment

Links a Choice or Component to one or multiple other Choices Or Components required for that choice

Note: This property is transitive, i.e., if B is required by A and C and D are required by B, then C and D are also required by A.

rdfs:domain coo:ChoiceOrComponent
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:featureOverride (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#featureOverride
rdfs:label featureOverride (0..*)

rdfs:comment

Links a coo:ConfigurationInfo node to information on how a choice or component or the combination of multiple choices will override the regular properties of the resulting vehicle

rdfs:domain coo:ChoiceOrComponent coo:ConfigurationInfo
rdfs:range coo:PropertySpecification

[back to top]

coo:hasCompleteCarModel (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#hasCompleteCarModel
rdfs:label hasCompleteCarModel (0..*)

rdfs:comment

Links one or multiple Complete Car Models to the underlying Derivative

rdfs:domain coo:Derivative
rdfs:range coo:CompleteCarModel

[back to top]

coo:hasDerivative (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#hasDerivative
rdfs:label hasDerivative (0..*)

rdfs:comment

Links a Derivative to a Trim

rdfs:domain coo:Trim
rdfs:range coo:Derivative

[back to top]

coo:hasSpecItemChoice (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#hasSpecItemChoice
rdfs:label hasSpecItemChoice (0..*)

rdfs:comment

Links a Complete Car Model to the choices for configurational options

rdfs:domain coo:CompleteCarModel
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:hasSpecItems (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#hasSpecItems
rdfs:label hasSpecItems (0..*)

rdfs:comment

This property links available Spec Items to a Derivative.

rdfs:domain coo:Derivative
rdfs:range coo:SpecItemCollection

[back to top]

coo:hasTrim (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#hasTrim
rdfs:label hasTrim (0..*)

rdfs:comment

Links a Trim to Base Model

rdfs:domain coo:BaseModel
rdfs:range coo:Trim

[back to top]

coo:includes (rdf:type owl:TransitiveProperty)

URI http://purl.org/coo/ns#includes
rdfs:label includes (0..*)

rdfs:comment

Links a Choice or Component to one or multiple other Choices Or Components implicity contained

Note: This property is transitive, i.e., if B is included in A and C and D are included in B, then C and D are also included in A.

rdfs:domain coo:ChoiceOrComponent
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:includesChoices (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#includesChoices
rdfs:label includesChoices (1..*)

rdfs:comment

Indicates the set of Choices Or Components to which the Configuration Info node refers

Note 1: Complementing compatibility information can be attached to the components directly via coo:compatibleWith, coo:incompatibleWith, coo:dependsOn, and coo:includes.
Note 2: The coo:ConfigurationInfo node makes only a valid statement for a configuration that includes ALL of the Choices or Components attached via this property.
Note 3: If you want to know whether further components can be added, check that there are no coo:incompatibleWith relationships with any Choice or Component. This check must also be extended to all Choices or Components implicitly included via coo:includes.
Note 4: If you want to know whether some components may be omitted without invalidating the configuration, check that there are no coo:dependsOn relationships with any Choice or Component. This check must also be extended to all Choices Or Components implicitly included via coo:includes.
Note 5: Under an Open World Assumption (OWA), only an explicit compatibility statement for your configuration is really reliable. A weaker guarantee may be sufficient for your application, though.

rdfs:domain coo:ConfigurationInfo
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:incompatibleWith (rdf:type owl:SymmetricProperty)

URI http://purl.org/coo/ns#incompatibleWith
rdfs:label incompatibleWith (0..*)

rdfs:comment

Indicates that two Choices or Components are incompatible with each other, independent from other choices.

Note: This property is symmetric, i.e., if A is incompatible with B, then B is also incompatible with A.

rdfs:domain coo:ChoiceOrComponent
rdfs:range coo:ChoiceOrComponent

[back to top]

coo:priceModifier (rdf:type owl:ObjectProperty)

URI http://purl.org/coo/ns#priceModifier
rdfs:label priceModifier (0..1)

rdfs:comment

Links a coo:ConfigurationInfo node to information on a choice or component or the combination of multiple choices will affect the regular pricing of the resulting vehicle

Note: The use of gr:addOn is in general a better way of modeling surcharges

rdfs:domain coo:ChoiceOrComponent coo:ConfigurationInfo
rdfs:range coo:RelativePriceSpecification

[back to top]

Annotation Properties

[back to top]

coo:hasID (rdf:type owl:AnnotationProperty)

URI http://purl.org/coo/ns#hasID
rdfs:label hasID (0..1)

rdfs:comment

An annotation property that can be used to attach element identifiers from XML schemas for the corresponding XML data or schema.

[back to top]

Contact Information

Univ.-Prof. Dr. Martin Hepp

Hepp Research GmbH
Karlstraße 8
D-88212 Ravensburg
Germany

Phone: +49 751 205 8512
eMail: contact@heppresearch.com
Web: http://www.heppresearch.com/

William Greenly

Tribal DDB
12 Bishops Bridge Road
London W2 6AA
United Kingdom

Phone: +44 207 258 4652
eMail: william.greenly@tribalddb.co.uk
Web: http://tribalddb.co.uk/

Volkswagen Marketing

Yeomans Drive
Blakelands
Milton Keynes
MK14 5AN
United Kingdom

Phone: 0800 0833 920
Web: http://www.volkswagen.co.uk

[back to top]

License

The Car Options Ontology is available under the Creative Commons Attribution 3.0 license. You are free to copy, distribute and transmit the work; to remix/adapt the work (e.g. to import the ontology and create specializations of its elements), as long as you attribute the work and link back to http://purl.org/coo/ns.

[back to top]

Acknowledgements

We would like to thank Volkswagen UK and Tribal DDB for very useful suggestions and feedback.
This documentation has been generated automatically from the most recent ontology specification in OWL using a Python script written by Alex Stolz and Martin Hepp. Our script uses the RDFlib library for parsing and handling RDF and the Jinja template engine for generating the HTML document.

[back to top]

References

Hepp, Martin: GoodRelations: An Ontology for Describing Products and Services Offers on the Web, Proceedings of the 16th International Conference on Knowledge Engineering and Knowledge Management (EKAW2008), Acitrezza, Italy, September 29 - October 3, 2008, Springer LNCS, Vol 5268, pp. 332-347.

[back to top]

Change Log

2010-10-12: Changed coo:hasSpecItem to coo:hasSpecItems

2010-10-11: Changed coo:SpecItem to coo:SpecItemCollection

2010-10-02: Polishing

2010-09-15: Finalization

2010-09-12: First mature release (without examples yet)

2010-09-10: Initial release