JourneyStar
, is an Rdf-star-based
ontology to represent complex metadata-oriented travel data (historical or modern).
This ontology contains definition of classes and properties necessary to represent
travel data with all its associated metadata as a knowledge graph.
The meta-level information can be added to the the edges of the graph using
RDF-star technology to comprehensively represent the complexity of the travel data.
We have illustrated use-case of the ontology constructs through multiple examples.
The resulting RDF-star based knowledge graphs can be stored in triplestores
which support RDF-star such as GraphDB and
the graph can be then efficiently queried using SPARQL-star.
To verify the data and ensure the consistency of the data with the ontology,
SHACL node and property shapes are defined and made openly-accessible along
with the ontology. You can find the ontology, and SHACL graphs, both
serialized in Turtle format, with various usage examples here.
Description of the Ontology
JourneyStar
, is an OWL ontology that contains description of various classes
and predicates needed to represent travel accounts as linked open data. Since
RDF-star makes embedding triples directly within other triples possible, we can
represent the core statements with their metadata as an annotated triples where
the core triples take the subject or object positions. In the ontology, we have
defined properties for this that can be used for annotated triples.
To keep this ontology generic, we have employed the existing ontologies and extended the existing definitions of the classes and properties in other ontologies such as schema and Trip through defining subclasses. The ontology serialized in Turtle can be found here.
This ontology has the prefix js
and the namespace http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#
.
<http://journey-star.dhlab.unibas.ch/ontology/JourneyStar> rdf:type owl:Ontology ;
rdfs:comment "An RDF-star-based ontology to represent travel data." ;
owl:versionInfo "v.1.0" .
Below we describe a few main classes and properties of this ontology with a few graphics.
Note: in all of the graphics below the following prefixes are used:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix currencyA: <https://spec.edmcouncil.org/fibo/ontology/FND/Accounting/CurrencyAmount/> .
@prefix currency: <https://spec.edmcouncil.org/fibo/ontology/FND/Accounting/ISO4217-CurrencyCodes/>.
@prefix schema: <https://schema.org/> .
@prefix dbr: <http://dbpedia.org/resource/> .
@prefix dbo: <http://dbpedia.org/ontology/> .
@prefix trip: <http://ontology.eil.utoronto.ca/icity/Trip/> .
@prefix activity: <http://ontology.eil.utoronto.ca/icity/Activity/> .
@prefix js: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#> .
@prefix js-shacl: <http://journey-star.dhlab.unibas.ch/shacl/js-shacl#> .
@prefix : <http://journey-star.dhlab.unibas.ch/data/JourneyStar#> .
Classes
Location
The js:Location
is an OWL class representing a location/place such as a city,
lake, mountain, village, etc. which have geo-coordinates and preferably a
GeonameID (from Geonames database, retrievable also
from Wikidata) so that they can be uniquely identified.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Location>
has super class:
dbo:Place
schema:Pace
is domain of:
js:hasGeonameID (max cardinality 1, range: xsd:string)
js:hasWikiLink (max cardinality 1, range: IRI or xsd:anyURI)
schema:name (min cardinality 1, range: xsd:string, permitted language tags "en", "de", "fr", "es")
Corresponding SHACL node shape:
js-shacl:LocationShape
Below, you can see an example RDF representation of a location:
Person
The js:Person
is an OWL class representing a person who undertakes a journey or
is involved in a journey (such as hotel owner, waiter/waitress, travel companion, etc.).
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Person>
has super class:
schema:Person
is domain of:
schema:name (min cardinality 1, range: xsd:string)
schema:givenName (range: xsd:string)
schema:familyName (range: xsd:string)
schema:gender (range: xsd:string or schema:Male, schema:Female)
schema:birthDate (max cardinality 1, range: xsd:date, xsd:dateTime, xsd:gYear)
schema:birthPlace (max cardinality 1, range: IRI)
schema:knows (range: js:Person, js:Location)
js:participatedIn (range: js:Event)
js:hasGnd (max cardinality 1, range: xsd:string)
js:hasWikiLink (max cardinality 1, xsd:anyURI)
Corresponding SHACL node shape:
js-shacl:PersonShape
Below, you can see an example of an RDF representation of a person:
Event
The js:Event
is a general OWL class describing an event in a real world with
spatiotemporal data and participants. An event can be an activity such as a journey,
sightseeing, excursion, dining, etc., or an occurrence such as encounter with a person,
or even a natural phenomena.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Event>
is domain of:
js:hasParticipant (range: IRI or xsd:anyURI)
js:hasLocation (range: xsd:string, js:Location, xsd:anyURI, IRI)
js:hasDate (range: xsd:date, xsd:dateTime, xsd:gYear)
Corresponding SHACL node shape:
js-shacl:EventShape
There are various classes that are defined as subclass of the js:Event
each with their specific predicates, for example:
js:Activity
that has predicates to describe a physical activity such as a movement.js:Occurrence
with properties to describe an occurrence.js:NaturalPhenomena
representing a natural phenomena.
Activity
The js:Activity
is a general OWL class describing an activity a person undertakes, this can be a journey, sightseeing, excursion, dining, etc.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Activity>
has super class:
activity:Activity, js:Event
is domain of:
schema:name (range: xsd:string)
js:hasCost (max cardinality 1, range: xsd:decimal)
Corresponding SHACL node shape:
js-shacl:ActivityShape
There are various classes that are defined as subclass of the js:Activity
each with their specific predicates, for example:
js:Dining
that has predicates to describe the cuisine and type of the meals.js:Sightseeing
with properties to describe the building or monument.js:Entertainment
that has predicates to describe entertainment activities.js:Trip
representing a movement from one place to another.
Dining
The js:Dining
is a general OWL class describing the act of dining during a journey.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Dining>
has super class:
js:Activity
is domain of:
js:mealType (range: xsd:string)
js:cuisine (range: xsd:string)
Corresponding SHACL node shape:
js-shacl:DiningShape
SightSeeing
The js:SightSeeing
is a general OWL class describing the act of sight-seeing during a journey.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#SightSeeing>
has super class:
js:Activity
is domain of:
js:sightingOf (min cardinality 1, range: xsd:string, IRI, or xsd:anyURI)
Corresponding SHACL node shape:
js-shacl:SightSeeingShape
Entertainment
The js:Entertainment
is a general OWL class describing entertainment.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Entertainment>
has super class:
js:Activity
is domain of:
js:entertainmentType (range: xsd:string)
Corresponding SHACL node shape:
js-shacl:EntertainmentShape
Journey
The js:Journey
is an OWL class that represents a journey a person undertakes
from place A to place B. This journey can be a long one lasting for months or a
short one for a few days.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Journey>
has super class:
trip:Trip
js:Activity
is domain of:
js:hasParticipant (range: IRI)
js:origin (min cardinality 1, range: IRI or xsd:anyURI)
js:destination (min cardinality 1, range: IRI or xsd:anyURI)
js:startDate (max cardinality 1, range: xsd:date, xsd:dateTime or xsd:gYear)
js:endDate (max cardinality 1, range: xsd:date, xsd:dateTime or xsd:gYear)
js:hasActivity (range: js:Activity)
js:hasStay (range: js:Stay)
js:meanOfTransportation (range: IRI or xsd:anyURI)
js:transitThrough (range: IRI or xsd:anyURI)
Corresponding SHACL node shape:
js-shacl:JourneyShape
There are metadata information accompanying the travel information, for example
when we say person X went from A to B, there is a metadata information about the
time the person left location A (departure date) and the time, person arrives to the destination (arrival date).
These meta-level information can be added to the edges of the graph representing
the origin and destination, respectively through predicates js:arrivalDate
and js:departureDate
.
Note: The predicates of the star (annotated) triples, such as js:arrivalDate
and js:departureDate
, do not have domain restriction, and can be used with subjects of any type, even a triple!
Excursion
The js:Excursion
is an OWL class that represents a short (one day) round trip
a person undertakes without overnight stay. This class is distinct from js:Journey
in that the
origin and destination of this kind of trip is the same.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Excursion>
has super class:
trip:Trip
different from:
js:Journey
Corresponding SHACL node shape:
js-shacl:ExcursionShape
Accommodation
The class js:Accommodation
represents an accommodation. It can be any kind of
shelter used to spend a night in during a journey; such as hotel, hostel, rented
room, tent, cave, etc.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Accommodation>
has super class:
dbo:Building
dbo:Shelter
is domain of:
schema:name (min cardinality 1, range: xsd:string)
schema:address (range: xsd:string)
js:hasLocation (range: xsd:string, js:Location, xsd:anyURI, IRI)
Corresponding SHACL node shape:
js-shacl:AccommodationShape
Stay
The class js:Stay
represents an overnight stay in a location in an accommodation
which is represented by a resource of type js:Accommodation
class.
IRI: <http://journey-star.dhlab.unibas.ch/ontology/JourneyStar#Stay>
has super class:
js:Activity
is domain of:
js:hasAccommodation (range: js:Accommodation or IRI)
js:startDate (max cardinality 1, range: xsd:date or xsd:dateTime)
js:endDate (max cardinality 1, range: xsd:date or xsd:dateTime)
Corresponding SHACL node shape:
js-shacl:StayShape
Additionally, the currency type can be added to the edge representing js:hasCost
using RDF-star so that not only the cost of the accommodation, can be stored,
the currency of the amount is also stored with it. The currency types can be
found in the currency data graph.