QOpcUa Namespace

The QOpcUa namespace contains miscellaneous identifiers used throughout the Qt OpcUa library. More...

Header: #include <QOpcUa>

Classes

Types

enum AxisScale { Linear, Log, Ln }
enum ErrorCategory { NoError, NodeError, AttributeError, PermissionError, ..., UnspecifiedError }
enum NodeAttribute { None, NodeId, NodeClass, BrowseName, ..., UserExecutable }
flags NodeAttributes
enum NodeClass { Undefined, Object, Variable, Method, ..., View }
flags NodeClasses
enum ReferenceTypeId { Unspecified, References, NonHierarchicalReferences, HierarchicalReferences, ..., HasCondition }
typedef TypedVariant
enum Types { Boolean, Int32, UInt32, Double, ..., Undefined }
enum UaStatusCode { Good, BadUnexpectedError, BadInternalError, BadOutOfMemory, ..., BadMaxConnectionsReached }

Functions

QOpcUa::ErrorCategory errorCategory(QOpcUa::UaStatusCode statusCode)
bool isSuccessStatus(QOpcUa::UaStatusCode statusCode)
uint qHash(const QOpcUa::NodeAttribute &attr)

Detailed Description

The QOpcUa namespace contains miscellaneous identifiers used throughout the Qt OpcUa library.

Type Documentation

enum QOpcUa::AxisScale

The AxisScale enum as defined by OPC-UA part 8, 5.6.7.

ConstantValue
QOpcUa::Linear0
QOpcUa::Log1
QOpcUa::Ln2

enum QOpcUa::ErrorCategory

This enum contains simplified categories for OPC UA errors.

ConstantValueDescription
QOpcUa::NoError0The operation has been successful.
QOpcUa::NodeError1There is a problem with the node, e. g. it does not exist.
QOpcUa::AttributeError2The attributes to operate on where invalid.
QOpcUa::PermissionError3The user did not have the permission to perform the operation.
QOpcUa::ArgumentError4The arguments supplied by the user were invalid or incomplete.
QOpcUa::TypeError5There has been a type mismatch for a write operation.
QOpcUa::ConnectionError6Communication with the server did not work as expected.
QOpcUa::UnspecifiedError7Any error that is not categorized. The detailed status code must be checked.

enum QOpcUa::NodeAttribute
flags QOpcUa::NodeAttributes

This enum contains the 22 node attributes defined in OPC-UA part 4, 5.

ConstantValueDescription
QOpcUa::None0No node attribute.
QOpcUa::NodeId( 1<<0 )Mandatory for all nodes. Contains the node's id in the OPC UA address space.
QOpcUa::NodeClass( 1<<1 )Mandatory for all nodes. Contains the node id describing the node class of the node.
QOpcUa::BrowseName( 1<<2 )Mandatory for all nodes. Contains a non-localized human readable name of the node.
QOpcUa::DisplayName( 1<<3 )Mandatory for all nodes. Contains a localized human readable name for display purposes.
QOpcUa::Description( 1<<4 )Contains a localized human readable description of the node.
QOpcUa::WriteMask( 1<<5 )Contains a bit mask. Each bit corresponds to a writable attribute (OPC-UA part 3, Table 3).
QOpcUa::UserWriteMask( 1<<6 )Same as WriteMask but for the current user.
QOpcUa::IsAbstract( 1<<7 )True if the node is an abstract type which means that no nodes of this type shall exist.
QOpcUa::Symmetric( 1<<8 )True if a reference's meaning is the same seen from both ends.
QOpcUa::InverseName( 1<<9 )The localized inverse name of a reference (for example "HasSubtype" has the InverseName "SubtypeOf").
QOpcUa::ContainsNoLoops( 1<<10 )True if there is no way to get back to a node following forward references in the current view.
QOpcUa::EventNotifier( 1<<11 )Contains a bit mask used to indicate if subscribing to events and access to historic events is supported (OPC-UA part 3, Table 5).
QOpcUa::Value( 1<<12 )The value of a Variable node.
QOpcUa::DataType( 1<<13 )The NodeId of the Value attribute's data type (for example "ns=0;i=13" for DateTime, see https://opcfoundation.org/UA/schemas/1.03/NodeIds.csv).
QOpcUa::ValueRank( 1<<14 )Contains information about the structure of the Value attribute (scalar/array) (OPC-UA part 3, Table 8).
QOpcUa::ArrayDimensions( 1<<15 )An array containing the length for each dimension of a multi-dimensional array.
QOpcUa::AccessLevel( 1<<16 )Contains a bit mask. Each bit corresponds to an access capability (OPC-UA part 3, Table 8).
QOpcUa::UserAccessLevel( 1<<17 )Same as AccessLevel, but for the current user.
QOpcUa::MinimumSamplingInterval( 1<<18 )Contains the shortest possible interval in which the server is able to sample the value.
QOpcUa::Historizing( 1<<19 )True if historical data is collected.
QOpcUa::Executable( 1<<20 )True if the node is currently executable. Only relevant for Method nodes.
QOpcUa::UserExecutable( 1<<21 )Same as Executable, but for the current user.

The NodeAttributes type is a typedef for QFlags<NodeAttribute>. It stores an OR combination of NodeAttribute values.

enum QOpcUa::NodeClass
flags QOpcUa::NodeClasses

This enum specifies the class a node belongs to. OPC-UA specifies a fixed set of eight different classes.

ConstantValueDescription
QOpcUa::Undefined0The node class is not known. This is the case before the NodeClass attribute has been read on the server.
QOpcUa::Object1An Object node.
QOpcUa::Variable2A Variable node.
QOpcUa::Method4A Method node.
QOpcUa::ObjectType8An ObjectType node.
QOpcUa::VariableType16A VariableType node.
QOpcUa::ReferenceType32A ReferenceType node.
QOpcUa::DataType64A DataType node.
QOpcUa::View128A View node.

The NodeClasses type is a typedef for QFlags<NodeClass>. It stores an OR combination of NodeClass values.

enum QOpcUa::ReferenceTypeId

This enum contains the reference types specified in OPC-UA part 3, 7. They are used to filter for a certain reference type in QOpcUaNode::browseChildren and for the reference type information in QOpcUaReferenceDescription.

ConstantValueDescription
QOpcUa::Unspecified0Not a valid reference type.
QOpcUa::References31The abstract base type for all references.
QOpcUa::NonHierarchicalReferences32The abstract base type for all non-hierarchical references.
QOpcUa::HierarchicalReferences33The abstract base type for all hierarchical references.
QOpcUa::HasChild34The abstract base type for all non-looping hierarchical references.
QOpcUa::Organizes35The type for hierarchical references that are used to organize nodes.
QOpcUa::HasEventSource36The type for non-looping hierarchical references that are used to organize event sources.
QOpcUa::HasModellingRule37The type for references from instance declarations to modelling rule nodes.
QOpcUa::HasEncoding38The type for references from data type nodes to to data type encoding nodes.
QOpcUa::HasDescription39The type for references from data type encoding nodes to data type description nodes.
QOpcUa::HasTypeDefinition40The type for references from a instance node to its type definition node.
QOpcUa::GeneratesEvent41The type for references from a node to an event type that is raised by node.
QOpcUa::Aggregates44The type for non-looping hierarchical references that are used to aggregate nodes into complex types.
QOpcUa::HasSubtype45The type for non-looping hierarchical references that are used to define sub types.
QOpcUa::HasProperty46The type for non-looping hierarchical reference from a node to its property.
QOpcUa::HasComponent47The type for non-looping hierarchical reference from a node to its component.
QOpcUa::HasNotifier48The type for non-looping hierarchical references that are used to indicate how events propagate from node to node.
QOpcUa::HasOrderedComponent49The type for non-looping hierarchical reference from a node to its component when the order of references matters.
QOpcUa::FromState51The type for a reference to the state before a transition.
QOpcUa::ToState52The type for a reference to the state after a transition.
QOpcUa::HasCause53The type for a reference to a method that can cause a transition to occur.
QOpcUa::HasEffect54The type for a reference to an event that may be raised when a transition occurs.
QOpcUa::HasHistoricalConfiguration56The type for a reference to the historical configuration for a data variable.
QOpcUa::HasSubStateMachine117The type for a reference to a substate for a state.
QOpcUa::AlwaysGeneratesEvent3065The type for references from a node to an event type that is always raised by node.
QOpcUa::HasTrueSubState9004The type for references from a TRUE super state node to a subordinate state node.
QOpcUa::HasFalseSubState9005The type for references from a FALSE super state node to a subordinate state node.
QOpcUa::HasCondition9006The type for references from a ConditionSource node to a Condition.

typedef QOpcUa::TypedVariant

This is QPair<QVariant, QOpcUa::Types>.

enum QOpcUa::Types

Enumerates the types supported by Qt OpcUa.

ConstantValueDescription
QOpcUa::Boolean0 
QOpcUa::Int321 
QOpcUa::UInt322 
QOpcUa::Double3 
QOpcUa::Float4 
QOpcUa::String5 
QOpcUa::LocalizedText6 
QOpcUa::DateTime7 
QOpcUa::UInt168 
QOpcUa::Int169 
QOpcUa::UInt6410 
QOpcUa::Int6411 
QOpcUa::Byte12 
QOpcUa::SByte13 
QOpcUa::ByteString14 
QOpcUa::XmlElement15Warning: Currently not supported by the FreeOPCUA backend
QOpcUa::NodeId16Warning: Currently not supported by the FreeOPCUA backend
QOpcUa::Guid17 
QOpcUa::QualifiedName18A name qualified by an OPC UA namespace index.
QOpcUa::StatusCode19 
QOpcUa::ExtensionObject20A data structure which contains a serialized object.
QOpcUa::Range21A range composed from the two double values low and high.
QOpcUa::EUInformation22The unit of measurement for an analog value.
QOpcUa::ComplexNumber23The OPC UA ComplexNumber type.
QOpcUa::DoubleComplexNumber24The OPC UA DoubleComplexNumber type.
QOpcUa::AxisInformation25Information about an axis.
QOpcUa::XV26A float value with a double precision position on an axis.
QOpcUa::Undefined0xFFFFFFFF 

enum QOpcUa::UaStatusCode

Enumerates all status codes from https://opcfoundation.org/UA/schemas/1.03/Opc.Ua.StatusCodes.csv

ConstantValue
QOpcUa::Good0
QOpcUa::BadUnexpectedError0x80010000
QOpcUa::BadInternalError0x80020000
QOpcUa::BadOutOfMemory0x80030000
QOpcUa::BadResourceUnavailable0x80040000
QOpcUa::BadCommunicationError0x80050000
QOpcUa::BadEncodingError0x80060000
QOpcUa::BadDecodingError0x80070000
QOpcUa::BadEncodingLimitsExceeded0x80080000
QOpcUa::BadRequestTooLarge0x80B80000
QOpcUa::BadResponseTooLarge0x80B90000
QOpcUa::BadUnknownResponse0x80090000
QOpcUa::BadTimeout0x800A0000
QOpcUa::BadServiceUnsupported0x800B0000
QOpcUa::BadShutdown0x800C0000
QOpcUa::BadServerNotConnected0x800D0000
QOpcUa::BadServerHalted0x800E0000
QOpcUa::BadNothingToDo0x800F0000
QOpcUa::BadTooManyOperations0x80100000
QOpcUa::BadTooManyMonitoredItems0x80DB0000
QOpcUa::BadDataTypeIdUnknown0x80110000
QOpcUa::BadCertificateInvalid0x80120000
QOpcUa::BadSecurityChecksFailed0x80130000
QOpcUa::BadCertificateTimeInvalid0x80140000
QOpcUa::BadCertificateIssuerTimeInvalid0x80150000
QOpcUa::BadCertificateHostNameInvalid0x80160000
QOpcUa::BadCertificateUriInvalid0x80170000
QOpcUa::BadCertificateUseNotAllowed0x80180000
QOpcUa::BadCertificateIssuerUseNotAllowed0x80190000
QOpcUa::BadCertificateUntrusted0x801A0000
QOpcUa::BadCertificateRevocationUnknown0x801B0000
QOpcUa::BadCertificateIssuerRevocationUnknown0x801C0000
QOpcUa::BadCertificateRevoked0x801D0000
QOpcUa::BadCertificateIssuerRevoked0x801E0000
QOpcUa::BadCertificateChainIncomplete0x810D0000
QOpcUa::BadUserAccessDenied0x801F0000
QOpcUa::BadIdentityTokenInvalid0x80200000
QOpcUa::BadIdentityTokenRejected0x80210000
QOpcUa::BadSecureChannelIdInvalid0x80220000
QOpcUa::BadInvalidTimestamp0x80230000
QOpcUa::BadNonceInvalid0x80240000
QOpcUa::BadSessionIdInvalid0x80250000
QOpcUa::BadSessionClosed0x80260000
QOpcUa::BadSessionNotActivated0x80270000
QOpcUa::BadSubscriptionIdInvalid0x80280000
QOpcUa::BadRequestHeaderInvalid0x802A0000
QOpcUa::BadTimestampsToReturnInvalid0x802B0000
QOpcUa::BadRequestCancelledByClient0x802C0000
QOpcUa::BadTooManyArguments0x80E50000
QOpcUa::GoodSubscriptionTransferred0x002D0000
QOpcUa::GoodCompletesAsynchronously0x002E0000
QOpcUa::GoodOverload0x002F0000
QOpcUa::GoodClamped0x00300000
QOpcUa::BadNoCommunication0x80310000
QOpcUa::BadWaitingForInitialData0x80320000
QOpcUa::BadNodeIdInvalid0x80330000
QOpcUa::BadNodeIdUnknown0x80340000
QOpcUa::BadAttributeIdInvalid0x80350000
QOpcUa::BadIndexRangeInvalid0x80360000
QOpcUa::BadIndexRangeNoData0x80370000
QOpcUa::BadDataEncodingInvalid0x80380000
QOpcUa::BadDataEncodingUnsupported0x80390000
QOpcUa::BadNotReadable0x803A0000
QOpcUa::BadNotWritable0x803B0000
QOpcUa::BadOutOfRange0x803C0000
QOpcUa::BadNotSupported0x803D0000
QOpcUa::BadNotFound0x803E0000
QOpcUa::BadObjectDeleted0x803F0000
QOpcUa::BadNotImplemented0x80400000
QOpcUa::BadMonitoringModeInvalid0x80410000
QOpcUa::BadMonitoredItemIdInvalid0x80420000
QOpcUa::BadMonitoredItemFilterInvalid0x80430000
QOpcUa::BadMonitoredItemFilterUnsupported0x80440000
QOpcUa::BadFilterNotAllowed0x80450000
QOpcUa::BadStructureMissing0x80460000
QOpcUa::BadEventFilterInvalid0x80470000
QOpcUa::BadContentFilterInvalid0x80480000
QOpcUa::BadFilterOperatorInvalid0x80C10000
QOpcUa::BadFilterOperatorUnsupported0x80C20000
QOpcUa::BadFilterOperandCountMismatch0x80C30000
QOpcUa::BadFilterOperandInvalid0x80490000
QOpcUa::BadFilterElementInvalid0x80C40000
QOpcUa::BadFilterLiteralInvalid0x80C50000
QOpcUa::BadContinuationPointInvalid0x804A0000
QOpcUa::BadNoContinuationPoints0x804B0000
QOpcUa::BadReferenceTypeIdInvalid0x804C0000
QOpcUa::BadBrowseDirectionInvalid0x804D0000
QOpcUa::BadNodeNotInView0x804E0000
QOpcUa::BadServerUriInvalid0x804F0000
QOpcUa::BadServerNameMissing0x80500000
QOpcUa::BadDiscoveryUrlMissing0x80510000
QOpcUa::BadSempahoreFileMissing0x80520000
QOpcUa::BadRequestTypeInvalid0x80530000
QOpcUa::BadSecurityModeRejected0x80540000
QOpcUa::BadSecurityPolicyRejected0x80550000
QOpcUa::BadTooManySessions0x80560000
QOpcUa::BadUserSignatureInvalid0x80570000
QOpcUa::BadApplicationSignatureInvalid0x80580000
QOpcUa::BadNoValidCertificates0x80590000
QOpcUa::BadIdentityChangeNotSupported0x80C60000
QOpcUa::BadRequestCancelledByRequest0x805A0000
QOpcUa::BadParentNodeIdInvalid0x805B0000
QOpcUa::BadReferenceNotAllowed0x805C0000
QOpcUa::BadNodeIdRejected0x805D0000
QOpcUa::BadNodeIdExists0x805E0000
QOpcUa::BadNodeClassInvalid0x805F0000
QOpcUa::BadBrowseNameInvalid0x80600000
QOpcUa::BadBrowseNameDuplicated0x80610000
QOpcUa::BadNodeAttributesInvalid0x80620000
QOpcUa::BadTypeDefinitionInvalid0x80630000
QOpcUa::BadSourceNodeIdInvalid0x80640000
QOpcUa::BadTargetNodeIdInvalid0x80650000
QOpcUa::BadDuplicateReferenceNotAllowed0x80660000
QOpcUa::BadInvalidSelfReference0x80670000
QOpcUa::BadReferenceLocalOnly0x80680000
QOpcUa::BadNoDeleteRights0x80690000
QOpcUa::UncertainReferenceNotDeleted0x40BC0000
QOpcUa::BadServerIndexInvalid0x806A0000
QOpcUa::BadViewIdUnknown0x806B0000
QOpcUa::BadViewTimestampInvalid0x80C90000
QOpcUa::BadViewParameterMismatch0x80CA0000
QOpcUa::BadViewVersionInvalid0x80CB0000
QOpcUa::UncertainNotAllNodesAvailable0x40C00000
QOpcUa::GoodResultsMayBeIncomplete0x00BA0000
QOpcUa::BadNotTypeDefinition0x80C80000
QOpcUa::UncertainReferenceOutOfServer0x406C0000
QOpcUa::BadTooManyMatches0x806D0000
QOpcUa::BadQueryTooComplex0x806E0000
QOpcUa::BadNoMatch0x806F0000
QOpcUa::BadMaxAgeInvalid0x80700000
QOpcUa::BadSecurityModeInsufficient0x80E60000
QOpcUa::BadHistoryOperationInvalid0x80710000
QOpcUa::BadHistoryOperationUnsupported0x80720000
QOpcUa::BadInvalidTimestampArgument0x80BD0000
QOpcUa::BadWriteNotSupported0x80730000
QOpcUa::BadTypeMismatch0x80740000
QOpcUa::BadMethodInvalid0x80750000
QOpcUa::BadArgumentsMissing0x80760000
QOpcUa::BadTooManySubscriptions0x80770000
QOpcUa::BadTooManyPublishRequests0x80780000
QOpcUa::BadNoSubscription0x80790000
QOpcUa::BadSequenceNumberUnknown0x807A0000
QOpcUa::BadMessageNotAvailable0x807B0000
QOpcUa::BadInsufficientClientProfile0x807C0000
QOpcUa::BadStateNotActive0x80BF0000
QOpcUa::BadTcpServerTooBusy0x807D0000
QOpcUa::BadTcpMessageTypeInvalid0x807E0000
QOpcUa::BadTcpSecureChannelUnknown0x807F0000
QOpcUa::BadTcpMessageTooLarge0x80800000
QOpcUa::BadTcpNotEnoughResources0x80810000
QOpcUa::BadTcpInternalError0x80820000
QOpcUa::BadTcpEndpointUrlInvalid0x80830000
QOpcUa::BadRequestInterrupted0x80840000
QOpcUa::BadRequestTimeout0x80850000
QOpcUa::BadSecureChannelClosed0x80860000
QOpcUa::BadSecureChannelTokenUnknown0x80870000
QOpcUa::BadSequenceNumberInvalid0x80880000
QOpcUa::BadProtocolVersionUnsupported0x80BE0000
QOpcUa::BadConfigurationError0x80890000
QOpcUa::BadNotConnected0x808A0000
QOpcUa::BadDeviceFailure0x808B0000
QOpcUa::BadSensorFailure0x808C0000
QOpcUa::BadOutOfService0x808D0000
QOpcUa::BadDeadbandFilterInvalid0x808E0000
QOpcUa::UncertainNoCommunicationLastUsableValue0x408F0000
QOpcUa::UncertainLastUsableValue0x40900000
QOpcUa::UncertainSubstituteValue0x40910000
QOpcUa::UncertainInitialValue0x40920000
QOpcUa::UncertainSensorNotAccurate0x40930000
QOpcUa::UncertainEngineeringUnitsExceeded0x40940000
QOpcUa::UncertainSubNormal0x40950000
QOpcUa::GoodLocalOverride0x00960000
QOpcUa::BadRefreshInProgress0x80970000
QOpcUa::BadConditionAlreadyDisabled0x80980000
QOpcUa::BadConditionAlreadyEnabled0x80CC0000
QOpcUa::BadConditionDisabled0x80990000
QOpcUa::BadEventIdUnknown0x809A0000
QOpcUa::BadEventNotAcknowledgeable0x80BB0000
QOpcUa::BadDialogNotActive0x80CD0000
QOpcUa::BadDialogResponseInvalid0x80CE0000
QOpcUa::BadConditionBranchAlreadyAcked0x80CF0000
QOpcUa::BadConditionBranchAlreadyConfirmed0x80D00000
QOpcUa::BadConditionAlreadyShelved0x80D10000
QOpcUa::BadConditionNotShelved0x80D20000
QOpcUa::BadShelvingTimeOutOfRange0x80D30000
QOpcUa::BadNoData0x809B0000
QOpcUa::BadBoundNotFound0x80D70000
QOpcUa::BadBoundNotSupported0x80D80000
QOpcUa::BadDataLost0x809D0000
QOpcUa::BadDataUnavailable0x809E0000
QOpcUa::BadEntryExists0x809F0000
QOpcUa::BadNoEntryExists0x80A00000
QOpcUa::BadTimestampNotSupported0x80A10000
QOpcUa::GoodEntryInserted0x00A20000
QOpcUa::GoodEntryReplaced0x00A30000
QOpcUa::UncertainDataSubNormal0x40A40000
QOpcUa::GoodNoData0x00A50000
QOpcUa::GoodMoreData0x00A60000
QOpcUa::BadAggregateListMismatch0x80D40000
QOpcUa::BadAggregateNotSupported0x80D50000
QOpcUa::BadAggregateInvalidInputs0x80D60000
QOpcUa::BadAggregateConfigurationRejected0x80DA0000
QOpcUa::GoodDataIgnored0x00D90000
QOpcUa::BadRequestNotAllowed0x80E40000
QOpcUa::GoodEdited0x00DC0000
QOpcUa::GoodPostActionFailed0x00DD0000
QOpcUa::UncertainDominantValueChanged0x40DE0000
QOpcUa::GoodDependentValueChanged0x00E00000
QOpcUa::BadDominantValueChanged0x80E10000
QOpcUa::UncertainDependentValueChanged0x40E20000
QOpcUa::BadDependentValueChanged0x80E30000
QOpcUa::GoodCommunicationEvent0x00A70000
QOpcUa::GoodShutdownEvent0x00A80000
QOpcUa::GoodCallAgain0x00A90000
QOpcUa::GoodNonCriticalTimeout0x00AA0000
QOpcUa::BadInvalidArgument0x80AB0000
QOpcUa::BadConnectionRejected0x80AC0000
QOpcUa::BadDisconnect0x80AD0000
QOpcUa::BadConnectionClosed0x80AE0000
QOpcUa::BadInvalidState0x80AF0000
QOpcUa::BadEndOfStream0x80B00000
QOpcUa::BadNoDataAvailable0x80B10000
QOpcUa::BadWaitingForResponse0x80B20000
QOpcUa::BadOperationAbandoned0x80B30000
QOpcUa::BadExpectedStreamToBlock0x80B40000
QOpcUa::BadWouldBlock0x80B50000
QOpcUa::BadSyntaxError0x80B60000
QOpcUa::BadMaxConnectionsReached0x80B70000

Function Documentation

QOpcUa::ErrorCategory QOpcUa::errorCategory(QOpcUa::UaStatusCode statusCode)

Converts statusCode to an ErrorCategory. ErrorCategory can be used in cases where the exact error is not important.

For error handling dependent on status codes, the full status code must be used instead. The meaning of the status codes for the different services is documented in OPC-UA part 4.

If statusCode has not been categorized, UnspecifiedError is returned. In this case, the user must check the full status code.

bool QOpcUa::isSuccessStatus(QOpcUa::UaStatusCode statusCode)

This method can be used to check if a call has successfully finished.

Returns true if statusCode's serverity field is Good.

uint QOpcUa::qHash(const QOpcUa::NodeAttribute &attr)

© 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.