Code Monkey home page Code Monkey logo

era-vocabulary's Introduction

era-vocabulary

Vocabulary definition for the European Union Agency for Railways. The vocabulary documentation is built using the Widoco toolset.

Online documentation for this vocabulary is available at https://data-interop.era.europa.eu/era-vocabulary/

Run WITH Docker

This application has been dockerized to facilitate its deployment. We use a multi-stage approach to build a container that publishes a build of this Web application via a NGINX instance.

To deploy this container follow these steps:

  1. Make sure to have a recent version of Docker installed.

  2. Build the Docker image:

    docker build -t era-vocabulary ./
  3. Start the application:

    docker run -p ${PORT}:80 era-vocabulary

    Replace ${PORT} for the TCP port where you want to run the application. Once the container is running you can access these resources:

    • The vocabulary documentation at http://localhost:${PORT}/era-vocabulary/index-en.html.
    • The reference data at http://localhost:${PORT}/era-vocabulary/era-skos.

Deploy WITHOUT Docker

To directly build this application you need to install first:

Then follow the next steps:

  1. Clone this repository:

    git clone https://github.com/julianrojas87/era-vocabulary.git
  2. Normally the latest built version of the Widoco documentation is already available within the repository in the public folder. If you want to deploy this version then skip to step 4, otherwise proceed to delete all the files and folders in public/:

    cd public
    rm -rf *

    Now continue to the next step.

  3. Generate the Widoco documentation:

    ./generate-docs.sh

    The resulting sources will be placed in the public/doc folder.

  4. Publish the Web page. In this example we use Node.js's npx utility and http-server for this, but you may choose to publish the static files otherwise (e.g. directly via NGINX).

    cd public/doc
    npx http-server --cors -p ${PORT}

    Replace ${PORT} for the TCP port where you want to run the application. Once the application is running you may access the following resources:

    • The vocabulary documentation at http://localhost:${PORT}/index-en.html.
    • The reference data at http://localhost:${PORT}/era-skos.ttl.

See also

  1. Data mappings for generating the ERA Knowledge Graph, defined using the RML mapping language.
  2. SPARQL query interface for the ERA Knowledge Graph.
  3. TPF query interface for the ERA Knowledge Graph, based on the Linked Data Fragments approach and powered by Comunica.

Issues

We welcome issues and enhancement requests that follow these guidelines:

  1. Issues opened in this repository should concern the ERA vocabulary definitions. For issues related to the ERA Knowledge Graph, please refer to the data mappings repository.
  2. Please label your issues using the corresponding version tag. For example, using the label v0.9.0.

Contributing

For contributions we follow the "fork-and-pull" Git workflow:

  1. Fork this repository on GitHub.
  2. Clone the project in your local machine.
  3. Commit the changes to your own branch.
  4. Push your changes back up to your own fork.
  5. Submit a Pull request to the dev branch so we can review your changes.

NOTE: Make sure to merge the latest "upstream" version before submitting a pull request.

era-vocabulary's People

Contributors

julianrojas87 avatar pietercolpaert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

era-vocabulary's Issues

Consider removing rdfs:Class declarations for all era: classes

Consider removing
?class a rdfs:Class

in all cases where ?class a owl:Class

because owl:Class rdfs:subClassOf rdfs:Class

unless there is some specific reason to assert such inferences but if that's the case, it should be done for all classes for consistency.

Currently, the following classes are owl:Class, rdfs:Class

  • era:InternalNodeLink
  • era:MicroLink
  • era:MicroNode
  • era:NodePort
  • era:OperationalPoint
  • era:Track
  • era:Tunnel
  • era:VehicleType

Each controlled vocabulary should be in a separate file (not for the pilot phase)

When the development, maintenance and publishing responsibility for all reference datasets is done by one person/team, it is acceptable to keep them all in one file for convenience. But once proper governance is established, they should be split.

In other words, during the pilot phase is fine to keep them like that, but this should be changed right after.

Consider changing the label of era:category

Since the domain of the ontology is larger than train vehicles, "category" is ambiguous. The URI may remain but consider changing the label to "vehicle category", after consulting with ERA.

Same of subCategory.

Merge the object properties "Other" with the equivalent ones from the taxonomies.

For example: era:otherEnergySupplySystem with era:energySupplySystem

Similarly for:
era:otherAxleBearingConditionMonitoring
era:otherRailInclination
era:otherWheelSetGaugeChangeoverFacility
era:otherSnowIceHailConditions
era:otherPantographHead
era:otherContactStripMaterial
era:otherPlatformHeight
era:otherProtectionLegacySystem
era:otherLegacyRadioSystem

in #v0.9.0

Intended meaning of era:inCountry

Currently IRI: http://era.europa.eu/ns#inCountry is defined with the intended use

Indicates the country in which the entity resides.

    rdfs:label "in country"@en ;
    rdfs:comment "Indicates the country in which the entity resides."@en ;
    rdfs:isDefinedBy era: ;
    rdfs:domain [ a owl:Class ;
                  owl:unionOf ( era:OperationalPoint era:VehicleType )
                ] ;
    rdfs:range skos:Concept ;
    dct:created "2020-09-01"^^xsd:date ;
    dct:modified "2020-09-01"^^xsd:date ;
    vs:term_status "stable" .

It has domain owl:unionOf ( era:OperationalPoint era:VehicleType . OP have location rather than residence. For VT the issue the intended use is ambiguous: "manufactured in", "spend most of it's lifecycle in", "has manufacturer with coutry of residence" etc.

Possible solutions: changing the comment, creating a sub-property, changing the domain (OP or Manufacturer).

The domain of era:inCountry is unnecessarily restrictive

Currently the domain of era:inCountry is the union of VT and OP.

However, the actual use is broader.

1 | era:OperationalPoint
2 | geosparql:Feature
3 | wgs:SpatialThing
4 | era:VehicleType

Apart from that to allow for a higher interoperability and re-use, the era ontology should "learn" but not be coupled with the current dataset.
Suggestion: remove domain declaration and for orientation list in the note the typical expected domain classes, based on the current data set.

Fixes to SKOS modeling

  1. These are wrong
era-op-types:OperationalPointType
skos:inScheme era-skos:  .
era-skos: a skos:ConceptScheme

because a ConceptScheme is a single thesaurus and consists of Concepts, not of subclasses of Concept .

It's better to declare

era-op-types:OperationalPointType
rdfa:isDefinedBy era-skos:  .
era-skos: a owl:Ontology
  1. each Concept must belong to a ConceptScheme. So in addition to this
era-op-types:borderPoint a era-op-types:OperationalPointType

You better add this

era-op-types:borderPoint skos:inScheme era-op-types:OperationalPointType.
era-op-types:OperationalPointType a skos:ConceptScheme.

I don't think it's a bug problem that era-op-types:OperationalPointType wull become both an individual ( skos:ConceptScheme) and a Class. OWL Punning allows that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.