Coder Social home page Coder Social logo

azure / opendigitaltwins-tools Goto Github PK

View Code? Open in Web Editor NEW
49.0 8.0 34.0 6.01 MB

Tools for Open Digital Twins Definition Language (DTDL) RealEstateCore Ontology

License: MIT License

C# 86.26% Makefile 0.03% Python 1.12% PowerShell 0.35% Bicep 12.24%

opendigitaltwins-tools's Introduction

Tools for Open Digital Twins Definition Language (DTDL) based Ontologies

Motivation and purpose

Azure Digital Twins (ADT), and its underlying Digital Twins Definition Language (DTDL), are at the heart of Smart Facilities solutions built on Azure.

DTDL is the language by which developers can define the language of the entities they expect to use in their topologies. Since DTDL is a blank canvas which can model any entity, it is important to accelerate developers' time to results by providing a common domain-specific ontology to bootstrap solution building, as well as seamless integration between DTDL-based solutions from different vendors.

This is a set of open-source ontology tools which one can use to operate on any ontologies, including the Real Estate Core Ontology

Uploading models to Azure Digital Twins

You can upload an ontology into your own instance of ADT by using UploadModels. Follow the instructions on Upload to upload all of these models into your own instance. Here is an article on how to manage models, update, retrieve, update, decommission and delete models.

Deleting models in bulk

You can also delete models that are previously uploaded to an instance of ADT. For this you can use the DeleteModels tool. Instructions of how this can be run are found here

Visualizing the models

Once you have uploaded these models into your Azure Digital Twins instance, you can view the ontology using Azure Digital Twins Explorer.

Validating the models

The DTDL RealEstateCore models in this repo have already been validated. You don't have to validate them with the DTDL parser unless you change them. If you have extended the models or made changes, it's recommended to validate the models as described by this article: Validate models.

Converting from one ontology / version to another

The OntologyMapper is an assembly that is used to support conversion from one DTDL ontology to another DTDL ontology. More details can be found here

opendigitaltwins-tools's People

Contributors

akshayj-msft avatar alinamstanciu avatar baanders avatar briancr-ms avatar connorjcantrell avatar dependabot[bot] avatar erikoskarwallin avatar hammar avatar jbkoh avatar jjaramillo98 avatar jmayrbaeurl avatar joebeernink avatar katriendg avatar mavoge avatar microsoft-github-operations[bot] avatar microsoftopensource avatar nikoraes avatar ppluijten avatar tyler-angell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opendigitaltwins-tools's Issues

[ModelUploader] Can't upload models with file names not equal to Model name

If model A references another model in its interface definition, e.g. in 'extends' or in schema of a component, than the referenced model file will only be found, if the model name equals the file name.

Working (with model 'dtmi:digitaltwins:GeoSPARQL:SpatialObject;1' defined in file 'SpatialObject.json'

{
    "@id": "dtmi:digitaltwins:GeoSPARQL:Feature;1",
    "@type": "Interface",
    "displayName": "Feature",
    "description": "This class represents the top-level feature type. This class is equivalent to GFI_Feature defined in ISO 19156:2011, and it is superclass of all feature types. GeoSPARQL 1.0 is an OGC Standard.Copyright (c) 2012 Open Geospatial Consortium.",
    "extends": "dtmi:digitaltwins:GeoSPARQL:SpatialObject;1",
    "contents": [
        {
            "@type": "Relationship",
            "name": "hasGeometry",
            "target": "dtmi:digitaltwins:GeoSPARQL:Geometry;1"
        }
    ],
    "@context": "dtmi:dtdl:context;2"
}

Not working (with model 'dtmi:digitaltwins:ngsi_ld:city:Address;1' defined in file 'adress.json'):

{
    "@id": "dtmi:digitaltwins:ngsi_ld:city:NGSILDBaseModel;1",
    "@type": "Interface",
    "displayName": "NGSILDBaseModel",
    "contents": [
        {
            "@type": "Component",
            "name": "address",
            "schema": "dtmi:digitaltwins:ngsi_ld:city:Address;1"
        },
        {
            "@type": "Component",
            "name": "location",
            "schema": "dtmi:digitaltwins:ngsi_ld:city:geoLocation;1"
        }
    ],
    "@context": [
        "dtmi:dtdl:context;2"
    ]
}

This also means that using ModelUploader with models that have the same name but a different namespace doesn't work.

issue with using the OWLTODTDL converter

Hi there,

I am facing an issue trying to execute the command for the OWLTODTLD converter:

I have tried the example command on my Mac through VisualStudio terminal and Mac terminal : p@@@@@@-MBP opendigitaltwins-tools % ./OWL2DTDL -u https://w3id.org/rec/full/3.3/ -i ./RecIgnoredNames.csv -o /Users/pzerva/Desktop/DTDL/
and I get : zsh: permission denied: ./OWL2DTDL

although I seem to have both r and w access to the files/folders of OWL2DTDL.

Also another question is that in the example execution a URI needs to be provided for the ontology model - what if I have some local ontologies files/models I want to convert in DTDL - is it possible to convert those and what commands I can use?

In addition is there a converter from JSON-LD twins and models to DTDL ?

OWL2DTDL doesn't support multiple languages

Multilingual labels or comments are not properly combined in the output DTDL JSON-LD.

The following

<rdfs:Datatype rdf:about="https://data.arcadis.com/test"/>
<owl:DatatypeProperty rdf:about="https://data.arcadis.com/test">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<rdf:Description rdf:about="https://data.arcadis.com/test">
    <rdfs:label xml:lang="en">Test</rdfs:label>
    <rdfs:label xml:lang="nl">Test-NL</rdfs:label>
    <rdfs:label xml:lang="fr">Test-FR</rdfs:label>
    <rdfs:comment xml:lang="en">comment</rdfs:comment>
    <rdfs:comment xml:lang="nl">Comment-NL</rdfs:comment>
    <rdfs:comment xml:lang="fr">Comment-FR</rdfs:comment>
</rdf:Description>

generates the following output DTDL

{
  "@type": "Property",
  "description": {
    "en": "comment"
  },
  "dtmi:dtdl:property:description;2": [
    {
      "@language": "nl",
      "@value": "Comment-NL"
    },
    {
      "@language": "fr",
      "@value": "Comment-FR"
    }
  ],
  "displayName": {
    "en": "Test"
  },
  "dtmi:dtdl:property:displayName;2": [
    {
      "@language": "nl",
      "@value": "Test-NL"
    },
    {
      "@language": "fr",
      "@value": "Test-FR"
    }
  ],
  "name": "test",
  "schema": "string",
  "writable": true
}

Can't run

I have converted the Owl2DTDL to .exe in visual studio but nothing happens when I try to run .exe. Can you include a tutorial? Or provide a link.

ModelUploader: getting AADSTS650057: Invalid resource. The client has requested access...

Hi, I've followed the instructions to the T with two separate subscriptions/accounts. I get the same error upon authenticating:

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration. Client app ID: 7fe23b3c-ecb6-xxxxx-yyyyy-52a41bc5b4bb(mxyxadt). Resource value from request: https://digitaltwins.azure.net. Resource app ID: 0b07f429-9f4b-xxxxx-yyyyy-cc5e8e80c8b0. List of valid resources from app registration: .

{
"tenantId": "c61379a5-e150-yyyy-yyyy-42a208341ecb",
"clientId": "7fe23b3c-ecb6-yyyy-yyyy-52a41bc5b4bb",
"instanceUrl": "https://mxyxadt.api.xxx.digitaltwins.azure.net"
}

Any ideas why?

I don't think it is related, but I am using the new system-assigned identity feature in ADT. Should I not?
"A system-assigned managed identity enables Azure resources to authenticate to cloud services (e.g. Azure Key Vault) without storing credentials in code. Once enabled, all necessary permissions can be granted via Azure role-based-access-control. The lifecycle of this type of managed identity is tied to the lifecycle of this resource.Learn more."

Also, my AAD is not a "premium level" plan.

Thanks!

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.