Home » railML newsgroups » railml.common » [Ontology v0.6] Missing properties for signals
[Ontology v0.6] Missing properties for signals [message #3571] Mon, 21 April 2025 22:53 Go to next message
Mathias Vanden Auweele is currently offline  Mathias Vanden Auweele
Messages: 40
Registered: February 2025
Location: Brussels
Member
I can't find several properties related to signals.

From:
https://wiki3.railml.org/DataModel/3.3/IS/EARoot/EA53.htm

The one I want to use but is missing, is "isTrainMovementSignal". Which we should probably translate into the ontology by means of a skos list and using a predicate named "hasSignalTrainMovementType" or similar.

This is not the only property missing. But I haven't made a complete list.


Mathias Vanden Auweele
Railway data freelancer
https://matdata.eu
Brussels, Belgium

[Updated on: Tue, 22 April 2025 22:29]

Report message to a moderator

Re: [Ontology v0.6] Missing properties for signals [message #3573 is a reply to message #3571] Tue, 22 April 2025 10:18 Go to previous messageGo to next message
Larissa Zhuchyi is currently offline  Larissa Zhuchyi
Messages: 69
Registered: November 2022
Member
Dear Mathias

Since it states at https://ontology.railml.org/ that railML ontology v0.6 covers only "Partially Infrastructure (IS)" you are completely right that some elements might be missing in ontology currently.

Published railML ontology v0.6 covers however railML elements e.g. <isEtcsSignal> and <isSpeedSignal>.

Quote:
I ... can't find several properties related to signals.

Current suggestion is to model in ontology children of <signalIS> beginning with "is" e.g. <isEtcsSignal> as ontology classes with naming pattern "...ClassificationCriteria" trying to follow [1] (suggested by the working group on 2024-04-26).

For example in railML ontology v0.6:

- <isEtcsSignal> is modelled as https://ontology.railml.org/#EtcsSignalClassificationCriteri a

- <isSpeedSignal> is modelled as https://ontology.railml.org/#SpeedSignalClassificationCriter ia

Both are linked using skos:note with https://wiki3.railml.org/wiki/IS:isEtcsSignal and https://wiki3.railml.org/wiki/IS:isSpeedSignal correspondingly to make mapping clearer.

This is needed since some similar children of <signalIS> e.g. <isSpeedSignal> have attributes and further children in them e.g. isSpeedSignal/@type,
isSpeedSignal/refersToBeginOfSpeedSection.

Published railML ontology v0.6 introduces also properties e.g. https://ontology.railml.org/#hasEtcsSignalClassificationCrit eria for linking https://ontology.railml.org/#SignalIS with https://ontology.railml.org/#EtcsSignalClassificationCriteri a.

What do you think about this modeling? If it fits, any contributions following this pattern are very much welcome from the community, e.g. for <isTrainMovementSignal>!

If you can think of an alternative suggestion on how to "map" this kind of XSD elements to the ontological way of modeling, please answer with a short example to be discussed in here the forum and in the meeting of the working group! Since the ontology is in beta version the modeling can still change!

[1] https://github.com/semanticarts/gist/blob/develop/docs/gistS tyleGuide.md

Sincerely,


Larissa Zhuchyi – Ontology Researcher
railML.org (Registry of Associations: VR 5750)
Altplauen 19h; 01187 Dresden; Germany www.railML.org
Re: [Ontology v0.6] Missing properties for signals [message #3581 is a reply to message #3573] Tue, 22 April 2025 22:28 Go to previous messageGo to next message
Mathias Vanden Auweele is currently offline  Mathias Vanden Auweele
Messages: 40
Registered: February 2025
Location: Brussels
Member
Thank you for your answer Larissa. Indeed, I forgot about the scope limitation to "Partially Infrastructure (IS)"

I can't use the ETCS or speed signal suggestions as both don't apply. I was currently mapping normal light signals that serve as entrance/exit signals for stations.

I was looking more closely at speed signals and I also don't see a way to make the distinction between the announcement signal from the execution signal.

Quote:
If you can think of an alternative suggestion on how to "map" this kind of XSD elements to the ontological way of modeling, please answer with a short example to be discussed in here the forum and in the meeting of the working group! Since the ontology is in beta version the modeling can still change!
I would propose to map the enumerations listed in the UML diagram linked in my first post to SKOS lists and include the different properties such as hasSignalSpeedType, hasSignalTrainMovementType, ...


Mathias Vanden Auweele
Railway data freelancer
https://matdata.eu
Brussels, Belgium

[Updated on: Tue, 22 April 2025 22:29]

Report message to a moderator

Re: [Ontology v0.6] Missing properties for signals [message #3583 is a reply to message #3581] Wed, 23 April 2025 10:42 Go to previous messageGo to next message
Larissa Zhuchyi is currently offline  Larissa Zhuchyi
Messages: 69
Registered: November 2022
Member
Dear Mathias

Quote:
I can't use the ETCS or speed signal suggestions as both don't apply.

I see my answer was confusing. I do not at all suggest to use isSpeedSignal or isEtcsSignal instead of isTrainMovementSignal.

With my answer about isSpeedSignal and isEtcsSignal I just tried to present current suggestion on how to model elements "similar" to isTrainMovementSignal.

Quote:
I was currently mapping normal light signals that serve as entrance/exit signals for stations.

railML.org makes it best to cover with ontology all the XSD schema as soon as possible.

However, railML is always community driven and based on expert experience. Therefore I'm encouraging once again to contribute to ontology! Please let me know if you need any assistance on this regard!

Quote:
I also don't see a way to make the distinction between the announcement signal from the execution signal.

Does the documentation in Wiki of railML3 [1] answer your question?

Quote:
map the enumerations listed in the UML diagram linked in my first post to SKOS lists

Currently at https://ontology.railml.org/ published railML ontology v0.6 vocabulary utilises rdf:List for enumerations for the illustration purposes.

In the railML.org cloud and ontology git repository there is file schema\railML3SHACL.ttl with SHACL shape railml3:SpeedSignalClassificationCriteria and sh:NodeShape railml3:tSignalSpeedType with SHACL list for validation purposes.

Does this way of modeling fit your use case?

If no, could you please elaborate on your use case, the advantages of SKOS lists and provide an example on how to use them for the above mentioned purposes?

[1] https://wiki3.railml.org/wiki/IS:isSpeedSignal

Sincerely,


Larissa Zhuchyi – Ontology Researcher
railML.org (Registry of Associations: VR 5750)
Altplauen 19h; 01187 Dresden; Germany www.railML.org
Re: [Ontology v0.6] Missing properties for signals [message #3584 is a reply to message #3583] Wed, 23 April 2025 13:52 Go to previous messageGo to next message
Mathias Vanden Auweele is currently offline  Mathias Vanden Auweele
Messages: 40
Registered: February 2025
Location: Brussels
Member
Quote:
With my answer about isSpeedSignal and isEtcsSignal I just tried to present current suggestion on how to model elements "similar" to isTrainMovementSignal.
Oooh OK, sorry I indeed misunderstood your comment.

I generally use the 'is' prefix when dealing with a boolean property. Something that is true or false. In the case of the TrainMovementSignal, there are 4 options, so I wouldn't use the 'is' prefix for this.

Quote:
However, railML is always community driven and based on expert experience. Therefore I'm encouraging once again to contribute to ontology! Please let me know if you need any assistance on this regard!
Do you propose that I create a push request in Gitlab? That would be my preferred way to contribute instead of using the railML forum but I understood that it was best to first create a topic here and if the need for a change in the ontology was clear from the community discussion, a Gitlab Issue was created and assigned and only then the work started on that side.
But I would be more then happy to assist in active OWL development!

Quote:
Does the documentation in Wiki of railML3 [1] answer your question?
Yes, the possibility is available in the railML3 xsd schema. It's just not available in the ontology. So I should have clarified my remark as to say "There is not yet a possibility to indicate the type of speed signal in the railML ontology".

Quote:
Currently at https://ontology.railml.org/ published railML ontology v0.6 vocabulary utilises rdf:List for enumerations for the illustration purposes.

In the railML.org cloud and ontology git repository there is file schema\railML3SHACL.ttl with SHACL shape railml3:SpeedSignalClassificationCriteria and sh:NodeShape railml3:tSignalSpeedType with SHACL list for validation purposes.

Does this way of modeling fit your use case?

If no, could you please elaborate on your use case, the advantages of SKOS lists and provide an example on how to use them for the above mentioned purposes?
Using skos lists would be more in line with how the RINF ontology is developed (and as I understood, also other ontologies such as Gist). I would consider it good practice if we used the same approach used by industry. Here's an example on how the SHACL validation is performed for RINF when dealing with skos:

extract from https://gitlab.com/era-europa-eu/public/interoperable-data-p rogramme/era-ontology/era-ontology/-/blob/main/era-shacl/RIN F-contact-line-systems.ttl?ref_type=heads

#contactLineSystemType: # 1.1.1.2.2.1.1
era-sh:ContactLineSystemShape sh:sparql era-sh:ContactLineSystemTypeSKOS .
era-sh:ContactLineSystemTypeSKOS
	a sh:SPARQLConstraint ;
    era:affectedProperty era:contactLineSystemType;
    era:affectedClass era:ContactLineSystem;
    era:scope "local";
	rdfs:comment "Indication of the type of the contact line system"@en  ;
	era:rinfIndex "1.1.1.2.2.1.1" ;
	sh:severity sh:Violation ;
	sh:message "contactLineSystemType (1.1.1.2.2.1.1): The contact line system {$this}  has a value {?concept} that is not one of the predefined values and cannot be converted into a SKOS concept on this list: http://data.europa.eu/949/concepts/contact-line-systems/ContactLineSystems."@en ;
    sh:prefixes era:;
	sh:select """
    PREFIX era: <http://data.europa.eu/949/>
    PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
    SELECT $this  ?concept
    WHERE {
        $this era:contactLineSystemType ?concept .
        era:contactLineSystemType era:inSkosConceptScheme ?conceptScheme .
		FILTER NOT EXISTS{         
  			?concept skos:inScheme ?conceptScheme .
		}
	}
""" .


Mathias Vanden Auweele
Railway data freelancer
https://matdata.eu
Brussels, Belgium
Re: [Ontology v0.6] Missing properties for signals [message #3585 is a reply to message #3584] Wed, 23 April 2025 15:32 Go to previous messageGo to next message
Rémi Collet is currently offline  Rémi Collet
Messages: 8
Registered: November 2024
Junior Member
To elaborate and exemplify what Mathias probably means by using skos concept lists, here is a sample from Infrabel :

onotology.ttl :
###  https://data.infrabel.be/edm/hasNetworkLevel
:hasNetworkLevel rdf:type owl:ObjectProperty ;
                 rdfs:domain :Network ;
                 rdfs:range skos:Concept ;
                 rdfs:comment """The level of detail a network has. The expected `skos:ConceptScheme` is: '[Network level] (concept-schemes/network-level.ttl)'."""@en ;
                 rdfs:isDefinedBy <https://data.infrabel.be/edm/> ;
                 rdfs:label "Has network level"@en .

Note that the ontology specificies in the rdfs:comment which skos concepts are eligible as objects of triples that use :hasNetworkLevel as predicate. This also needs to be formalized in the shacl constraints, like Mathias showed above.


Here is the associated network-level.ttl file that describes the skos concepts :

#################################################################
#
#    Concept Schemes
#
#################################################################

 inf-c:NetworkLevelScheme a skos:ConceptScheme ;
     rdfs:label "Network level"@en ;
     skos:prefLabel "Network level"@en ;
     skos:definition "The amount of details a network contains."@en ;
     skos:example "A railway station can be represented as a node in the Belgian network (higher level). Zooming in, a railway station can be represented as a set of multiple tracks, switches, and sidings (lower level)."@en ;
     dct:source "https://wiki.railtopomodel.org/wiki/Levels_of_detail".

#################################################################
#
#    Concept instances
#
#################################################################


########## Network level ##########

 <https://data.infrabel.be/concepts/network-level/nano> a skos:Concept ;
     rdfs:label "Nano"@en ;
     rdfs:comment "Description of the insides of micro NetElements."@en ;
     skos:inScheme inf-c:NetworkLevelScheme ;
     skos:example "The individual parts of turnouts and crossings are network resources."@en;
     skos:prefLabel "Nano"@en ;
     dct:source "https://wiki.railtopomodel.org/wiki/Levels_of_detail#Nano".

 <https://data.infrabel.be/concepts/network-level/micro> a skos:Concept ;
     rdfs:label "Micro"@en ;
     rdfs:comment "Description of the network in the nearest way to the physical level as commonly viewed."@en ;
     skos:inScheme inf-c:NetworkLevelScheme ;
     skos:example "Turnouts and crossings as a whole are network resources."@en;
     skos:prefLabel "Micro"@en ;
     dct:source "https://wiki.railtopomodel.org/wiki/Levels_of_detail#Micro".

 <https://data.infrabel.be/concepts/network-level/meso> a skos:Concept ;
     rdfs:label "Meso"@en ;
     rdfs:comment "Description of the tracks between the operational points of the network."@en ;
     skos:inScheme inf-c:NetworkLevelScheme ;
     skos:example "Some turnouts, crossings and tracks are aggregated into logical groups (yards, stations, ...)."@en;
     skos:prefLabel "Meso"@en ;
     dct:source "https://wiki.railtopomodel.org/wiki/Levels_of_detail#Meso".

 <https://data.infrabel.be/concepts/network-level/macro> a skos:Concept ;
     rdfs:label "Macro"@en ;
     rdfs:comment "Description of the network at regional or national level, with the NonLinearNetElements being the boundaries and the major operational points while the linear elements are the section of lines connecting those points."@en ;
     skos:inScheme inf-c:NetworkLevelScheme ;
     skos:example "Logical groups are defined for all operational points and used as network resources. In general, a single turnout or crossing is not a network resource on this level."@en;
     skos:prefLabel "Macro"@en ;
     dct:source "https://wiki.railtopomodel.org/wiki/Levels_of_detail#Macro".


Re: [Ontology v0.6] Missing properties for signals [message #3587 is a reply to message #3584] Wed, 23 April 2025 17:25 Go to previous messageGo to next message
Larissa Zhuchyi is currently offline  Larissa Zhuchyi
Messages: 69
Registered: November 2022
Member
Dear Mathias

Quote:
I generally use the 'is' prefix when dealing with a boolean property. Something that is true or false. In the case of the TrainMovementSignal, there are 4 options, so I wouldn't use the 'is' prefix for this.

Do you think current general modelling approach described at [1] is be suitable in this case? This means that for <isTrainMovementSignal> there would be class railml3:TrainMovementSignalClassificationCriteria and a property railml3:hasTrainMovementSignalClassificationCriteria.

Quote:
There is not yet a possibility to indicate the type of speed signal in the railML ontology.

From what I understand published railML ontology v0.6 includes all the needed means in this case: classes railml3:SignalIS and railml3:SpeedSignalClassificationCriteria ; properties railml3:hasSpeedSignalClassificationCriteria and railml3:hasType ; enumerated datatype railml3:tSignalSpeedType.

Property railml3:hasSpeedSignalClassificationCriteria has:

- railml3:SignalIS as domain (using rdfs:domain in the published version and dcam:domainIncludes in the latest version in railML cloud) ;

- railml3:SpeedSignalClassificationCriteria as range (using rdfs:range in the published version and dcam:rangeIncludes in the latest version in railML cloud) .

Property railml3:hasType has:

- railml3:SpeedSignalClassificationCriteria as domain ;

- railml3:tSignalSpeedType as range .

Class railml3:SignalIS has existential quantifier constraint indicating that it is to be used with property railml3:hasSpeedSignalClassificationCriteria and class railml3:SpeedSignalClassificationCriteria .

Class railml3:SpeedSignalClassificationCriteria has existential quantifier constraint indicating that it is to be used with property railml3:hasType and datatype railml3:tSignalSpeedType.

Why "there is not yet a possibility to indicate the type of speed signal in the railML ontology" ?

Quote:
the advantages of SKOS lists

Enumerated datatype railml3:tSignalSpeedType at published railML ontology v0.6 does not include the documentation of enumerated values however. When modeling enumerations as rdf:resource one could simply provide documentation of enumeration value with skos:definition.

Quote:
I would consider it good practice if we used the same approach used by industry.


I see at [2] an example of the other approach with enumerated OWL datatypes. They document the values of enumerated datatype using rdfs:comment at property using current enumerated OWL datatype.

Prima facie this approach seems simpler and easier to use when having the same enumeration values in the SHACL list.

What are the opinions of the community?

Quote:
Do you propose that I create a push request in Gitlab? That would be my preferred way to contribute instead of using the railML forum but I understood that it was best to first create a topic here ...

As only working group members have access to both railML.org cloud and ontology Gitlab project, I would be grateful if you could fairly provide examples in Gitlab as well as here, in the railML forum for the rest of community. Same excellent way as Rémi Collet just did!

This is important to keep discussion possible outside of the working group. Thanks in advance!

[1] https://www.railml.org/forum/index.php?t=msg&th=1056& ;goto=3573&#msg_3573
[2] https://github.com/siemens/ProductConfigurationWithSHACL/blo b/feea2bfce2786a35dd22f55714999aaa7e369851/docs/topo/topo.tt l#L135

Sincerely,


Larissa Zhuchyi – Ontology Researcher
railML.org (Registry of Associations: VR 5750)
Altplauen 19h; 01187 Dresden; Germany www.railML.org
Re: [Ontology v0.6] Missing properties for signals [message #3592 is a reply to message #3587] Thu, 24 April 2025 08:12 Go to previous messageGo to next message
Sindre Asplem is currently offline  Sindre Asplem
Messages: 2
Registered: October 2024
Junior Member
Similar to the discussion we have previously had in the working group about the usage of rdfs:domain and rdfs:range, the usage of enumerated datatypes warrants caution, especially where they place existential restrictions on the value-range of a property. The usage of enumerated datatypes for values of properties is problematic because it creates a closed definition of the value-range, which hinders the reusability of the ontology.

Take the definition of railml3:tSignalSpeedType as an example. It is defined as follows:

###  http://ontology.railml.org/railml3#tSignalSpeedType
:tSignalSpeedType rdf:type rdfs:Datatype ;
                  rdfs:isDefinedBy "https://www.railml.org/schemas/3.2/railml3.xsd" ;
                  rdfs:label "tSignalSpeedType" ;
                  owl:equivalentClass [ rdf:type rdfs:Datatype ;
                                        owl:oneOf [ rdf:type rdf:List ;
                                                    rdf:first "announcement" ;
                                                    rdf:rest [ rdf:type rdf:List ;
                                                               rdf:first "execution" ;
                                                               rdf:rest rdf:nil
                                                             ]
                                                  ]
                                      ] .

There cannot exist a world, according to the ontology, where any property with railml3:tSignalSpeedType as its range, has any other object than "announcement" or "execution". To use enumerated datatypes in this way, we must at a minimum be completely certain that there is not a use or need for any other objects. Usage of enumerated datatypes should be decided on a basis of necessity, e.g. where it adds value in terms of entailment.

While valid, as seen in [1] shared by Larissa, I find the expressivity of enumerated datatypes to be too low. A resource should be sufficiently defined on its own, and not rely on annotations (e.g. descriptions or comments) in other related resources to be understood. The argument for using SKOS is that we are building a thesaurus of these literal values (concepts), so that they can be understood on their own and in relation to other concepts.


[1] https://github.com/siemens/ProductConfigurationWithSHACL/blo b/feea2bfce2786a35dd22f55714999aaa7e369851/docs/topo/topo.tt l#L135
Re: [Ontology v0.6] Missing properties for signals [message #3653 is a reply to message #3592] Wed, 18 June 2025 13:09 Go to previous message
Larissa Zhuchyi is currently offline  Larissa Zhuchyi
Messages: 69
Registered: November 2022
Member
Dear all

on the railML ontology working group meeting 2025-05-28 by voting it was decided to use SKOS concept schemes for modeling enumerated types of XSD in the ontology.

Sincerely,


Larissa Zhuchyi – Ontology Researcher
railML.org (Registry of Associations: VR 5750)
Altplauen 19h; 01187 Dresden; Germany www.railML.org
Previous Topic: [railML3] Dublin Core metadata update in railML 3.3
Goto Forum:
  


Current Time: Sun Jun 22 04:11:23 CEST 2025