Merge changes Icf6714b5,Iabdcc436,I896d5bb7
* changes:
Optimizes property access
Optimizes submodel retrieval from connected AAS
Fixes wrong retrieval of submodel descriptors
diff --git a/sdks/dotnet/basyx-components/BaSyx.AAS.Client.Http/AssetAdministrationShellHttpClient.cs b/sdks/dotnet/basyx-components/BaSyx.AAS.Client.Http/AssetAdministrationShellHttpClient.cs
index 02f73a0..c0494d3 100644
--- a/sdks/dotnet/basyx-components/BaSyx.AAS.Client.Http/AssetAdministrationShellHttpClient.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.AAS.Client.Http/AssetAdministrationShellHttpClient.cs
@@ -21,11 +21,18 @@
using BaSyx.Models.Core.Common;
using BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes;
using BaSyx.Models.Connectivity.Descriptors;
+using System.Threading.Tasks;
+using System.Linq;
+using BaSyx.Models.Connectivity;
+using NLog;
+using System.Threading;
namespace BaSyx.AAS.Client.Http
{
public class AssetAdministrationShellHttpClient : SimpleHttpClient, IAssetAdministrationShellClient, ISubmodelServiceProviderRegistry
{
+ private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
+
private const string AAS = "aas";
private const string SUBMODELS = "submodels";
private const string SUBMODEL = "submodel";
@@ -38,16 +45,33 @@
private const string BINDINGS = "bindings";
private const string SEPERATOR = "/";
- private const int TIMEOUT = 30000;
+ private const int REQUEST_TIMEOUT = 30000;
public Uri Endpoint { get; }
- public AssetAdministrationShellHttpClient(Uri endpoint)
+ private AssetAdministrationShellHttpClient()
{
- Endpoint = endpoint;
JsonSerializerSettings = new JsonStandardSettings();
}
+ public AssetAdministrationShellHttpClient(Uri endpoint) : this()
+ {
+ endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
+ Endpoint = endpoint;
+ }
+
+ public AssetAdministrationShellHttpClient(IAssetAdministrationShellDescriptor aasDescriptor)
+ {
+ aasDescriptor = aasDescriptor ?? throw new ArgumentNullException(nameof(aasDescriptor));
+ HttpEndpoint httpEndpoint = aasDescriptor.Endpoints?.OfType<HttpEndpoint>()?.FirstOrDefault();
+ if (httpEndpoint == null || string.IsNullOrEmpty(httpEndpoint.Address))
+ throw new Exception("There is no http endpoint for instantiating a client");
+ else
+ Endpoint = new Uri(httpEndpoint.Address);
+ }
+
+
+
public Uri GetUri(params string[] pathElements)
{
if (pathElements == null)
@@ -58,179 +82,196 @@
public IResult<IAssetAdministrationShellDescriptor> RetrieveAssetAdministrationShellDescriptor()
{
var request = base.CreateRequest(GetUri(), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IAssetAdministrationShellDescriptor>(response, response.Entity);
}
public IResult<IAssetAdministrationShell> RetrieveAssetAdministrationShell()
{
var request = base.CreateRequest(GetUri(), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IAssetAdministrationShell>(response, response.Entity);
}
public IResult<ISubmodel> CreateSubmodel(ISubmodel submodel)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS), HttpMethod.Post, submodel);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ISubmodel>(response, response.Entity);
}
public IResult<IElementContainer<ISubmodel>> RetrieveSubmodels()
{
var request = base.CreateRequest(GetUri(SUBMODELS), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ElementContainer<ISubmodel>>(response, response.Entity);
}
public IResult<ISubmodel> RetrieveSubmodel(string submodelId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ISubmodel>(response, response.Entity);
}
public IResult DeleteSubmodel(string submodelId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId), HttpMethod.Delete);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
public IResult<IOperation> CreateOperation(string submodelId, IOperation operation)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS), HttpMethod.Post, operation);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IOperation>(response, response.Entity);
}
public IResult<IElementContainer<IOperation>> RetrieveOperations(string submodelId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ElementContainer<IOperation>>(response, response.Entity);
}
public IResult<IOperation> RetrieveOperation(string submodelId, string operationId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS, operationId), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IOperation>(response, response.Entity);
}
public IResult DeleteOperation(string submodelId, string operationId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS, operationId), HttpMethod.Delete);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
- public IResult InvokeOperation(string submodelId, string operationId, IElementContainer<ISubmodelElement> inputArguments, IElementContainer<ISubmodelElement> outputArguments, int timeout)
+ public IResult InvokeOperation(string submodelId, string operationId, IOperationVariableSet inputArguments, IOperationVariableSet outputArguments, int timeout = -1)
{
- var uri = GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS, operationId);
- var requestUri = new Uri(uri.OriginalString + "?timeout=" + timeout);
+ Uri uri = GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS, operationId);
+ Uri requestUri = uri;
+ if(timeout != -1)
+ requestUri = new Uri(uri.OriginalString + "?timeout=" + timeout);
+
var request = base.CreateJsonContentRequest(requestUri, HttpMethod.Post, inputArguments);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
var evaluatedResponse = base.EvaluateResponse(response, response.Entity);
- outputArguments = evaluatedResponse.GetEntity<IElementContainer<ISubmodelElement>>();
+ outputArguments = evaluatedResponse.GetEntity<IOperationVariableSet>();
+ return evaluatedResponse;
+ }
+
+ public async Task<IResult> InvokeOperationAsync(string submodelId, string operationId, IOperationVariableSet inputArguments, IOperationVariableSet outputArguments, int timeout = Timeout.Infinite)
+ {
+ Uri uri = GetUri(SUBMODELS, submodelId, SUBMODEL, OPERATIONS, operationId);
+ Uri requestUri = uri;
+ if (timeout != Timeout.Infinite)
+ requestUri = new Uri(uri.OriginalString + "?timeout=" + timeout);
+
+ var request = base.CreateJsonContentRequest(requestUri, HttpMethod.Post, inputArguments);
+ var response = await base.SendRequestAsync(request);
+ var evaluatedResponse = base.EvaluateResponse(response, response.Entity);
+ outputArguments = evaluatedResponse.GetEntity<IOperationVariableSet>();
return evaluatedResponse;
}
public IResult<IProperty> CreateProperty(string submodelId, IProperty property)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES), HttpMethod.Post, property);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IProperty>(response, response.Entity);
}
public IResult<IElementContainer<IProperty>> RetrieveProperties(string submodelId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ElementContainer<IProperty>>(response, response.Entity);
}
public IResult<IProperty> RetrieveProperty(string submodelId, string propertyId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES, propertyId), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IProperty>(response, response.Entity);
}
public IResult UpdatePropertyValue(string submodelId, string propertyId, IValue value)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES, propertyId, VALUE), HttpMethod.Put, value);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
public IResult<IValue> RetrievePropertyValue(string submodelId, string propertyId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES, propertyId, VALUE), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IValue>(response, response.Entity);
}
public IResult DeleteProperty(string submodelId, string propertyId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, PROPERTIES, propertyId), HttpMethod.Delete);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
public IResult<IEvent> CreateEvent(string submodelId, IEvent eventable)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, EVENTS), HttpMethod.Post, eventable);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IEvent>(response, response.Entity);
}
public IResult<IElementContainer<IEvent>> RetrieveEvents(string submodelId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, EVENTS), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ElementContainer<IEvent>>(response, response.Entity);
}
public IResult<IEvent> RetrieveEvent(string submodelId, string eventId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, EVENTS, eventId), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IEvent>(response, response.Entity);
}
public IResult DeleteEvent(string submodelId, string eventId)
{
var request = base.CreateRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, EVENTS, eventId), HttpMethod.Delete);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
public IResult<ISubmodelDescriptor> RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider)
{
var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, id, BINDING), HttpMethod.Post, submodelServiceProvider.ServiceDescriptor);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ISubmodelDescriptor>(response, response.Entity);
}
public IResult UnregisterSubmodelServiceProvider(string id)
{
var request = base.CreateRequest(GetUri(SUBMODELS, id, BINDING), HttpMethod.Delete);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse(response, response.Entity);
}
public IResult<ISubmodelServiceProvider> GetSubmodelServiceProvider(string id)
{
var request = base.CreateRequest(GetUri(SUBMODELS, id, BINDING), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<ISubmodelServiceProvider>(response, response.Entity);
}
public IResult<IEnumerable<ISubmodelServiceProvider>> GetSubmodelServiceProviders()
{
var request = base.CreateRequest(GetUri(SUBMODELS, BINDINGS), HttpMethod.Get);
- var response = base.SendRequest(request, TIMEOUT);
+ var response = base.SendRequest(request, REQUEST_TIMEOUT);
return base.EvaluateResponse<IEnumerable<ISubmodelServiceProvider>>(response, response.Entity);
}
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.API/Clients/ISubmodelClient.cs b/sdks/dotnet/basyx-core/BaSyx.API/Clients/ISubmodelClient.cs
index abe559f..2d3d8db 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API/Clients/ISubmodelClient.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API/Clients/ISubmodelClient.cs
@@ -42,7 +42,7 @@
IResult DeleteOperation(string operationId);
- IResult InvokeOperation(string operationId, IOperationVariableSet inputArguments, IOperationVariableSet outputArguments, int timeout);
+ IResult InvokeOperation(string operationId, IOperationVariableSet inputArguments, IOperationVariableSet outputArguments, int timeout);
#endregion
#region Property - CRUD-Operations
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IFormula.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IFormula.cs
index bb09d00..b879110 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IFormula.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IFormula.cs
@@ -14,8 +14,15 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Constraints
{
+ /// <summary>
+ /// A formula is used to describe constraints by a logical expression.
+ /// </summary>
public interface IFormula : IConstraint
{
+ /// <summary>
+ /// A formula may depend on referable or even external global elements that are used in the logical expression.
+ ///The value of the referenced elements needs to be accessible so that it can be evaluated in the formula to true or false in the corresponding logical expression it is used in.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "dependsOn")]
List<IReference> DependsOn { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifiable.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifiable.cs
index a0a975c..9e9b670 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifiable.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifiable.cs
@@ -13,8 +13,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Constraints
{
+ /// <summary>
+ /// The value of a qualifiable element may be further qualified by one or more qualifiers or complex formulas.
+ /// </summary>
public interface IQualifiable
{
+ /// <summary>
+ /// A constraint is used to further qualify an element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "qualifiers")]
List<IConstraint> Constraints { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifier.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifier.cs
index 155edd7..42a0d3f 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifier.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Constraints/IQualifier.cs
@@ -14,12 +14,26 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Constraints
{
+ /// <summary>
+ /// A qualifier is a type-value-pair that makes additional statements w.r.t. the value of the element.
+ /// </summary>
public interface IQualifier : IConstraint, IHasSemantics
{
+ /// <summary>
+ /// The qualifier type describes the type of the qualifier that is applied to the element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "type")]
string Type { get; }
+
+ /// <summary>
+ /// The qualifier value is the value of the qualifier.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
object Value { get; }
+
+ /// <summary>
+ /// Reference to the global unqiue id of a coded value.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
IReference ValueId { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAsset.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAsset.cs
index 496b193..ccd27b4 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAsset.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAsset.cs
@@ -17,14 +17,27 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics
{
+ /// <summary>
+ ///An Asset describes meta data of an asset that is represented by an AAS. The asset may either represent an asset type or an asset instance.
+ ///The asset has a globally unique identifier plus if needed additional domain specific(proprietary) identifiers
+ /// </summary>
public interface IAsset : IIdentifiable, IModelElement, IHasDataSpecification
{
+ /// <summary>
+ /// A reference to a Submodel that defines the handling of additional domain specific (proprietary) Identifiers for the asset like e.g. serial number etc.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "assetIdentificationModel")]
IReference<ISubmodel> AssetIdentificationModel { get; }
+ /// <summary>
+ /// Bill of material of the asset represented by a submodel of the same AAS. This submodel contains a set of entities describing the material used to compose the composite I4.0 Component.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "billOfMaterial")]
IReference<ISubmodel> BillOfMaterial { get; }
+ /// <summary>
+ /// Denotes whether the Asset of of kind Type or Instance.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "kind")]
AssetKind Kind { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAssetAdministrationShell.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAssetAdministrationShell.cs
index 07e7a49..d793a5a 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAssetAdministrationShell.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IAssetAdministrationShell.cs
@@ -19,20 +19,40 @@
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; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IOperationVariable.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IOperationVariable.cs
index c146af5..d4137a8 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IOperationVariable.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/IOperationVariable.cs
@@ -13,8 +13,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics
{
+ /// <summary>
+ /// An operation variable is a submodel element that is used as input or output variable of an operation.
+ /// </summary>
public interface IOperationVariable : IModelElement
{
+ /// <summary>
+ /// Describes the needed argument for an operation via a submodel element of kind=Template.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
ISubmodelElement Value { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/ISubmodel.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/ISubmodel.cs
index 5387693..43fe92c 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/ISubmodel.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/ISubmodel.cs
@@ -18,6 +18,11 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics
{
+ /// <summary>
+ /// A submodel defines a specific aspect of the asset represented by the AAS.
+ /// A submodel is used to structure the digital representation and technical functionality of an Administration Shell into distinguishable parts. Each submodel refers to a well-defined domain or subject matter.
+ /// Submodels can become standardized and thus become submodels types. Submodels can have different life-cycles
+ /// </summary>
public interface ISubmodel : IIdentifiable, IHasKind, IHasSemantics, IModelElement, IHasDataSpecification, IQualifiable
{
[IgnoreDataMember]
@@ -29,6 +34,9 @@
[IgnoreDataMember]
IEnumerable<IEvent> Events { get; }
+ /// <summary>
+ /// A submodel consists of zero or more submodel elements.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "submodelElements")]
IElementContainer<ISubmodelElement> SubmodelElements { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IAnnotatedRelationshipElement.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IAnnotatedRelationshipElement.cs
index 98b800c..8df429d 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IAnnotatedRelationshipElement.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IAnnotatedRelationshipElement.cs
@@ -13,8 +13,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// An annotated relationship element is a relationship element that can be annotated with additional data elements.
+ /// </summary>
public interface IAnnotatedRelationshipElement : IRelationshipElement
{
+ /// <summary>
+ /// Annotations that hold for the relationships between the two elements.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "annotation")]
IReference<ISubmodelElement> Annotation { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBasicEvent.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBasicEvent.cs
index a43e024..a7d148b 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBasicEvent.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBasicEvent.cs
@@ -14,8 +14,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A basic event
+ /// </summary>
public interface IBasicEvent : IEvent
{
+ /// <summary>
+ /// Reference to the data or other elements that are being observed.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "observed")]
IReference<IReferable> Observed { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBlob.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBlob.cs
index 1999a79..f5df1ba 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBlob.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IBlob.cs
@@ -13,10 +13,22 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A BLOB is a data element that represents a file that is contained with its source code in the value attribute.
+ /// </summary>
public interface IBlob : ISubmodelElement
{
+ /// <summary>
+ /// Mime type of the content of the BLOB.
+ /// The mime type states which file extension the file has. e.g. application/json, application/xls, image/jpg
+ /// The allowed values are defined as in RFC2046.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "mimeType")]
string MimeType { get; }
+
+ /// <summary>
+ /// The value of the BLOB instance of a blob data element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
byte[] Value { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IEntity.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IEntity.cs
index 2549c19..a88d592 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IEntity.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IEntity.cs
@@ -14,15 +14,33 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// An entity is a submodel element that is used to model entities.
+ /// </summary>
public interface IEntity : ISubmodelElement
{
+ /// <summary>
+ /// Describes statements applicable to the entity by a set of submodel elements, typically with a qualified value.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "statements")]
IElementContainer<ISubmodelElement> Statements { get; }
+
+ /// <summary>
+ /// Describes whether the entity is a comanaged entity or a self-managed entity.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "entityType")]
EntityType EntityType { get; }
+
+ /// <summary>
+ /// Reference to the asset the entity is representing.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "asset")]
IReference<IAsset> Asset { get; }
}
+
+ /// <summary>
+ /// Enumeration for denoting whether an entity is a self-managed entity or a comanaged entity.
+ /// </summary>
[DataContract]
public enum EntityType
{
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IFile.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IFile.cs
index bc34944..4207d9c 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IFile.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IFile.cs
@@ -12,10 +12,20 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A File is a data element that represents an address to a file. The value is an URI that can represent an absolute or relative path.
+ /// </summary>
public interface IFile : ISubmodelElement
{
+ /// <summary>
+ /// Mime type of the content of the file.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "mimeType")]
string MimeType { get; }
+
+ /// <summary>
+ /// Path and name of the referenced file (with file extension). The path can be absolute or relative
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
string Value { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IMultiLanguageProperty.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IMultiLanguageProperty.cs
index af699f7..f55e302 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IMultiLanguageProperty.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IMultiLanguageProperty.cs
@@ -14,10 +14,20 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A property is a data element that has a multi language value.
+ /// </summary>
public interface IMultiLanguageProperty : ISubmodelElement
{
+ /// <summary>
+ /// The value of the property instance.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
LangStringSet Value { get; }
+
+ /// <summary>
+ /// Reference to the global unqiue id of a coded value.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
IReference ValueId { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IOperation.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IOperation.cs
index ccb6f98..a0e6052 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IOperation.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IOperation.cs
@@ -16,12 +16,26 @@
{
public delegate OperationResult MethodCalledHandler(IOperation operation, IOperationVariableSet inputArguments, IOperationVariableSet outputArguments);
+ /// <summary>
+ /// An operation is a submodel element with input and output variables.
+ /// </summary>
public interface IOperation : ISubmodelElement
{
+ /// <summary>
+ /// Input parameter of the operation.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "inputVariables")]
IOperationVariableSet InputVariables { get; set; }
+
+ /// <summary>
+ /// Output parameter of the operation.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "outputVariables")]
IOperationVariableSet OutputVariables { get; set; }
+
+ /// <summary>
+ /// Parameter that is input and output of the operation.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "inoutputVariables")]
IOperationVariableSet InOutputVariables { get; set; }
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IProperty.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IProperty.cs
index 44c9557..4823e92 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IProperty.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IProperty.cs
@@ -20,6 +20,9 @@
public delegate TValue GetPropertyValueHandler<TValue>(IProperty property);
public delegate void SetPropertyValueHandler<TValue>(IProperty property, TValue value);
+ /// <summary>
+ /// A property is a data element that has a single value.
+ /// </summary>
public interface IProperty : ISubmodelElement, IValue
{
[IgnoreDataMember]
@@ -27,6 +30,9 @@
[IgnoreDataMember]
SetPropertyValueHandler Set { get; }
+ /// <summary>
+ /// Reference to the global unqiue id of a coded value.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
IReference ValueId { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRange.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRange.cs
index 6238522..4027727 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRange.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRange.cs
@@ -13,13 +13,26 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A range data element is a data element that defines a range with min and max
+ /// </summary>
public interface IRange : ISubmodelElement
{
+ /// <summary>
+ /// The minimum value of the range. If the min value is missing then the value is assumed to be negative infinite.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "min")]
IValue Min { get; }
+
+ /// <summary>
+ /// The maximum value of the range. If the max value is missing then the value is assumed to be positive infinite.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "max")]
IValue Max { get; }
+ /// <summary>
+ /// Data type of the min und max.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueType")]
DataType ValueType { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IReferenceElement.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IReferenceElement.cs
index 56977f0..7c1fc5e 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IReferenceElement.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IReferenceElement.cs
@@ -15,8 +15,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A reference element is a data element that defines a logical reference to another element within the same or another AAS or a reference to an external object or entity.
+ /// </summary>
public interface IReferenceElement : ISubmodelElement
{
+ /// <summary>
+ /// Reference to any other referable element of the same of any other AAS or a reference to an external object or entity.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
IReference Value { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRelationshipElement.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRelationshipElement.cs
index db12673..15e4af7 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRelationshipElement.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/IRelationshipElement.cs
@@ -14,10 +14,20 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A relationship element is used to define a relationship between two referable elements.
+ /// </summary>
public interface IRelationshipElement : ISubmodelElement
{
+ /// <summary>
+ /// First element in the relationship taking the role of the subject.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "first")]
IReference<IReferable> First { get; }
+
+ /// <summary>
+ /// Second element in the relationship taking the role of the object.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "second")]
IReference<IReferable> Second { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/ISubmodelElementCollection.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/ISubmodelElementCollection.cs
index 8dab744..5300626 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/ISubmodelElementCollection.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Generics/SubmodelElementTypes/ISubmodelElementCollection.cs
@@ -13,11 +13,20 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes
{
+ /// <summary>
+ /// A submodel element collection is a set or list of submodel elements.
+ /// </summary>
public interface ISubmodelElementCollection : ISubmodelElement
{
+ /// <summary>
+ /// If allowDuplicates=true then it is allowed that the collection contains the same element several times. Default = false
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "allowDuplicates")]
bool AllowDuplicates { get; set; }
+ /// <summary>
+ /// If ordered=false then the elements in the property collection are not ordered. If ordered=true then the elements in the collection are ordered.Default = false
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "ordered")]
bool Ordered { get; set; }
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/AdministrativeInformation.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/AdministrativeInformation.cs
index ae2ab4e..6589ad6 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/AdministrativeInformation.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/AdministrativeInformation.cs
@@ -13,13 +13,22 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Identification
{
+ /// <summary>
+ /// Administrative metainformation for an element like version information.
+ /// </summary>
[DataContract]
public class AdministrativeInformation
{
+ /// <summary>
+ /// Version of the element.
+ /// </summary>
[DataMember(Name = "version")]
[XmlElement("version")]
public string Version { get; set; }
+ /// <summary>
+ /// Revision of the element.
+ /// </summary>
[DataMember(Name = "revision")]
[XmlElement("revision")]
public string Revision { get; set; }
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IHasKind.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IHasKind.cs
index 406ddce..4525743 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IHasKind.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IHasKind.cs
@@ -13,9 +13,15 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Identification
{
+ /// <summary>
+ /// An element with a kind is an element that can either represent a template (type) or an instance. Default for an element is that it is representing an instance
+ /// </summary>
public interface IHasKind
{
+ /// <summary>
+ ///Kind of the element: either type or instance (Default Value = Instance )
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "kind")]
- ModelingKind Kind { get; }
+ ModelingKind Kind { get; }
}
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IIdentifiable.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IIdentifiable.cs
index b2003e0..3432f38 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IIdentifiable.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IIdentifiable.cs
@@ -13,10 +13,20 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Identification
{
+ /// <summary>
+ /// An element that has a globally unique identifier.
+ /// </summary>
public interface IIdentifiable : IReferable
{
+ /// <summary>
+ /// The globally unique identification of the element.
+ /// </summary>
[JsonProperty(Order = -1), DataMember(Order = 1, EmitDefaultValue = false, IsRequired = false, Name = "identification")]
Identifier Identification { get; }
+
+ /// <summary>
+ /// Administrative information of an identifiable element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "administration")]
AdministrativeInformation Administration { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IReferable.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IReferable.cs
index 5071722..e46e886 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IReferable.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/IReferable.cs
@@ -15,15 +15,33 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Identification
{
+ /// <summary>
+ /// An element that is referable by its idShort. This id is not globally unique. This id is unique within the name space of the element.
+ /// </summary>
public interface IReferable
{
+ /// <summary>
+ /// Identifying string of the element within its name space.
+ /// </summary>
[JsonProperty(Order = -2), DataMember(Order = 0, EmitDefaultValue = false, IsRequired = false, Name = "idShort")]
string IdShort { get; }
+
+ /// <summary>
+ /// The category is a value that gives further meta information w.r.t. to the class of the element. It affects the expected existence of attributes and the applicability of constraints.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "category")]
string Category { get; }
+
+ /// <summary>
+ /// Description or comments on the element. The description can be provided in several languages.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "description")]
LangStringSet Description { get; }
+
+ /// <summary>
+ /// Reference to the next referable parent element of the element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "parent")]
- IReference Parent { get; }
+ IReference Parent { get; }
}
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/Identifier.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/Identifier.cs
index 1246e16..0d54fbd 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/Identifier.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Identification/Identifier.cs
@@ -15,14 +15,23 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Identification
{
+ /// <summary>
+ /// Used to uniquely identify an entity by using an identifier.
+ /// </summary>
[DataContract]
public class Identifier
{
+ /// <summary>
+ /// Identifier of the element. Its type is defined in idType.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = true, Name = "id")]
[JsonProperty(Required = Required.Always, DefaultValueHandling = DefaultValueHandling.Include)]
[XmlText]
public string Id { get; set; }
+ /// <summary>
+ /// Type of the Identifierr, e.g. IRI, IRDI etc. The supported Identifier types are defined in the enumeration IdentifierType.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = true, Name = "idType")]
[JsonProperty(Required = Required.Always, DefaultValueHandling = DefaultValueHandling.Include)]
[XmlAttribute("idType")]
@@ -47,7 +56,7 @@
public string ElementId { get; internal set; }
public string InstanceNumber { get; internal set; }
- public UniformResourceIdentifier(string organisation, string subUnit, string domainId, string version, string revision, string elementId, string instanceNumber)
+ public UniformResourceIdentifier(string organisation, string subUnit, string domainId, string version, string revision, string elementId, string instanceNumber)
: base(ToUrn(organisation, subUnit, domainId, version, revision, elementId, instanceNumber), KeyType.IRI)
{
Organisation = organisation;
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IKey.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IKey.cs
index c3d74d1..90596ea 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IKey.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IKey.cs
@@ -12,14 +12,35 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.References
{
+ /// <summary>
+ /// A key is a reference to an element by its id.
+ /// </summary>
public interface IKey
{
+ /// <summary>
+ /// Denote which kind of entity is referenced. In case type = GlobalReference then the element is a global unique id.
+ /// In all other cases the key references a model element of the same or of another AAS.The name of the model element is explicitly listed.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "type")]
KeyElements Type { get; }
+
+ /// <summary>
+ /// Type of the key value.In case of idType = idShort local shall be true.
+ /// In case type=GlobalReference idType shall not be IdShort.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "idType")]
KeyType IdType { get; }
+
+ /// <summary>
+ /// The key value, for example an IRDI if the idType=IRDI.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
string Value { get; }
+
+ /// <summary>
+ /// Denotes if the key references a model element of the same AAS (=true) or not (=false).
+ /// In case of local = false the key may reference a model element of another AAS or an entity outside any AAS that has a global unique id.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "local")]
bool Local { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IReference.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IReference.cs
index 23ec048..76a6cbd 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IReference.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/References/IReference.cs
@@ -14,13 +14,21 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.References
{
+ /// <summary>
+ /// Reference to either a model element of the same or another AAs or to an external entity.
+ /// A reference is an ordered list of keys, each key referencing an element.
+ /// The complete list of keys may for example be concatenated to a path that then gives unique access to an element or entity.
+ /// </summary>
public interface IReference
{
[IgnoreDataMember]
IKey First { get; }
+ /// <summary>
+ /// Unique reference in its name space.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "keys")]
- List<IKey> Keys { get;}
+ List<IKey> Keys { get; }
}
public interface IReference<out T> : IReference where T : IReferable
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDescription.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDescription.cs
index 7863011..3395dc3 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDescription.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDescription.cs
@@ -16,8 +16,15 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Semantics
{
+ /// <summary>
+ /// The semantics of a property or other elements that may have a semantic description is defined by a concept description.
+ /// The description of the concept should follow a standardized schema (realized as data specification template).
+ /// </summary>
public interface IConceptDescription : IIdentifiable, IHasDataSpecification, IModelElement
{
+ /// <summary>
+ /// Global reference to an external definition the concept is compatible to or was derived from.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "isCaseOf")]
IEnumerable<IReference> IsCaseOf { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDictionary.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDictionary.cs
index 8df9ae4..9f174e3 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDictionary.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IConceptDictionary.cs
@@ -15,8 +15,15 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Semantics
{
+ /// <summary>
+ /// A dictionary contains elements that can be reused. The concept dictionary contains concept descriptions.
+ /// Typically a concept description dictionary of an AAS contains only concept descriptions of elements used within submodels of the AAS.
+ /// </summary>
public interface IConceptDictionary : IReferable, IModelElement
{
+ /// <summary>
+ /// Concept description defines a concept.
+ /// </summary>
List<IReference<IConceptDescription>> ConceptDescriptions { get; }
}
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasDataSpecification.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasDataSpecification.cs
index 8cc1b2f..349cc88 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasDataSpecification.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasDataSpecification.cs
@@ -13,10 +13,18 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Semantics
{
+ /// <summary>
+ /// Element that can be extended by using data specification templates. A data specification template defines the additional attributes an element may or shall have.
+ /// The data specifications used are explicitly specified with their global id.
+ /// </summary>
public interface IHasDataSpecification
{
[IgnoreDataMember]
IConceptDescription ConceptDescription { get; }
+
+ /// <summary>
+ /// Global reference to the data specification template used by the element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "embeddedDataSpecifications")]
IEnumerable<IEmbeddedDataSpecification> EmbeddedDataSpecifications { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasSemantics.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasSemantics.cs
index 2b9b146..571ba2b 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasSemantics.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Semantics/IHasSemantics.cs
@@ -13,8 +13,15 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Semantics
{
+ /// <summary>
+ /// Element that can have a semantic definition.
+ /// </summary>
public interface IHasSemantics
{
+ /// <summary>
+ /// Identifier of the semantic definition of the element. It is called semantic id of the element.
+ /// The semantic id may either reference an external global id or it may reference a referable model element of kind = Template that defines the semantics of the element.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "semanticId")]
IReference SemanticId { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Views/IView.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Views/IView.cs
index 3a72d65..5bf414e 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Views/IView.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Core/AssetAdministrationShell/Views/IView.cs
@@ -17,8 +17,14 @@
namespace BaSyx.Models.Core.AssetAdministrationShell.Views
{
+ /// <summary>
+ /// A view is a collection of referable elements w.r.t. to a specific viewpoint of one or more stakeholders.
+ /// </summary>
public interface IView : IHasSemantics, IReferable, IModelElement
{
+ /// <summary>
+ /// Referable elements that are contained in the view.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "containedElements")]
IEnumerable<IReference> ContainedElements { get; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Extensions/Semantics/DataSpecifications/DataSpecificationIEC61360.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Extensions/Semantics/DataSpecifications/DataSpecificationIEC61360.cs
index 9601f2a..1aa294c 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models/Extensions/Semantics/DataSpecifications/DataSpecificationIEC61360.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Extensions/Semantics/DataSpecifications/DataSpecificationIEC61360.cs
@@ -14,7 +14,6 @@
using System.Runtime.Serialization;
using BaSyx.Models.Core.AssetAdministrationShell.Semantics;
using BaSyx.Models.Core.Common;
-using System.Xml.Serialization;
namespace BaSyx.Models.Extensions.Semantics.DataSpecifications
{
@@ -35,7 +34,7 @@
[DataContract]
public class DataSpecificationIEC61360Content : IDataSpecificationContent
{
- [DataMember(EmitDefaultValue = false, IsRequired = false, Name ="dataType")]
+ [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "dataType")]
public DataTypeIEC61360 DataType { get; set; }
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "definition")]
public LangStringSet Definition { get; set; }
@@ -88,7 +87,7 @@
[EnumMember(Value = "STRING")]
STRING,
[EnumMember(Value = "STRING_TRANSLATABLE")]
- STRING_TRANSLATABLE,
+ STRING_TRANSLATABLE,
[EnumMember(Value = "INTEGER")]
INTEGER,
[EnumMember(Value = "INTEGER_MEASURE")]
@@ -115,11 +114,21 @@
TIME_STAMP
}
+ /// <summary>
+ /// A value reference pair within a value list. Each value has a global unique id defining its semantic.
+ /// </summary>
[DataContract]
public class ValueReferencePair
{
+ /// <summary>
+ /// the value of the referenced concept definition of the value in valueId.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
public object Value { get; set; }
+
+ /// <summary>
+ /// Global unique id of the value.
+ /// </summary>
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
public IReference ValueId { get; set; }
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Utils/Client/Http/SimpleHttpClient.cs b/sdks/dotnet/basyx-core/BaSyx.Utils/Client/Http/SimpleHttpClient.cs
index d52d1a9..dc204ed 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Utils/Client/Http/SimpleHttpClient.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Utils/Client/Http/SimpleHttpClient.cs
@@ -80,6 +80,19 @@
}
}
+ protected virtual async Task<IResult<HttpResponseMessage>> SendRequestAsync(HttpRequestMessage message)
+ {
+ try
+ {
+ using(HttpResponseMessage response = await HttpClient.SendAsync(message).ConfigureAwait(false))
+ return new Result<HttpResponseMessage>(true, response);
+ }
+ catch (Exception e)
+ {
+ return new Result<HttpResponseMessage>(e);
+ }
+ }
+
protected virtual HttpRequestMessage CreateRequest(Uri uri, HttpMethod method)
{
return new HttpRequestMessage(method, uri);
@@ -128,7 +141,7 @@
}
else
{
- messageList.Add(new Message(MessageType.Error, response.ReasonPhrase + "| " + responseString, ((int)response.StatusCode).ToString()));
+ messageList.Add(new Message(MessageType.Error, response.ReasonPhrase + " | " + responseString, ((int)response.StatusCode).ToString()));
return new Result(false, messageList);
}
}
@@ -162,7 +175,7 @@
}
else
{
- messageList.Add(new Message(MessageType.Error, response.ReasonPhrase + "| " + responseString, ((int)response.StatusCode).ToString()));
+ messageList.Add(new Message(MessageType.Error, response.ReasonPhrase + " | " + responseString, ((int)response.StatusCode).ToString()));
return new Result<T>(false, messageList);
}
}
diff --git a/sdks/dotnet/basyx-core/BaSyx.Utils/Network/NetworkUtils.cs b/sdks/dotnet/basyx-core/BaSyx.Utils/Network/NetworkUtils.cs
index 8d16d84..1893cd4 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Utils/Network/NetworkUtils.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Utils/Network/NetworkUtils.cs
@@ -126,7 +126,7 @@
}
else
{
- logger.Warn($"Pinging {hostNameOrAddress} PingReply-Status: " + reply.Status.ToString());
+ logger.Warn($"Pinging {hostNameOrAddress} PingReply-Status: " + Enum.GetName(typeof(IPStatus), reply.Status));
return false;
}
}
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
index 5c6e143..5493b71 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
index a088925..48a7e28 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
index d2b3a47..44cf932 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
index 6b9b761..2c65f74 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
index a6eaa01..20e0d93 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
index 8b42968..1da83f7 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
index b1d6f5c..33b4ec0 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
index bd68e96..5caa60f 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg
new file mode 100644
index 0000000..b40fe6b
--- /dev/null
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg
new file mode 100644
index 0000000..b27d3bd
--- /dev/null
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
index a6c1de9..391af32 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
index eaf817d..3770f1a 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
index 30d7e12..0269813 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
index 56053f3..e17af5d 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
index 2f45bdd..c20a50b 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
index 088edb9..8ea97bf 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
index dc6c791..32a7d5c 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
index d44defc..6192731 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
index b6460fb..ac0709e 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
index 988b706..b0778dd 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
index 2d8dbca..2771be4 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
index ab68fc3..7457212 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
index 2937075..19ffd02 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
index a41813e..dd953bf 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
index 981421f..0e0ad3c 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
index e90962b..9d52c88 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.nupkg
index ecb4f01..eb2fbd2 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.symbols.nupkg
index 82635b7..d7a8209 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.ServiceProvider.Distributed.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
index 7fcd3d7..29e401a 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
index 8441a8f..48dd300 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
Binary files differ