Charlie
Charlie

Reputation: 2261

OWL/RDF to UML Converter

I'm new to the concept of OWL/RDF ontologies and thinking it would useful to be able to convert them to UML so I could then generate class skeletons using my IDE. Assuming this is a reasonable thing to do, can you please recommend an approach?

I'm aware that there are OWL/RDF parsers like this one, but I can't find any that will convert to UML.

EDIT:

Based on the comments let me modify the question:

When starting a new project based on an existing ontology is there a way to easily create skeleton classes as a starting point? I do not need to synchronize changes between the ontology and the classes - it is a one time setup that I expect will take a significant amount of copy and paste which strikes me as the wrong approach.

If I'm not using ontologies correctly, can you please explain what their purpose is (if any) in designing class hierarchies?

Here's an example of what I want to implement (except this is only 1 sensor and I need to implement several):

http://www.w3.org/2005/Incubator/ssn/XGR-ssn-20110628/#Smart_product_example

Upvotes: 4

Views: 3244

Answers (3)

Wolfgang Fahl
Wolfgang Fahl

Reputation: 15594

To implement https://github.com/WolfgangFahl/pysotsog/issues/21 I created some conversion code see https://github.com/WolfgangFahl/pysotsog/blob/main/skg/dblp.py. It is currently for the dblp schema at: https://dblp.org/rdf/schema and a conversion example is at: plantum online dblp schema

/'
 Wolfgang Fahl 2022-11-19
 updated 2022-11-19
  
 dblp schema https://dblp.org/rdf/schema
 converted from owl to plantuml
'/
title  dblp schema https://dblp.org/rdf/schema converted from owl to plantuml updated 2022-11-19
hide circle
package foaf {
  class Document {
  }
}
package dblp {
   note top of AmbiguousCreator
  Ambiguous Creator
  Not an actual creator, but an ambiguous proxy for an unknown number of unrelated actual creators. Associated publications do not have their true creators determined yet.
  end note
  class AmbiguousCreator{

  }
  AmbiguousCreator--Creator:possibleActualCreator
  Creator <|-- AmbiguousCreator
  note top of Informal
  Informal
  An informal or other publication.
  end note
  class Informal{

  }
  Publication <|-- Informal
  note top of Creator
  Creator
  A creator of a publication.
  end note
  class Creator{
    primaryCreatorName:string
    homepage:Document
    creatorNote:string
    orcid:anyUri
    creatorName:string
    affiliation:string
    awardWebpage:Document
    primaryAffiliation:string
    primaryHomepage:Document

  }
  Creator--Publication:editorOf
  Creator--AmbiguousCreator:proxyAmbiguousCreator
  Creator--Creator:coCreatorWith
  Creator--Creator:homonymousCreator
  Creator--Publication:authorOf
  Creator--Creator:coEditorWith
  Creator--Publication:creatorOf
  Creator--Creator:coAuthorWith
  Entity <|-- Creator
  note top of Publication
  Publication
  A publication.
  end note
  class Publication{
    primarydocumentPage:Document
    listedOnTocPage:Document
    yearOfEvent:gYear
    publishedBy:string
    isbn:anyUri
    publishersAddress:string
    publicationNote:string
    title:string
    bibtexType:Entry
    publishedInBookChapter:string
    doi:anyUri
    documentPage:Document
    numberOfCreators:integer
    publishedInSeries:string
    publishedInSeriesVolume:string
    publishedIn:string
    pagination:string
    yearOfPublication:gYear
    monthOfPublication:string
    publishedInJournalVolumeIssue:string
    publishedInJournal:string
    thesisAcceptedBySchool:string
    publishedInJournalVolume:string
    publishedInBook:string

  }
  Publication--Creator:createdBy
  Publication--Creator:authoredBy
  Publication--Creator:editedBy
  Publication--Signature:hasSignature
  Publication--Publication:publishedAsPartOf
  Entity <|-- Publication
  note top of Data
  Data
  Research data or artifacts.
  end note
  class Data{

  }
  Publication <|-- Data
  note top of Person
  Person
  An actual person, who is a creator of a publication.
  end note
  class Person{

  }
  Creator <|-- Person
  note top of AuthorSignature
  Author Signaure
  The information that links a publication to an author.
  end note
  class AuthorSignature{

  }
  Signature <|-- AuthorSignature
  note top of Inproceedings
  Inproceedings
  A conference or workshop paper.
  end note
  class Inproceedings{

  }
  Publication <|-- Inproceedings
  note top of Withdrawn
  Withdrawn
  A withdrawn publication item.
  end note
  class Withdrawn{

  }
  Publication <|-- Withdrawn
  note top of EditorSignature
  Editor Signaure
  The information that links a publication to an editor.
  end note
  class EditorSignature{

  }
  Signature <|-- EditorSignature
  note top of Editorship
  Editorship
  An edited publication.
  end note
  class Editorship{

  }
  Publication <|-- Editorship
  note top of Incollection
  Incollection
  A part/chapter in a book or a collection.
  end note
  class Incollection{

  }
  Publication <|-- Incollection
  note top of Reference
  Reference
  A reference work entry.
  end note
  class Reference{

  }
  Publication <|-- Reference
  note top of Group
  Group
  A creator alias used by a group or consortium of persons.
  end note
  class Group{

  }
  Creator <|-- Group
  note top of Signature
  Signature
  The information that links a publication to a creator.
  end note
  class Signature{
    signatureOrcid:anyUri
    signatureDblpName:string
    signatureOrdinal:integer

  }
  Signature--Creator:signatureCreator
  Signature--Publication:signaturePublication
  note top of Book
  Book
  A book or a thesis.
  end note
  class Book{

  }
  Publication <|-- Book
  note top of Entity
  Entity
  A general, identifiable entity in dblp.
  end note
  class Entity{
    identifier:anyUri
    wikipedia:Document
    archivedWebpage:Document
    wikidata:anyUri
    webpage:Document

  }
  Thing <|-- Entity
  note top of Article
  Article
  A journal article.
  end note
  class Article{

  }
  Publication <|-- Article
}

Just create an issue following the links in http://sotsog.bitplan.com if you'd like to get an online version.

have a more generic version as of 2023-01-08

Upvotes: 1

Vladimir Vaschenko
Vladimir Vaschenko

Reputation: 576

Check for UML to OWL converter. It converts UML to RDF/OWL, so it does job in opposite direction, but it can be used as a template for your task. The converter is based on MDA approach, so requires knowledge of it (MOF, ODM, Eclipse EMF, ATL), which is worth to have.

Upvotes: 0

Charlie
Charlie

Reputation: 2261

My understanding is that the concept of the "semantic web" is still largely in the visionary stage and will not impact developers for some time. The initial applications seem to be centered around knowledge sharing between humans not machines. Hopefully it moves toward machine-to-machine sharing as there doesn't appear to be any interest in that at this time.

Upvotes: -4

Related Questions