blob: d793a5a9f28f7c1e4a15e984254ff7d6995fcd58 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 Robert Bosch GmbH
* Author: Constantin Ziesche (constantin.ziesche@bosch.com)
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
using BaSyx.Models.Core.AssetAdministrationShell.References;
using BaSyx.Models.Core.AssetAdministrationShell.Identification;
using BaSyx.Models.Core.AssetAdministrationShell.Semantics;
using Newtonsoft.Json;
using System.Runtime.Serialization;
using BaSyx.Models.Core.AssetAdministrationShell.Views;
using BaSyx.Models.Core.Common;
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics
{
/// <summary>
/// An AssetAdministration Shell.
/// </summary>
public interface IAssetAdministrationShell : IIdentifiable, IModelElement, IHasDataSpecification
{
/// <summary>
/// The reference to the AAS the AAS was derived from.
/// </summary>
[JsonProperty, DataMember(EmitDefaultValue = false, IsRequired = false, Name = "derivedFrom")]
IReference<IAssetAdministrationShell> DerivedFrom { get; }
/// <summary>
/// The asset the AAS is representing.
/// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "asset")]
IAsset Asset { get; }
/// <summary>
/// The asset of an AAS is typically described by one or more submodels.
/// Temporarily no submodel might be assigned to the AAS
/// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "submodels")]
IElementContainer<ISubmodel> Submodels { get; set; }
/// <summary>
/// If needed stakeholder specific views can be defined on the elements of the AAS.
/// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "views")]
IElementContainer<IView> Views { get; }
/// <summary>
/// An AAS max have one or more concept dictionaries assigned to it.
/// The concept dictionaries typically contain only descriptions for elements that are also used within the AAS (via HasSemantics).
/// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "conceptDictionaries")]
IElementContainer<IConceptDictionary> ConceptDictionaries { get; }
}
}