Company.org

Moving Company to Linked Data

Eccenca trial project by Mikel Egaña Aranguren

Problem setting

Company

Departments

Products

Services

Staff

Data sources

CSV

XLSX

XML

Domain

  1. Create ontology
  2. Review ontology
  3. Map Data Sources to RDF
  4. Business questions

Tasks

  1. Create ontology
  2. Review ontology
  3. Map Data Sources to RDF
  4. Business questions

Method

Method

Release tag

Documentation (Markdown), code and data into version control

Create ontology

Tools

Protégé 5.2 for ontology editing

Result

Problems

  • Not happy with the resulting ontology (Refactor equivalent axioms to avoid domain/range coercion)
  • Modelling alternatives (e.g. expert types as subclasses of Staff)
  • Complex datatypes
  • LODE visualisation

Review ontology

Result

"an entity of Company cannot be, at the same time, a Service and a Department"

Map sources to RDF

Tools

Result

Result

Result

Problems

  • FAIRifier could not digest XML file properly: spend too much time writing a hacky Java converter
  • Did not add metadata (DCAT, VoID, PROV)
  • Did not add SHACL validation mechanism through RDF4J/CI

Business questions

Result

All the products that weight in the range 10-15, ordered by price (cheapest first)

SELECT ?name ?weigth ?eur
WHERE {
    ?product company_def:weigth ?weigth .
    ?product company_def:name ?name .
    ?product company_def:priceEUR ?eur
    FILTER (?weigth > "10"^^xsd:positiveInteger  && ?weigth < "15"^^xsd:positiveInteger)
}
ORDER BY (?eur)

Result

What products is Wolfgang Martin responsible for?

SELECT ?product
WHERE {
    ?product a company_def:Product .
    company_id:wolfgang-martin company_def:responsibleFor ?product .
}

Result

Find departments that do not offer services

SELECT ?department ?name
WHERE {
    ?department a company_def:Department .
    ?department company_def:name ?name .
    OPTIONAL {
        ?department company_def:offersService ?service .
    }
    FILTER (!bound(?service))
}

Result

Corinna Ludwig is ill and we need someone to give a seminar on Phase Memristor Capacitors. Who else has the necessary expertise?

SELECT ?product ?expertise ?expert ?name
WHERE {
    ?product company_def:name "Phase Memristor Capacitor" .
    ?product company_def:requiresExpertise ?expertise .
    ?expert company_def:expertIn ?expertise .
    ?expert company_def:name ?name
    FILTER (?name != "Corinna Ludwig")
}

Conclusion

Benefits

  • Valuable assets integrated into a single Knowledge Graph
  • Universal identification of assets through persistent URIs
  • New analysis possibilities
  • Flexible framework for integrating new sources, internal or external (e.g. schema annotated products)

Eccenca

By mikel-egana-aranguren