Search code examples
umlrdfowl

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


Solution

  • 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